2010-01-14 10 views
0

depuis aujourd'hui, je reçois une exception sur IIS7.5 avec ASP.NET MVC, mais je ne sais pas pourquoi.ASP.NET MVC Exception?

Il se produit lors de l'utilisation System.Net.WebClient.DownloadString()

[WebException: Le serveur distant a renvoyé une erreur:. (500) Erreur interne du serveur]

Si j'ouvre l'URL dans le navigateur. Le site se montre bien.

Dans VS2008 Debug Status Trace est la suivante: "200 OK"

La seule chose qu'il pouvait voir était:.

Response.Headers » de type Exception "System.PlatformNotSupportedException" causé System.Collections.Specialized .NameValueCollection {} System.PlatformNotSupportedException

S'il vous plaît utiliser le mode pipeline intégré dans IIS.

deux site exécuté dans le même v2.0 .NET avec le pool d'applications pipeline intégré activé. TéléchargerString par ex. google.com etc fonctionne. Seulement si j'appelle le MVC il corrompt.

Controller Appelé MVC ressemble à ceci:

public void online() 
    { 
     Response.Write(Date.Time.Now); 
     Response.End(); 
     return; 
    } 

Il a travaillé auparavant. Quelqu'un peut-il aider à obtenir plus de détails pour dépister l'erreur.

MISE À JOUR:

Got it. Bon sang. J'ai vérifié l'historique de Subversion dans ASP.NET MVC et vérifié chaque ligne. Dans mon BaseController, j'ai ajouté récemment:

string strUserAgent = Request.UserAgent.ToString().ToLower(); 

Après remove. Tout fonctionne à nouveau. Mais pourquoi System.Net.WebClient plante-t-il en demandant pour UserAgent? Même avec 200 Status. Je vais donner une petite enquête.

+0

Cela ressemble à un problème d'incompatibilité. Le site Web a-t-il été développé pour cibler toute autre version d'IIS? – James

+0

non. vs2008, iis7.5, mvc2, net 3.5 – csharpnoob

Répondre

0

Dans mon cas, cela ne l'affaire:

if (Request.UserAgent != null) 
{ 
    string strUserAgent = Request.UserAgent.ToString().ToLower(); 
} 

mais son tout à fait stuipid de System.Net.WebClient de lancer une exception quand Webserver fait Request.UserAgent même il y a état HTTP 200.

+0

'Request.UserAgent' est un champ dans l'en-tête de la requête HTTP. Il est généralement défini par l'entité demandeuse (navigateur, application, etc.), mais il peut être complètement omis. Puisque vous ne le définissez pas explicitement sur la requête 'WebClient', c'est probablement le cas pour ces requêtes (et le navigateur que vous utilisez le fait automatiquement). Dans un tel cas, cette propriété est 'null' et faire' .ToString() 'va certainement exploser. – patridge