【问题标题】:Bad Request Error 400 on IIS7 .NET 3.5IIS7 .NET 3.5 上的错误请求错误 400
【发布时间】:2011-04-02 09:54:03
【问题描述】:

我在 IIS7 上遇到了错误的请求错误 400。我在 URL 字符串中编码了特殊字符。我的 URL 看起来像这样(不喜欢 %26):

http://www.myjobs.com/a/q-Barnes+%26+Noble

如果我在 .NET 4.0 上运行,这将是一个简单的解决方法,但我在 rackspace 云上并且只能在 IIS7 .NET 3.5 上运行。

如果我在 IIS7 .NET 4.0 上,这就是我将在 web.config 中使用的内容:

requestPathInvalidCharacters=""

在 IIS7 和 .NET 3.5 上运行时还有哪些其他选项?

【问题讨论】:

  • 我在SO question 中遇到了类似的问题。基本上在我的情况下,我不得不求助于查询字符串 - http://www.myjobs.com/a?q=q-Barnes+%26+Noble

标签: c# asp.net-mvc .net-3.5 iis-7


【解决方案1】:

您可以提出此类请求的唯一方法是更改​​注册表。 对于以 32 位模式运行的 IIS,添加以下 DWORD 键并将其值设置为 1 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ASP.NET\VerificationCompatibility

如果您在 64 位模式下运行 IIS,请添加以下 DWORD 键并将其值设置为 1 HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\ASP.NET\VerificationCompatibility

不确定您的托管环境是否可以让您访问这些内容。我在 IIS 7.5 上对其进行了测试,并且能够使用如下编码的 URL 向 /Barnes&Noble/default.aspx 发出请求:Response.Redirect(Server.UrlEncode("Barnes&Noble") + "/default.aspx");

【讨论】:

    【解决方案2】:

    为什么要在 URL 中编码特殊字符?

    为什么不将它们全部转换为仅包含字母数字字符和破折号的对 SEO 更友好的形式,并将该特殊形式存储在您的数据库中。或者,甚至更简单,在 URL 中包含 ID 并使用后半部分只是为了使其易于阅读和对 SEO 友好:

    例如www.myjobs.com/a/1234/q-Barnes-and-noble

    这种方法还意味着您可以稍后更改编码(可能添加一些新的特殊字符到 alpha 映射)并且没有任何 404。

    【讨论】:

      猜你喜欢
      • 2018-07-07
      • 1970-01-01
      • 1970-01-01
      • 2015-02-25
      • 1970-01-01
      • 1970-01-01
      • 2017-08-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多