未经身份验证的用户无法在网站中看到图片

Pet*_*ter 8 asp.net asp.net-mvc iis-7

当我在visual studio中通过调试模式运行我的网站时,一切看起来都很棒,页面上的所有图像都很好.但是,一旦我将我的网站部署到IIS7网络服务器(怀疑其他版本会有所作为,但你永远不知道),那么用户在登录之前无法看到网站上的图像.

该网站是一个asp.net MVC网站,我是MVC的新手,虽然我有很多asp.net表单的经验.似乎只允许经过身份验证的用户访问images文件夹,并且我的web.config中有一个授权部分,说只有管理员可以访问该站点,所以我该如何创建它以便所有用户,经过身份验证或以其他方式查看图像?

- 更新 -

我尝试了一下建议的配置块,从我能说的一切都很有道理,但它似乎没有什么区别.下面的示例包含路径的内容/图像,但在此之前我只尝试了内容,因为可以访问其中的所有内容.我也尝试将allowOverride设置为false,这似乎也没有什么区别.

<location path="Content/Images">
    <system.web>
        <authorization>
            <allow users ="*" />
        </authorization>
    </system.web>
</location>  
Run Code Online (Sandbox Code Playgroud)

- 更新2-- 有趣的是,我甚至没有在web.config中看到任何明确的拒绝条目,只是允许管理员,当我进入IIS 7并使用UI允许所有用户访问它没有在列表中显示任何拒绝的内容目录.但是,当我从我的个人计算机上调试它时,这个项目工作得很好,只有在我部署它之后我才有问题......

<authorization>
    <allow roles="admin" />
</authorization>
<authentication mode="Forms">
    <forms loginUrl="~/Account/LogOn" timeout="2880" />
</authentication>
Run Code Online (Sandbox Code Playgroud)

Oma*_*mar 14

在web.config文件中,在</system.web>标记之后添加以下内容

<location path="images">
     <system.web>
       <authorization>
        <allow users ="*" />
       </authorization>
    </system.web>
</location>
Run Code Online (Sandbox Code Playgroud)

path="images"带图像/ css的文件夹的名称在哪里.

更新:

如果您正在使用ASP.NET MVC,我将删除web.config文件中的授权声明,并使用[Authorize]需要锁定的控制器上的属性.

您还可以指定要授予使用权限的角色[Authorize("admin")].


小智 6

默认情况下,您在Web.config文件中定义的配置适用于其包含文件夹的每个子目录.如果应用程序根目录中有Web.config,则该配置将传播到每个子目录,包括具有图像和Css样式表的子目录.所以,如果你在你的根Web.config中有一个像这样的规则:

<system.web>
...
<authorization>
  <deny users="?"/>
</authorization>
...
</system.web>
Run Code Online (Sandbox Code Playgroud)

匿名用户将无法像您期望的那样访问显示页面所需的资源.

要修复它,您需要在具有演示资源的每个子目录中包含另一个Web.config,并应用您要覆盖的规则.在你的情况下,这应该做的工作:

<?xml version="1.0"?>
<configuration>
   <system.web>
      <authorization>
        <allow users="*"/>
      </authorization>
   </system.web>
</configuration>
Run Code Online (Sandbox Code Playgroud)

如果您使用的是主题,请在主题文件夹中放置一个Web.config文件.


Jos*_*osh 6

刚遇到同样的问题.我们在登录页面上注意到了它.CSS和图像未加载(它们位于内容目录下).将IUSR添加到具有读取权限的文件夹中为我们修复了它.


Rah*_*oni 1

尝试直接浏览图像文件,看看匿名用户是否会出现这种情况。在 IIS 7 中,有一种方法可以直接从 UI 授权匿名用户 [如果 web.config 不存在,则会创建 web.config]。

文件夹 -> .NET 授权规则 -> 添加允许规则