C# Asp.Net MVC路由不接受&在路由中
我有一个默认的Asp.Net路由,如下所示:C# Asp.Net MVC路由不接受&在路由中,c#,asp.net,asp.net-mvc,asp.net-mvc-4,C#,Asp.net,Asp.net Mvc,Asp.net Mvc 4,我有一个默认的Asp.Net路由,如下所示: routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } ); 没什么特别的 我在H
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
没什么特别的
我在Home Controller中有一个超级简单的默认操作:
public ActionResult Index(string id)
{
ViewBag.Message = "Modify this template to jump-start your ASP.NET MVC application.";
return View();
}
我可以键入URL:
它工作得很好,但是当我输入
没有
我理解并必须编码,但当我输入时:
它仍然不起作用。我收到以下错误:
A potentially dangerous Request.Path value was detected from the client (&).
我知道在web.config中设置此选项:
<httpRuntime targetFramework="4.5" requestPathInvalidCharacters="" />
但我担心我这样做的时候会牺牲安全感
除此之外还有其他选择吗?Asp.Net中是否有任何设置
我知道在web.config中设置此选项:
不要这样做,您正在删除此请求验证规则提供的所有保护。如果要允许角色,请保留所有其他角色(&C):
<httpRuntime requestPathInvalidCharacters="<,>,*,%,:,\,?" />
但我担心我这样做的时候会牺牲安全感
通过这种方式,将允许在您的请求URL中使用。小心正确验证所有输入参数,并最终根据需要将其转义。请注意,它也应该在原始规则到位的情况下完成
你也可以加入其他角色,但我建议只有在需要的时候才加入。您还可以添加新的字符串:有时我将文本ID作为AJAX GET请求的参数,即使我确信我永远不会构建连接字符串的SQL命令……我通常会添加“和少数其他字符串”
除此之外还有其他选择吗?Asp.Net中是否有任何设置
是的,您可以回到.NET 2.0规则,但我认为没有理由这么做
[ValidateInput(false)] //write this
public ActionResult Index(string id)
{
ViewBag.Message = "Modify this template to jump-start your ASP.NET MVC application.";
return View();
}
<httpRuntime targetFramework="4.5" requestPathInvalidCharacters="" />
<pages validaeRequest="false" />
我知道在web.config中设置此选项:
不要这样做,您正在删除此请求验证规则提供的所有保护。如果要允许角色,请保留所有其他角色(&C):
<httpRuntime requestPathInvalidCharacters="<,>,*,%,:,\,?" />
但我担心我这样做的时候会牺牲安全感
通过这种方式,将允许在您的请求URL中使用。小心正确验证所有输入参数,并最终根据需要将其转义。请注意,它也应该在原始规则到位的情况下完成
你也可以加入其他角色,但我建议只有在需要的时候才加入。您还可以添加新的字符串:有时我将文本ID作为AJAX GET请求的参数,即使我确信我永远不会构建连接字符串的SQL命令……我通常会添加“和少数其他字符串”
除此之外还有其他选择吗?Asp.Net中是否有任何设置
是的,您可以回到.NET 2.0规则,但我认为没有理由这么做
[ValidateInput(false)] //write this
public ActionResult Index(string id)
{
ViewBag.Message = "Modify this template to jump-start your ASP.NET MVC application.";
return View();
}
<httpRuntime targetFramework="4.5" requestPathInvalidCharacters="" />
<pages validaeRequest="false" />
试试那第一行。也许这对你有用
试试那第一行。这可能对你有用。在你的URL中使用和的目的是什么?你似乎在问同样的问题,在你的URL中使用和的目的是什么?你似乎在问同样的问题,谢谢,但如果我使用squiggly line可能是因为感谢,但如果我使用squiggly line可能是因为