我正在开发一个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="Data Source=thewebserver.com,5158;Initial Catalog=thedatabase;Persist Security Info=True;User ID=theuser;Password=thepassword;MultipleActiveResultSets=True"" providerName="System.Data.EntityClient" />
</connectionStrings>
</configuration>
答案 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(右键单击“匿名身份验证” - >“编辑”),该用户无法访问我的代码。我已经授予了对应用程序池标识的访问权限,因此我选择了该选项,单击了“确定”,并且宾果游戏有效。