2012-04-30 42 views
2

我正在编写一个ASP.NET Web应用程序。允许匿名用户浏览样式和图像文件夹

我有一个登录屏幕上有一些CSS样式和图像。我遇到了样式和图像不显示的问题。我在线阅读,它说我需要一个web.config内我的内容文件夹。我在web.config中添加了以下内容:

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

这似乎适用于我的本地计算机。但是,当我发布到服务器上的inetpub时,它不起作用。

这里是我的文件夹结构:

登录/的Login.aspx - 我的登录屏幕
内容 - 这是我的根内容文件夹
内容/样式 - 这是我的CSS坐落
内容/图像 - 这是我的图像存储的地方

我试着在样式和图像中放置相同的web.config,但也没有工作。

任何帮助,将不胜感激。

更新时间:

以下是我在我与用户访问主要的web.config:

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

更新2: 这里是所有在我的根站点。配置除了连接字符串信息:

<system.web> 
<httpRuntime requestValidationMode="2.0"/> 
<compilation debug="true" targetFramework="4.0"/> 
<sessionState cookieless="UseCookies"/> 
<authentication mode="Forms"> 
    <forms name="CMS" loginUrl="Login/Login.aspx" timeout="25" slidingExpiration="true"/> 
</authentication> 
<authorization> 
    <deny users="?"/> 
</authorization> 
<membership> 
    <providers> 
    <clear/> 
    <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="ApplicationServices" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/"/> 
    </providers> 
</membership> 
<profile> 
    <providers> 
    <clear/> 
    <add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="ApplicationServices" applicationName="/"/> 
    </providers> 
</profile> 
<roleManager enabled="false"> 
    <providers> 
    <clear/> 
    <add name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="ApplicationServices" applicationName="/"/> 
    <add name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" applicationName="/"/> 
    </providers> 
</roleManager> 
</system.web> 
<location path="Content" allowOverride="false"> 
<system.web> 
    <authorization> 
    <allow users="*" /> 
    </authorization> 
</system.web> 
</location> 
<system.webServer> 
    <modules runAllManagedModulesForAllRequests="true"/> 
</system.webServer> 

可能有在这里干扰用户访问的东西?

+0

当他们请求特定内容或他们尝试列出目录的内容时,它们是否会弹出? –

+0

是的,如果我尝试直接浏览器中的样式表,我会弹出一个返回URL的登录屏幕。 – johnmurphy01

+0

有没有其他的想法?没有解决方案为我工作。值得注意的是,这一切都适用于我的本地机器。当我发布到远程服务器时,遇到问题。 IIS中是否有任何配置需要更改才能正常工作? – johnmurphy01

回答

0

基本上,您希望允许任何用户访问Content文件夹中的文件。

添加到您的主web.config中:

<location path="Content"> 
     <system.web> 
      <authorization> 
       <allow users="*" /> 
      </authorization> 
     </system.web> 
    </location> 
+0

我改变了我的主web.config包含这一点的代码,它似乎没有做任何事情。 – johnmurphy01

+0

奇怪。我知道这是有效的,我自己也多次使用过它。让我们看看我们是否可以找出问题。你能否用你的主web.config的相关部分来编辑你的原始问题?特别是看看这些部分:'认证'和所有'位置'部分。 –

+0

允许*和?,<允许用户=“*,?” /> –

0

见我answer here。有些人会建议在您想要公开的文件夹中放置一个web.config文件,但我更愿意监视根web.config元素中的所有内容。基本上,您可以将您已有的相同片段插入网站根目录的web.config文件中。不要忘记“allowOverried = false”属性。 :)

除了可能非常棘手的事情之外,其他的东西都是正确的。确保你得到它只是对! :)

<location path="Path to your folder" allowOverride="false"> 
    <system.web> 
     <authorization> 
     <allow users="*"/> 
     </authorization> 
    </system.web> 
</location> 
1

我意识到这是一个老问题,但我有同样的麻烦,希望这有助于某人。

在我的情况下,我不得不改变IIS中的身份验证设置以使其工作。这听起来像是将它移动到默认配置可能不同的远程服务器后发生的情况。

我们已经默认启用Windows身份验证模式,但是当的web.config指定窗体身份验证,它实际上将在IIS配置使两者上。

随着你的web.config,你有这样的事情

<system.web> 
    <authentication mode="Forms"> 
     <forms name="CMS" loginUrl="Login/Login.aspx" timeout="25" slidingExpiration="true"/> 
    </authentication> 
    <authorization> 
     <deny users="?"/> 
    </authorization> 
    <!-- ...etc... --> 
</system.web> 

如果你搬到启用了Windows身份验证服务器,它看起来像这样在IIS

enter image description here

公告尽管您的配置只说明表单,但Forms和Windows都已启用。这将会破坏你在子目录中添加的web.config文件。

当你有下面的内容的文件夹,它似乎有VS形式与Windows冲突,不管你放什么,它似乎没有兑现你的web.config

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

如果您处于这种情况,请确保禁用Windows身份验证或任何其他未使用的身份验证模式,如下图所示。您还需要确保匿名已启用,以允许向所有人开放。

希望这可以帮助别人。

enter image description here

0

通过记录的方式在我的情况是什么帮助: This discussion was useful

  • 我有另外的应用程序,我没有问题,唯一的区别是,IUSR曾在权限文件夹。添加IUSR权限帮助
  • 在浏览器中使用“检查”,以显示控制台清楚,当文件无法访问(否则本地缓存掩盖的结果)
  • 我尝试使用各级web.configs如上所述,但这些解决方案对我无效。
相关问题