2014-05-22 7 views
0

Это проект MVC 4, я пытаюсь перенаправить пользователя на returnUrl после входа в систему, и у меня возникают проблемы с кодировкой returnUrl.MVC returnUrl опасный request.path

Это мой метод контроллера Логин:

 [ValidateInput(false)] 
     [HttpPost] 
     public ActionResult Login(Models.ViewModels.UserLogin user, string returnUrl) 
     { 
      if (ModelState.IsValid) 
      { 
       if (user.IsValid(user.UserName, HelpMethods.sha256(user.Password))) 
       { 
        FormsAuthentication.SetAuthCookie(user.UserName, user.RememberMe); 
        if (returnUrl != null) 
        { 
         return RedirectToAction(Url.Encode(returnUrl)); 
        } 
        return RedirectToAction("Index", "Home"); 
       } 
       else 
       { 
        ModelState.AddModelError("", "Fel användarnamn eller lösenord."); 
       } 
      } 
      return View(user); 
     } 

С помощью этого кода я получаю A potentially dangerous Request.Path value was detected from the client (&). Я сделал некоторые исследования и пробовал следующие вещи без успеха.

  1. [ValidateInput(false)]
  2. <requestFiltering allowDoubleEscaping="true"/>
  3. <httpRuntime requestValidationMode="2.0" />, Существует дубликат 'System.Web.Extensions/скриптовый/scriptResourceHandler' раздел определен», эта ошибка происходит потому, что вы работаете с .NET Framework 3.5 на основе приложения в .NET Framework 4. Если вы используете WebMatrix, для решения этой проблемы перейдите на узел «Настройки», чтобы установить версию .NET Framework на «.NET 2». Вы также можете удалить дополнительные разделы из файла web.config .

Мне нужен совет, как это решить, спасибо.

ответ

0

Я думаю, что это связано с пункт 3:

<httpRuntime requestValidationMode="2.0" /> 

Когда вы изменили, что в вашем Web.Config, устранена ошибка, но тут же еще одно сообщение об ошибке всплывает вверх.

Вы должны выполнить шаги, описанные в сообщении об ошибке, или удалить 'system.web.extensions/scripting/scriptResourceHandler' раздел либо в файле web.config (если возможно), либо в файле machine.config.

32-разрядное

%windir%\Microsoft.NET\Framework\[version]\config\machine.config 

64-битный

%windir%\Microsoft.NET\Framework64\[version]\config\machine.config 

Причина, почему это происходит потому, что вы установили какой-то кусок программного обеспечения, которое модифицирует файл machine.config.

Смежные вопросы