【问题标题】:return View() and return PartialView() mystery MVC5返回 View() 并返回 PartialView() 神秘 MVC5
【发布时间】:2015-03-11 06:44:15
【问题描述】:

为了安全,我使用 MVC 5 和 Identity 2.0。当我启动应用程序时,它会显示登录页面(没有布局可能是因为我正在返回部分视图)。当我使用 return View() 而不是 return PartialView() 时,它会给我以下错误;

HTTP 错误 404.15 - Not Found 请求过滤模块是 配置为拒绝查询字符串过长的请求。

我启用了 Windows 和网站的匿名身份验证,但它不起作用。我的登录操作是

 [AllowAnonymous]
 public ActionResult Login(string returnUrl)
 {
     ViewBag.ReturnUrl = returnUrl;
     return PartialView();
 }       

【问题讨论】:

  • returnurl 的 url 是不是很长?这通常放在查询字符串中。当 returnurl 太长时(即 /home/products/all/and/more/clothes/sizes/10/to/12/etc....),则查询字符串的总长度太长。这里有一个设置允许更长的查询字符串:stackoverflow.com/questions/11636386/…(如果这是问题所在)
  • @Michel 我的返回网址变得很奇怪。变成localhost:8396/Account/…
  • 为什么会变得这么长。只有当我从控制器返回 View 时才会发生这种情况。当我从控制器返回 PartialView 时,它可以工作但没有布局
  • 它有 2269 个字符。似乎一个无限循环使这个网址有问题
  • 在启动时导航到站点的根目录会发生什么?你会被重定向到localhost/account.login?returnUrl=/ 吗?

标签: c# asp.net-mvc-5 asp.net-mvc-partialview


【解决方案1】:

您的问题不是 MVC 代码,而是 IIS 配置 看看下面的链接

http://www.iis.net/configreference/system.webserver/security/requestfiltering/alwaysallowedquerystrings

【讨论】:

  • 感谢您的回复。我在调试模式下收到此错误,网站未托管在 IIS 上。似乎它陷入了无限循环,并且 returnurl 变得越来越长。我尝试在 system.webserver/security/requestfiltering/requestLimits@maxQueryString 的 web.config 中执行此操作
  • 查询字符串包含2269个字符,如:localhost:8396/Account/…
  • 为什么会变得这么长。只有当我从控制器返回 View 时才会发生这种情况。当我从控制器返回 PartialView 时,它可以工作但没有布局
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-12-01
  • 2011-03-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多