如何处理潜在危险的Request.Path

时间:2019-04-22 09:52:22

标签: c# asp.net-mvc

我收到此错误:从客户端(:)检测到一个潜在危险的Request.Path值。

我试图将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 });

浏览器中的URL如下:

 Home/EventInfo/04/22/2019%2000%3a00%3a00/59

我是全新的MVC和C#,所以任何帮助都会很棒,谢谢。

2 个答案:

答案 0 :(得分:1)

安全是您出错的原因

为什么:URL编码可确保所有浏览器正确传输URL字符串中的文本。一些浏览器可能会截断或破坏诸如问号(?),&符(&),斜杠(/)和空格之类的字符。

解决方案:  撰写网址时,需要以格式进行编码。

b.id

谢谢。

答案 1 :(得分:0)

@Praneet Nadkar 您的建议有效,我将日期格式设置为字符串,如下所示:

DateTime mydate = DateTime.Today;
string   date   = mydate.ToString("yyyy-MM-dd");

现在我的URL看起来好多了并且可以正常工作

Home/EventInfo/2019-04-22/59

谢谢