URL(冒号)中的ASP.NET特殊字符即使使用requestPathInvalidCharacters =“”也不起作用

时间:2012-01-10 16:58:59

标签: asp.net visual-studio-2010 iis special-characters asp.net-4.0

我需要在ASP.NET中的URL中传递冒号,例如“http://mywebapp.com/Portal:Main/”。维基百科做了很多,根据RFC,冒号是有效的URL字符。

我找到了这个SO question,并通读this blog post,其中涵盖了ASP.NET中的无效字符过滤器。

使用VS2010 Ultimate并尝试使用新的ASP.NET WebForms和新的ASP.NET MVC 2项目,我总是将其添加到我的web.config中:

<httpRuntime requestPathInvalidCharacters="" />

以及

<httpRuntime requestValidationMode="2.0"
    requestPathInvalidCharacters=""
    relaxedUrlToFileSystemMapping="true"
/>

但是,当访问具有“{1}}或http://localhost:2021/1%3As.aspx

等”特殊字符“的任何内容时,我总是会收到错误400:错误网关

项目肯定是使用.NET 4运行时。这里出了什么问题?

1 个答案:

答案 0 :(得分:4)

我会在此期间发现自己回答这个问题:

您必须翻转注册表开关才能正常工作:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ASP.NET

DWord Value Name: VerificationCompatibility 
Value Data: 1

有关详细信息,请参阅according MS KB Article

对于单用户:在Windows系统上遵守注册表值。在非Windows系统上,您可以通过向web.config添加monoSettings部分来更改行为:

<monoSettings verificationCompatibility="1" />
<httpRuntime requestValidationMode="2.0"
    requestPathInvalidCharacters=""
    relaxedUrlToFileSystemMapping="true"
/>