3

我需要在ASP.NET中的URL中传递冒号,例如“http://mywebapp.com/Portal:Main/”。维基百科做了很多,冒号是根据RFC的有效URL字符。URL中的特殊字符(冒号)即使使用requestPathInvalidCharacters也不工作“”

我找到了这个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" 
/> 

但尽管如此,我总是得到一个错误400:错误的网关具有“特殊字符”像http://localhost:2021/1%3As.aspxhttp://localhost:2021/1:s.aspx

这些项目访问什么都defin时它使用.NET 4运行时。这里有什么问题?

回答

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" 
/>