2010-12-06 2 views
0

J'essaie le Facebook C# SDK (v4.0.2) et je rencontre une erreur 404 lorsque facebook tente de rediriger vers le gestionnaire de redirection pour le SDK. L'URL résultante est:Le serveur de développement ASP.NET n'accepte pas le point dans pathinfo

http://localhost:9152/facebookredirect.axd/elserdemo/Default.aspx?session={%22session_key%22%3A%222.GJsQK_BkApJNH8TncuFHpQ__.3600.1291665600-678938033%22%2C%22uid%22%3A%22678938033%22%2C%22expires%22%3A1291665600%2C%22secret%22%3A%22dnmnVip8JJ31rHUs2byKeQ__%22%2C%22base_domain%22%3A%22localhost%22%2C%22access_token%22%3A%22133477943366316|2.GJsQK_BkApJNH8TncuFHpQ__.3600.1291665600-678938033|xtjv95K4Lj_wg2-X3comNL4haG0%22%2C%22sig%22%3A%2241b1c3884488a9c9fa82b398c7fa80dc%22} 

J'ai l'ensemble de l'application facebook en mode iframe pour la toile et les paramètres des migrations nécessaires en place. J'ai également vérifié que l'URL de la toile pointe vers mon serveur de développement local. Cependant, lorsque le navigateur tente de charger l'URL ci-dessus, j'obtiens un 404 d'ASP.NET. Si le pathinfo ne contient pas de point, il fonctionne et redirige vers mon application, il semble donc que c'est la période dans "default.aspx" qui détraque, mais je ne sais pas pourquoi. Des pensées? Solutions de contournement?

EDIT:

Bien que ce soit un problème avec moi avec le SDK Facebook, ce n'est pas spécifique à cela. C'est apparemment un problème de serveur de développement ASP.NET. Par exemple, si je tente de charge:

http://localhost:9152/facebookredirect.axd/elserdemo/default.aspx

Je reçois un 404. Cependant, si je tente de charge:

http://localhost:9152/facebookredirect.axd/elserdemo/default

Il fonctionne, mais je finis à une écran facebook avec un 404 dans l'iframe (parce que la valeur par défaut n'est pas valide dans mon application).

EDIT # 2:

Ce n'est pas un problème avec les caractères non valides dans l'URL. Si c'était le cas, je recevrais un code d'erreur 400 (mauvaise demande). Au lieu de cela, je reçois 404, qui me dit que le serveur de dev essaye de charger un fichier qui n'existe pas, plutôt que de s'arrêter à l'extension .axd et de passer le reste comme Request.PathInfo comme il se doit. Je ne sais pas pourquoi c'est ce que je fais, alors c'est vraiment ce que je cherche ici.

Répondre

0

Votre application ne redirige pas vers la bonne adresse. Vous obtenez une version sérialisée d'un objet FacebookSession au lieu d'une chaîne de requête avec une requête signée.

Assurez-vous de définir les bonnes valeurs sur la page de configuration de l'application facebook.

+0

Cela peut être un problème que je vais devoir examiner, mais je suis assez sûr que ce n'est pas pertinent pour le problème actuel. J'ai édité mon post, s'il vous plaît vérifier. – Chris

0

Vous devez ajouter le gestionnaire de redirection à votre web.config pour que la redirection au travail, il suffit d'ajouter cette ligne à votre web.config

<system.webServer> 
    <handlers> 
     <add name="facebookredirect.axd" verb="*" path="facebookredirect.axd" 
      type="Facebook.Web.FacebookAppRedirectHttpHandler, Facebook.Web" /> 
    </handlers> 

0

Frapper reset sur les réponses précédentes .

Qu'est-ce, exactement, est dit le navigateur pour aller à l'adresse suivante: http://localhost:9152/facebookredirect.axd/elserdemo/default.aspx

Je demande parce que Facebook doit être configuré pour aller juste pour http://localhost:9152/ et vous avez indiqué dans la question que cela se produit lorsque facebook réoriente à votre site. Le nom du gestionnaire ne devrait pas être dans l'URL du tout ce qui me conduit à croire que vous avez mal configuré l'application au sein même de Facebook.

Les gestionnaires Web (comme les axd) sont exécutés automatiquement pour chaque demande entrante.S'il détecte qu'il doit faire quelque chose en fonction du flux de requêtes, alors il le fera.

0

J'ai eu cette même erreur - il s'avère que c'est lié au type MIME mappé par "l'extension" de l'URL. Dans votre cas, le serveur de développement ASP.NET recherche le type MIME ".12916656 ....", ou plutôt la dernière période à la fin de l'URL.

Si vous passez à IIS sur votre machine locale, vous pouvez définir le type mime par défaut sur application/octet-stream en utilisant le caractère générique (détails sur le lien ci-dessous). Cependant, il n'y a aucun moyen de le faire dans le serveur ASP.Net Development:

http://support.microsoft.com/kb/326965

L'erreur 404 et « Fichier non trouvé » exception semble être la façon dont le serveur gère mimetypes indéfinis ... tout à fait confuses.

Questions connexes