Как бороться с потенциально опасным Request.Path - PullRequest
1 голос
/ 22 апреля 2019

Я получаю эту ошибку: потенциально опасное значение 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 ]

1 голос
/ 22 апреля 2019

Безопасность - причина, из-за которой вы получаете ошибку

Почему: кодировка URL гарантирует, что все браузеры будут правильно передавать текст в строках URL. Такие символы, как знак вопроса (?), Знак амперсанда (&), знак косой черты (/) и пробелы, могут быть усечены или повреждены некоторыми браузерами.

Решение: При составлении вашего URL необходимо кодировать его в формате.

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

Спасибо.

0 голосов
/ 22 апреля 2019

@ Пранит Надкар Ваше предложение сработало, я отформатировал дату в строку, на мой взгляд, так:

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

Теперь мой URL выглядит намного лучше и работает

Home/EventInfo/2019-04-22/59

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...