2

我创建了一个自定义成员资格和角色提供程序,以利用 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 实例之后,我看到输入到表单中的信息通过了验证,但是没有授予对授权访问受限的页面的访问权限。

此外,用于部署的数据库填充了与开发数据库相同的值。

为什么提供程序在调试环境中运行良好时在部署后无法工作?

4

2 回答 2

0

“我看到输入表单的信息通过了验证,但没有授予对授权访问受限的页面的访问权限。”

好像是权限问题!

于 2012-02-21T10:33:17.840 回答
0

This problem was only showing up when my deployed server was accessed directly by its IP. When I added a hosts entry mapping a domain to the IP and subsequently set the same domain in my auth cookie the issue was resolved.

I'm not sure why I couldn't access the cookie if the domain was an IP address, but this did fix the problem.

于 2012-03-09T15:51:23.603 回答