【问题标题】:ASP.NET MVC Exception?ASP.NET MVC 异常?
【发布时间】:2010-01-14 15:23:27
【问题描述】:

从今天开始,我在使用 ASP.NET MVC 的 IIS7.5 上遇到异常,但我不知道为什么。

在使用 System.Net.WebClient.DownloadString() 时发生

[WebException: 远程服务器返回错误:(500) Internal Server Error.]

如果我在浏览器中打开 URL。网站显示正常。

在 VS2008 中调试跟踪状态为:“200 OK”

它唯一能看到的是:

导致类型异常“System.PlatformNotSupportedException”的Response.Headers。System.Collections.Specialized.NameValueCollection {System.PlatformNotSupportedException}

请在 IIS 中使用集成管道模式。

两个网站都在启用了集成管道的同一 v2.0 .NET 应用程序池中运行。 从例如下载字符串google.com 等作品。只有当我调用 MVC 时它才会损坏。

MVC 中被调用的控制器如下所示:

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

它以前工作过。可能有人可以帮助获取更多详细信息以进行追踪 错误。

更新:

知道了。该死的。我检查了 ASP.NET MVC 中的 Subversion History 并检查了每一行。 在我的 BaseController 中,我最近添加了:

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

删除后。一切都恢复正常。但是为什么 System.Net.WebClient 在询问时会崩溃 用户代理?即使有 200 状态。我会对此进行一些调查。

【问题讨论】:

  • 听起来像是不兼容的问题。该网站是否针对任何其他 IIS 版本而开发?
  • 不。 vs2008, iis7.5, mvc2, net 3.5

标签: asp.net-mvc exception iis-7 integrated-pipeline-mode


【解决方案1】:

就我而言,这可以解决问题:

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

但 System.Net.WebClient 在 Webserver 执行 Request.UserAgent 时抛出异常,即使 HTTP 状态为 200 也是相当愚蠢的。

【讨论】:

  • Request.UserAgent 是 HTTP 请求标头中的一个字段。它通常由请求实体(浏览器、应用程序等)设置,但可以完全省略。由于您没有在 WebClient 请求上明确设置它,因此这些请求可能就是这种情况(并且您使用的浏览器会自动设置它)。在这种情况下,该属性是null 并且执行.ToString() 肯定会爆炸。
猜你喜欢
  • 2012-10-06
  • 2011-04-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多