2012-03-03 73 views
0

基本上我想在我的共享主机配置访问特定的文件夹,我就以此为指南:http://support.microsoft.com/kb/316871web.config文件和目录的访问

我的web.config的这一部分:

<system.web> 
    <authorization> 
    <deny users="?"/> 

    </authorization> 
    <authentication mode="Forms"> 

    <forms name="Authlogin" loginUrl="logon.aspx" protection="All" timeout="60" path="." /> 

    </authentication> 

因此,如果用户未经授权,他将被重定向到logon.aspx。 该解决方案在Visual Studio测试服务器上运行良好,用户可以重定向到logon.aspx,但它在我的共享主机(godaddy)上根本不起作用。似乎规则只是被忽略了。 任何想法如何使其工作......或为什么它不能在托管?

编辑 我发现,如果我请求任何任何ASP页(ASHX,apsx,ASMX),那么我会被重定向到logon.apsx.But如果我将请求的任何文件(HTML,TXT的, jpg和ect),那么表单认证将被忽略。 同样的事情发生在本地IIS 7.5

+0

可能会尝试更改此:'loginUrl =“〜/ logon.aspx”' – Mubarek 2012-03-03 21:54:37

+0

谢谢你的建议。我试过了,它不起作用。认为我需要重写machine.config中的一些规则。此外,我安装本地计算机上的IIS,并尝试我的项目there.No运气..身份验证不重定向到logon.aspx和不会阻止匿名users.It像服务器配置中的问题... – user1247309 2012-03-03 22:31:10

回答

0

我发现了问题和解决方案。问题什么IIS和ASP.NET只控制asp.net页面。所以启用IIS来查看所有文件,我做了这个更改在网络上。配置 首先,我在system.webserver加入这个

<modules> 
     <remove name="FormsAuthenticationModule" /> 
     <add name="FormsAuthenticationModule" type="System.Web.Security.FormsAuthenticationModule" /> 
     <remove name="UrlAuthorization" /> 
     <add name="UrlAuthorization" type="System.Web.Security.UrlAuthorizationModule" /> 
     <remove name="DefaultAuthentication" /> 
     <add name="DefaultAuthentication" type="System.Web.Security.DefaultAuthenticationModule" /> 
</modules> 

这将使IIS与ASP.NET表单认证工作(这是我如何理解它=))) 当我加入这个在同一system.webServer

<security> 
     <authorization> 
     <remove users="*" roles="" verbs="" /> 
     <add accessType="Deny" users="?"/> 
     <add accessType="Allow" users="*"/> 
     </authorization> 

我希望我的解决方案将帮助任何一个相同的问题