Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Asp.Net MVC路由不接受&在路由中_C#_Asp.net_Asp.net Mvc_Asp.net Mvc 4 - Fatal编程技术网

C# Asp.Net MVC路由不接受&在路由中

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

我有一个默认的Asp.Net路由,如下所示:

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="&lt;,&gt;,*,%,:,\,?" />
但我担心我这样做的时候会牺牲安全感

通过这种方式,将允许在您的请求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="&lt;,&gt;,*,%,:,\,?" />
但我担心我这样做的时候会牺牲安全感

通过这种方式,将允许在您的请求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可能是因为