在我的 web.config 中,我有:
<authentication mode="Forms">
<forms loginUrl="~/Account/Login" timeout="2880" />
</authentication>
也:
<appSettings>
<add key="PreserveLoginUrl" value="true" />
</appSettings>
由 [Authorize] 控制器或操作过滤器引起的任何重定向都无法在我的生产环境中工作。我得到一个 302 到一个带有 ~ 的 URL,即:
<a href="/~/Account/Login?ReturnUrl=%2FTransactions">
但是它在本地工作 - 我得到正确的 302 来:
<a href="/Account/Login?ReturnUrl=%2FTransactions">
我有一个解决方法 - 这涉及从 loginUrl 中删除 ~。但是为什么它不能与生产中的 ~ 一起使用?
一些附加信息:本地服务器(IIS Express w VS 2012):
Server: Microsoft-IIS/8.0
X-AspNetMvc-Version: 4.0
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
生产服务器:
Server: Microsoft-IIS/7.5
X-AspNetMvc-Version: 4.0
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET