我的带有Forms身份验证的ASP.NET MVC2应用程序甚至阻止访问图像,样式和脚本

时间:2010-09-15 22:41:07

标签: asp.net asp.net-mvc asp.net-mvc-2 forms-authentication iis-7.5

我正在开发一个MVC2应用程序并在其上使用表单身份验证。

脚本,图片和样式都被阻止了未记录的用户,因此登录页面看起来很糟糕。

它适用于本地,问题是当我发布到服务器时。

有没有人知道为什么????

PS:服务器IIS是版本7.5

我的 Web.config

<configuration>
  <system.web>
    <globalization culture="pt-BR" uiCulture="pt-BR" />
    <httpRuntime requestValidationMode="2.0"/>
    <customErrors mode="Off" />
    <compilation debug="true" targetFramework="4.0">
      <assemblies>
        <add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        <add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        <add assembly="System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
      </assemblies>
    </compilation>

    <pages>
      <namespaces>
        <add namespace="System.Web.Mvc" />
        <add namespace="System.Web.Mvc.Ajax" />
        <add namespace="System.Web.Mvc.Html" />
        <add namespace="System.Web.Routing" />
        <add namespace="Admin.Models" />
      </namespaces>
    </pages>

    <authentication mode="Forms">
      <forms name="AGAuth" loginUrl="~/Home/Login" timeout="120" />
    </authentication>
  </system.web>

  <system.webServer>
    <validation validateIntegratedModeConfiguration="false"/>
    <modules runAllManagedModulesForAllRequests="true"/>
  </system.webServer>

  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0" newVersion="2.0.0.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>

  <connectionStrings>
      <add name="DBContainer" connectionString="metadata=res://*/Database.DB.csdl|res://*/Database.DB.ssdl|res://*/Database.DB.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=thewebserver.com,5158;Initial Catalog=thedatabase;Persist Security Info=True;User ID=theuser;Password=thepassword;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" />
  </connectionStrings>

</configuration>

9 个答案:

答案 0 :(得分:4)

将web.config添加到脚本,图像和样式文件夹,告诉asp.net允许访问所有用户(确保您没有任何内容,您不希望匿名用户有权访问):

<configuration>
      <system.web>
         <authorization>
            <allow users="*"/>
         </authorization>
      </system.web>
</configuration>

至于原因,以下是告诉IIS让asp.net处理所有请求:

  <system.webServer>
    <validation validateIntegratedModeConfiguration="false"/>
    <modules runAllManagedModulesForAllRequests="true"/>
  </system.webServer>

答案 1 :(得分:3)

我有完全相同的问题。

原因证明是IIS身份验证配置。通过启用匿名身份验证(以及启用表单身份验证和禁用Windows身份验证),可以在注销时访问脚本,样式和图像。

答案 2 :(得分:2)

您可以设置所需文件夹的权限,如下所示:

<location path="App_Themes">
    <system.web>
      <authorization>
        <allow users="*"/>
      </authorization>
    </system.web>
  </location>
  <location path="images">
    <system.web>
      <authorization>
        <allow users="*"/>
      </authorization>
    </system.web>
  </location>
  <system.web>

答案 3 :(得分:1)

查看location element的文档。我想第一个例子会给你你需要的东西。

为方便起见,这里提到的例子是:

<configuration>
   <location path="Logon.aspx">
      <system.web>
         <authorization>
            <allow users="?"/>
         </authorization>
      </system.web>
   </location>
</configuration>

答案 4 :(得分:1)

IIS_WPG组需要对折叠的读取权限。现在它工作正常...希望这有助于其他人

答案 5 :(得分:1)

您可以设置所需文件夹的权限,例如

<location path="App_Themes">
<system.web>
  <authorization>
    <allow users="*"/>
  </authorization>
</system.web>

                                         

答案 6 :(得分:0)

这是一个完整的黑暗刺,但图像和CSS文件夹的权利是什么?如果它们被设置为只有经过授权的人才能找到它们,那么您就会遇到问题。您可以尝试将这些文件夹的权限设置为每个人,或者为.net默认用户设置,并查看您获得的内容。

答案 7 :(得分:0)

您是否意外地在Content文件夹中复制或创建了一个Web.config文件,该文件夹中有<authorization>元素可能拒绝访问?

答案 8 :(得分:0)

我也遇到了同样的问题,我尝试了Scott H建议但是没有用......

事实证明,分配给匿名身份验证的用户已设置为IUSR(右键单击“匿名身​​份验证” - >“编辑”),该用户无法访问我的代码。我已经授予了对应用程序池标识的访问权限,因此我选择了该选项,单击了“确定”,并且宾果游戏有效。