3

我正在编写一个 ASP.NET Web 应用程序。

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

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

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

这是我的文件夹结构:

Login/Login.aspx - 我的登录屏幕
Content - 这是我的根内容文件夹
Content/Styles - 这是我的 CSS 所在的位置
Content/Images - 这是我的图像存储位置

我也尝试将相同的 web.config 放在 Styles 和 Images 中,但这也不起作用。

任何帮助,将不胜感激。

更新:

这是我在主 web.config 中与用户访问相关的内容:

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

更新 2: 除了连接字符串信息之外,这是我的根 web.config 中的所有内容:

<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>

这里会不会有干扰用户访问的东西?

4

4 回答 4

2

在这里查看我的答案。有些人会建议将 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>
于 2012-05-01T17:12:59.763 回答
1

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

就我而言,我必须更改IIS 中的身份验证设置才能使其正常工作。这听起来像是将其移至默认配置可能不同的远程服务器后发生的情况。

我们默认启用了Windows 身份验证模式,但是当web.config指定Forms Authentication时,它实际上会在 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 中将如下所示

在此处输入图像描述

请注意,尽管您的配置仅显示了 Forms,但 Forms 和 Windows 都已启用。这将破坏您在子目录中添加的 web.config 文件。

当您的 Content 文件夹中有以下内容时,它似乎与 Windows vs Forms 有冲突,无论您放什么,它似乎都不符合您的 web.config

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

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

希望这可以帮助某人。

在此处输入图像描述

于 2014-04-03T21:38:17.000 回答
0

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

将此添加到您的主 web.config:

<location path="Content">
        <system.web>
            <authorization>
                <allow users="*" />
            </authorization>
        </system.web>
    </location>
于 2012-04-30T21:59:55.247 回答
0

通过记录对我的案例有帮助的方式: 这个讨论很有用

  • 我有另一个没有问题的应用程序,唯一的区别是IUSR在文件夹中有权限。添加IUSR权限有帮助
  • 在浏览器中使用“检查”来显示控制台可以清楚地显示文件何时无法访问(否则本地缓存会掩盖结果)
  • 如上所述,我尝试在各个级别使用 web.configs,但这些解决方案对我不起作用。
于 2017-05-22T22:27:26.513 回答