我有一个网站,它使用表单身份验证和主页面上的图像,该图像在发布到主机Web服务器时不会显示,但是在我的本地计算机上托管时会显示。该站点在4.0框架上使用ASP.Net Web表单,并且两个环境都使用IIS 7.有谁知道为什么这在发布到服务器时不起作用?如果我转到服务器上的http://serverwebsiteaddr/images/logo_myworkplace.jpg,它会将我重定向到登录页面,但如果我转到我的开发框http://devmachinenameaddr/images/logo_myworkplace.jpg上的类似网址,图像会正确显示
这是我的配置文件:
<system.web>
<authentication mode="Forms">
<forms loginUrl="~/Account/login.aspx" name=".ASPXFORMSAUTH" slidingExpiration="true"/>
</authentication>
<authorization>
<deny users="?"/>
</authorization>
</system.web>
<location path="images/logo_myworkplace.jpg">
<system.web>
<authorization>
<allow users ="*" />
</authorization>
</system.web>
服务器配置:IIS 7.5,Windows Server 2008 R2, 开发盒:IIS 7.5,Windows 7企业版
答案 0 :(得分:0)
将web.config文件添加到images目录并将以下内容放入其中。基本上,您希望关闭该目录的身份验证。这是未经测试的,顺便说一句。不确定它是否会起作用。
<configuration>
<system.web>
<authentication mode="Forms" />
</system.web>
</configuration>
答案 1 :(得分:0)
您可能在IIS上有一个passthrough设置,它通过.NET HttpHandler路由所有文件。这对于保护成员仅用于目录中所有内容的内容非常有用。如果为JPG文件启用了HttpHandler,它将在传递文件之前首先从web.config运行身份验证规则。您的本地方框可能没有设置。
答案 2 :(得分:0)
虽然顶级文件夹具有保护其文件的特定授权,但我可以使用内部web.config为其子文件夹设置另一个授权。所以我可以毫无问题地在这个子文件夹上看到.aspx页面。
<?xml version="1.0"?>
<configuration>
<system.web>
<identity impersonate="true" />
<authorization>
<allow users="*" />
<deny users="*" />
</authorization>
</system.web>
</configuration>
答案 3 :(得分:0)
在黑暗中拍摄:
可能是图像子文件夹被映射到另一个未处于集成模式的应用程序池吗?