Получение «потенциально опасное значение Request.Path было обнаружено от клиента (&)» - PullRequest
112 голосов
/ 17 мая 2011

У меня проблема с устаревшим кодом, требующая поддержки случайных URL-адресов, как если бы они были запросами на главную страницу. В некоторых URL-адресах есть символы, которые генерируют ошибку "Возможно, клиент (&) обнаружил потенциально опасное значение Request.Path" . Сайт написан на ASP.Net MVC 3 (на C #) и работает на IIS 7.5.

Вот пример URL ...

http://mywebsite.com/Test123/This_&_That

Вот как у меня настроен маршрут для всех перехватов (у меня есть другие маршруты для перехвата определенных страниц) ...

routes.MapRoute(
    "Default", // Route name
    "{garb1}/{garb2}", // URL with parameters
    new { controller = "Website", action = "Home", garb1 = UrlParameter.Optional, garb2 = UrlParameter.Optional } // Parameter defaults
);

Я добавил следующие вещи в мой файл web.config ...

<configuration>
    <system.web>
        <pages validateRequest="false" />
        <httpRuntime requestValidationMode="2.0" />
    </system.web>
<configuration>

Я также добавил атрибут ValidateInput к действию, которое должно перехватывать URL-адреса ...

public class WebsiteController : Controller
{
    [ValidateInput(false)]
    public ActionResult Home()
    {
        return View();
    }
}

Но я все еще получаю ошибку. Есть идеи почему? Я что-то пропустил? Сейчас я просто работаю на своем локальном сервере разработки (я еще не пробовал эти исправления в рабочей среде).

Ответы [ 5 ]

160 голосов
/ 17 мая 2011

Пока вы можете попробовать эти настройки в конфигурационном файле

<system.web>
    <httpRuntime requestPathInvalidCharacters="" requestValidationMode="2.0" />
    <pages validateRequest="false" />
</system.web>

Я бы не использовал символы, такие как '&', в URL-пути, заменяя их подчеркиванием.

5 голосов
/ 12 мая 2016

Я столкнулся с этим типом ошибки. чтобы вызвать функцию из бритвы.

public ActionResult EditorAjax(int id, int? jobId, string type = ""){}

решить эту проблему, изменив строку

от

<a href="/ScreeningQuestion/EditorAjax/5&jobId=2&type=additional" /> 

до

<a href="/ScreeningQuestion/EditorAjax/?id=5&jobId=2&type=additional" />

где мой route.config

routes.MapRoute(
            "Default", // Route name
            "{controller}/{action}/{id}", // URL with parameters
            new { controller = "Home", action = "Index", id = UrlParameter.Optional }, new string[] { "RPMS.Controllers" } // Parameter defaults
        );
1 голос
/ 19 февраля 2013

Если вы хотите разрешить HTML-теги только для нескольких текстовых полей в mvc

Вы можете сделать одну вещь

в контроллере

 [ValidateInput(false)]
public ActionResult CreateNewHtml()  //view
{
    return View();
}
[ValidateInput(false)]
[HttpPost]
public ActionResult CreateNewHtml(cbs obj)//view cbs is database class
{
    repo.AddHtml(obj);
    return View();
}
0 голосов
/ 07 февраля 2019

Убедитесь, что в вашем файле web.config присутствуют следующие строки

<system.web> <httpRuntime requestPathInvalidCharacters="" /> </system.web>

0 голосов
/ 21 апреля 2016

Мы получили ту же ошибку в Fiddler, когда пытались выяснить, почему наш вьюер карт Silverlight ArcGIS не загружал карту.В нашем случае это была опечатка в URL в коде.По какой-то причине там был знак равенства.
http: = // someurltosome / awesome / place
вместо
http://someurltosome/awesome/place

После удаления знака равенстваэто работало отлично (конечно).

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