我需要在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
项目肯定是使用.NET 4运行时。这里出了什么问题?
答案 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"
/>