【发布时间】:2014-11-28 14:35:25
【问题描述】:
我在 MVC 4 .NET 应用程序中有一个控制器,它从 URL 接收字符串作为参数。这来自重定向到 Route.config 中的控制器的 aspx 页面。
如果我在客户端发送这个参数的值:fwdgerhb+bhrth+ftrgbhrt
我在服务器上得到以下值:fwdgerhb bhrth ftrgbhrt
服务器将 URL 参数值解释为编码的 URL,并将 + 替换为 。但它没有经过 URL 编码。如果特殊字符的其他组合出现在参数值中,也会出现这种情况。
在 IIS 服务器中是否有配置参数来配置服务器不尝试对该值进行 URL 解码?
示例请求:
mypage.aspx?value=cat+dog (NOT ENCODED)
路由配置
static void RegisterRoutes(RouteCollection routes)
{
routes.MapRouteLowercase(
name: "MyRouter",
url: "mypage.aspx",
defaults: new { controller = "My", action = "DoLog" }
);
}
控制器:
public class MyController : Controller
{
[AllowAnonymous]
public ActionResult DoLog(string value)
{
//Here value has "cat dog"
}
}
【问题讨论】:
-
您的控制器是用 VB.Net 还是 C# 编写的?可以发一下代码吗?
-
是 C#。我贴出来了,不过我觉得没关系,不是代码问题,我要发送参数不编码,所以我只需要如何让服务器知道URL来不编码。
-
您的要求是什么?是否要取回编码的参数,例如:
fwdgerhb+bhrth+ftrgbhr在这种情况下,您为什么不自己UrlEncode 呢? -
因为我已经分发了旧代码而没有编码这个值,并且控制器必须与之兼容
-
@Dani 那么,假设这是您想要做的(您还没有澄清),当它碰到控制器时,是什么阻止您对其进行编码?
标签: c# url iis parameters url-encoding