url中的特殊字符给出"错误请求"或"路径中的非法字符"

ari*_*iel 0 javascript asp.net-mvc uri escaping url-routing

我正在使用javascript来实时请求服务器生成的图像.

该参数在url中传递并由MVC抓取,并在"id"参数中设置为控制器.像这样:

Public Function Index(ByVal id As String) As ActionResult
Run Code Online (Sandbox Code Playgroud)

如果我不使用任何特殊字符,如"?",这样可以正常工作 或引用.要发送我必须逃脱或编码此内容的人,但我该怎么做?

我试过javascript escape或者encodeURIComponent,但它或者给我"错误请求"或"路径中的非法字符"

一个示例网址http://localhost/Imagem/Index/Question%3F,对于"问题?"

这会返回"错误请求"

Dar*_*rov 5

您可能会发现此博客文章很有用.您将看到有解决方法,但使用风险自负.如果您使用的是.NET 4.0,请将其添加到您的web.config:

<system.web>
    <httpRuntime 
        requestValidationMode="2.0"
        requestPathInvalidCharacters="&lt;,&gt;,*,%,:,&amp;,\"
        relaxedUrlToFileSystemMapping="true"
    />
    ...
</system.web>

<system.webServer>
    <security>
        <requestFiltering allowDoubleEscaping="true" />
    </security>
    ...
</system.webServer>
Run Code Online (Sandbox Code Playgroud)

就个人而言,我建议你避免在这样的网址中使用特殊字符.您可以使用映射函数将它们转换为其他字符,或者仅在查询字符串参数中使用它们:http://localhost/Imagem/Index?id=Question%3F