我创建了一个自定义成员资格和角色提供程序,以利用 ASP.NET MVC 4 中内置的身份验证和授权。在我尝试将其部署到测试环境之前,我的应用程序开发过程中一切顺利。
从 Visual Studio 以调试模式启动应用程序可以正常工作。但是,然后我使用 Visual Studio 的一键部署将我的应用程序加载到在我的开发机器上运行的 IIS 实例中。我可以在浏览器中加载应用程序,但身份验证不再有效。使用 Fiddler,我看到一个 cookie 被发回,但我无法访问使用 [Authorize] 属性限制的站点部分。
以下是我的 web.config 中的相关片段。
<membership defaultProvider="PonosMembershipProvider">
<providers>
<clear />
<add name="PonosMembershipProvider" type="Ponos.Identity.PonosMembershipProvider" connectionStringName="DefaultConnection" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/Ponos" />
</providers>
</membership>
<roleManager enabled="true" defaultProvider="DefaultRoleProvider">
<providers>
<clear />
<add name="DefaultRoleProvider" type="Ponos.Identity.PonosRoleProvider" connectionStringName="DefaultConnection" applicationName="/Ponos" />
</providers>
</roleManager>
此外,我在两个自定义提供程序中设置了应用程序名称,其逻辑如下:
public override string ApplicationName
{
get
{
return "Ponos";
}
set
{
throw new NotImplementedException();
}
}
此外,在附加到正在运行的 IIS 实例之后,我看到输入到表单中的信息通过了验证,但是没有授予对授权访问受限的页面的访问权限。
此外,用于部署的数据库填充了与开发数据库相同的值。
为什么提供程序在调试环境中运行良好时在部署后无法工作?