Pat*_*ins 73 asp.net asp.net-mvc visual-studio-2013 asp.net-mvc-5
我正在使用Visual Studio 2013创建一个全新的项目,我选择Asp.Net MVC和框架4.5.1项目已创建,然后,我除了F5之外什么都不做以启动默认网页.不幸的是,它产生了一个重定向到登录页面,该页面也重定向到登录页面.这是我在浏览器中的网址的简短版本:
http://localhost:5285/Account/Login?ReturnUrl=%2FAccount%2FLogin%3FReturnUrl%3D%252FAccount%252FLogin%253FReturnUrl%253D%25252FAccount%25252FLogin%25253FReturnUrl%25253D%2525252FAccount%2525252FLogin%2525253FReturnUrl%2525253D%252525252FAccount%252525252FLogin%252525253FReturnUrl%252525253D%25252525252FAccount%25252525252FLogin%25252525253FReturnUrl%25252525253D%2525252525252FAccount%2525252525252FLogin%2525252525253FReturnUrl%2525252525253D%252525252525
Run Code Online (Sandbox Code Playgroud)
我在事件查看器中没有任何错误.但在屏幕上我看到:
"HTTP错误404.15 - 未找到请求过滤模块配置为拒绝查询字符串太长的请求."
该网站使用IIS Express中的默认设置运行.我该如何解决这个问题?我猜我的Visual Studio 2013出了什么问题?
如果我创建一个全新的网站并将其托管在IIS中,它就可以工作.但是如果我创建一个新网站(没有修改任何东西)并且只是点击播放(默认启动IIS Express),它就不会.
我删除了Documents\IISExpress\config\applicationhost.config中的每个网站.我重新编译了所有内容,并创建了此条目:
<siteDefaults>
<logFile logFormat="W3C" directory="%IIS_USER_HOME%\Logs" />
<traceFailedRequestsLogging directory="%IIS_USER_HOME%\TraceLogFiles" enabled="true" maxLogFileSizeKB="1024" />
</siteDefaults>
<applicationDefaults applicationPool="Clr4IntegratedAppPool" />
<virtualDirectoryDefaults allowSubDirConfig="true" />
</sites>
Run Code Online (Sandbox Code Playgroud)
我仍然遇到IIS Express的错误,而不是IIS.
Rob*_*345 65
在Visual Studio中突出显示该项目
打开右侧的"属性"面板(或按F4)
将"Windows身份验证"设置为"已禁用"
将"匿名身份验证"设置为"已启用"
use*_*341 36
此问题是由于MVC 5模板选择了(默认情况下)身份验证模式,这会触发ReturnUrl重定向样式,如果配置不正确,可能会导致无限循环.
要禁用OWIN启动发现,请将此密钥添加到webconfig文件中.
<add key="owin:AutomaticAppStartup" value="false"/>
Run Code Online (Sandbox Code Playgroud)
Nen*_*nad 34
您缺少[AllowAnonymous]登录操作的属性.
[AllowAnonymous]
public ActionResult Login(string returnUrl)
{
// code....
}
Run Code Online (Sandbox Code Playgroud)
第二种可能性,仅针对IIS Express:如果您WebApplication1多次创建相同的默认项目,使用不同的身份验证设置,IIS Express会在其配置文件中存储其他身份验证设置.就像是:
<location path="WebApplication1">
<system.webServer>
<security>
<authentication>
<windowsAuthentication enabled="true" />
<anonymousAuthentication enabled="false" />
</authentication>
</security>
</system.webServer>
</location>
</configuration>
Run Code Online (Sandbox Code Playgroud)
配置位于用户的Documents文件夹中Documents\IISExpress\config\,您应该查找:
applicationhost.config
Run Code Online (Sandbox Code Playgroud)
然后只需删除<location path="WebApplication1">上面提到的xml节点.
如果您使用的是Visual Studio 2015或更高版本,请检查配置文件的此路径:
$(solutionDir)\.vs\config\applicationhost.config
每个解决方案都有自己的配置文件.
小智 7
我不得不删除(Source Link):
<authorization>
<deny users="?" />
</authorization>
Run Code Online (Sandbox Code Playgroud)
我知道我可能会迟到,这不是直接针对OP的问题.但如果将来有人来到这里,还有一个检查AllowAnonymous和Authorize属性是,你必须检查所有的孩子行为.
例如,我有我的布局(登录页面也使用),它为面包屑和侧边栏调用2个子操作,并且它们没有AllowAnonymous属性(Controller具有Authorize属性).
希望这有帮助.
小智 5
在IIS中,选择您的网站并检查身份验证,如果您使用的是表单身份验证,则 -
请注意,这是潜在有害的建议,直接修改 applicationhost 配置文件很少是个好主意,通常有一些工具可以安全地为您执行此操作(例如,从 Visual Studio 中)。在继续之前,请确保创建此文件的备份副本,以防您的 IIS Express 被丢弃。
为了解决这个问题,我使用了位于此处的默认 IIS 配置文件:
C:\Windows\System32\inetsrv\config\applicationHost.config
Run Code Online (Sandbox Code Playgroud)
到我的文档
%userprofile%\documents\iisexpress\config\applicationhost.config
Run Code Online (Sandbox Code Playgroud)
它奏效了。
这是因为我设置了一些 Windows 身份验证,而不是匿名帐户。
| 归档时间: |
|
| 查看次数: |
44611 次 |
| 最近记录: |