2011-05-04 205 views
0

我有一个网站,使用表单身份验证与母版页上的图像,当发布到主机Web服务器时不会显示,但是当它在我的本地机器上托管时会显示。该网站在4.0框架上使用ASP.Net Web窗体,并且这两个环境都使用IIS 7.有人知道为什么在发布到服务器时这不起作用吗?如果我去http://serverwebsiteaddr/images/logo_myworkplace.jpg服务器重定向我到登录页面,但如果我去类似的网址在我的dev的框图像显示正确http://devmachinenameaddr/images/logo_myworkplace.jpgASP.Net IIS位置路径授权问题

这里是我的配置文件:

<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企业版

+1

它可能是目录权限? – tomasmcguinness 2011-05-04 15:08:01

+0

我检查并且IIS_IUSRS在这两个系统上对这些目录具有读取权限。有没有服务器设置的地方会导致IIS忽略位置路径配置设置? – sep15ms 2011-05-04 15:14:04

+0

尝试在路径中使用绝对URL,即/images/logo_myworkplace.jpg – tomasmcguinness 2011-05-04 15:16:23

回答

0

添加一个web.config文件到您的图像目录,并把跟随着克在它。基本上你想关闭那个目录的认证。这是未经测试的,顺便说一句。不知道它是否会起作用。

<configuration> 
    <system.web> 
    <authentication mode="Forms" /> 
    </system.web> 
</configuration> 
+0

我在images目录中创建了web.config,但如果在登录之前尝试访问它,仍然被重定向到登录页面。 – sep15ms 2011-05-04 15:18:42

0

您可能在IIS上有一个传递设置,通过.NET HttpHandler传递所有文件。这对保护会员只有目录中的所有内容都很有用。如果为JPG文件启用了HttpHandler,那么在传递文件之前,它将首先从web.config运行身份验证规则。你的本地盒子可能没有设置。

+0

我检查并没有看到任何处理JPG文件的处理程序。为了验证我的图片文件夹中创建一个default.html中网页,还是无法查看服务器上的页面我更新web配置后<位置路径=“图像”> <授权> <允许用户= “*”/> sep15ms 2011-05-04 15:37:41

+1

通配符设置如何?似乎IIS在处理文件之前正在提供认证规则。 – Josh 2011-05-04 15:57:15

0

虽然顶级文件夹具有特定的授权以保护其文件,但我可以使用内部web.config为其子文件夹设置另一个授权。所以我可以看到这个子文件夹上的.aspx页面没有问题。

<?xml version="1.0"?> 
<configuration> 
    <system.web> 
     <identity impersonate="true" /> 
     <authorization> 
     <allow users="*" /> 
     <deny users="*" /> 
     </authorization> 
    </system.web> 
</configuration> 
0

一个瞎猜:

难道images子文件夹映射到另一个应用程序池,是不是在集成模式?