我有一个从 MVC2 升级的 MVC4 项目。在使用 VS 开发服务器进行调试时,用户验证工作正常。但是当我尝试使用本地 IIS 进行调试时,由于密码错误,登录失败。在生产系统上,用户验证也可以正常工作。开发服务器/生产系统和本地 IIS 之间的唯一区别是,网站在本地 IIS 的虚拟目录中运行。因此 URL 位于开发服务器/生产环境中,例如:
http://localhost:12345/ OR http://the.production.server/
但在本地 IIS 上,它类似于:
http://localhost/mymvcproject/
如果我将网站移动到本地 IIS 的根目录,则登录工作正常。
在 web.config 成员配置如下:
<membership>
<providers>
<add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="ApplicationServices" enablePasswordReset="true" passwordFormat="Encrypted" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="50" minRequiredPasswordLength="6" passwordAttemptWindow="10" applicationName="/" />
</providers>
</membership>
我认为问题在于 applicationName 参数,但我没有更改它。我检查的事情:
- 数据库数据始终相同
- 在虚拟目录中创建和验证新用户确实可以在本地 IIS 上工作
- 我也用原来的 MVC2 项目测试过,同样的问题
我在正确的道路上吗?有没有办法使验证/密码加密/解密独立于 URL/应用程序名称?