Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/17.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# 如何处理潜在危险的请求。路径_C#_Asp.net Mvc - Fatal编程技术网

C# 如何处理潜在危险的请求。路径

C# 如何处理潜在危险的请求。路径,c#,asp.net-mvc,C#,Asp.net Mvc,我收到以下错误:一个潜在危险的请求。从客户端(:)检测到路径值 我试图将DateTime和int传递给ActionResult,我创建了一个自定义路由来处理它。我无法在URL中看到(:),因此不知道如何替换字符串。是我的URL日期中的(%)导致的吗?下面是我将变量传递给控制器的代码: //View DateTime raceDate = DateTime.Today; <center><a href="@Url.Action("EventInfo", new {raceDate

我收到以下错误:一个潜在危险的请求。从客户端(:)检测到路径值

我试图将DateTime和int传递给ActionResult,我创建了一个自定义路由来处理它。我无法在URL中看到(:),因此不知道如何替换字符串。是我的URL日期中的(%)导致的吗?下面是我将变量传递给控制器的代码:

//View
DateTime raceDate = DateTime.Today;
<center><a href="@Url.Action("EventInfo", new {raceDate= date, trackID=trID})" class="buttonize" target="_blank">View</a></center>

//Controller
public ActionResult EventInfo(DateTime raceDate, int trackID )
    {
        EventInfomodel = new EventInfo();
        model.MyRace = db.GetRaceDetails(raceDate, trackID)
        return View(model);
    }

//Route.Config
routes.MapRoute("Home/EventInfo", "Home/EventInfo/{raceDate}/{trackID}", new { controller = "Home", action = "EventInfo", raceDate = UrlParameter.Optional, trackID= UrlParameter.Optional });
我是全新的MVC和C,所以任何帮助都会很好,谢谢。

@Praneet Nadkar 您的建议奏效了,我在视图中将日期格式化为字符串,如下所示:

DateTime mydate = DateTime.Today;
string   date   = mydate.ToString("yyyy-MM-dd");
现在我的URL看起来好多了,可以正常工作了

Home/EventInfo/2019-04-22/59

谢谢

安全是您出错的原因

原因:URL编码确保所有浏览器都能正确传输URL字符串中的文本。某些浏览器可能会截断或损坏问号(?)、符号(&)、斜杠(/)和空格等字符

解决方案: 当您编写URL时,需要对其格式进行编码

HttpContext.Current.Server.UrlEncode(<Your URL>);
HttpContext.Current.Server.UrlEncode();

谢谢。

您有两个参数,Home/EventInfo/{raceDate}/{trackID}比赛日期和赛道id。浏览器中的url是:Home/EventInfo/04/22/2019%2000%3a00%3a00/59您的比赛日期将作为2019年4月22日通过,其中/被视为不存在的路径。尝试格式化您的日期,然后重试,并且您的日期格式包含“/”字符,以便MVC路由使用“/”字符在URL中定义路由。.Home/EventInfo/04/22/2019…路由表中不存在此类路径
HttpContext.Current.Server.UrlEncode(<Your URL>);