Asp.net FormsA文件夹的身份验证在生产服务器上不起作用

Asp.net FormsA文件夹的身份验证在生产服务器上不起作用,asp.net,iis,Asp.net,Iis,我在我的Win8/VS2012机器上开发了一个ASP.NET 2.0 web应用程序(但使用的是.NET2.0而不是4.0)。我希望使用表单身份验证来保护对多个文件夹的直接访问,例如存储在Content/Documents文件夹中的特定角色的PDF文件。它可以在我的开发机器上使用下面的web.config文件,如果我直接键入PDF的URL,我会被重定向到登录页面 但是,当将整个解决方案复制到生产服务器(安装了.NET 2和4的windows server 2003R2 sp1)时,文件可以直接访

我在我的Win8/VS2012机器上开发了一个ASP.NET 2.0 web应用程序(但使用的是.NET2.0而不是4.0)。我希望使用表单身份验证来保护对多个文件夹的直接访问,例如存储在Content/Documents文件夹中的特定角色的PDF文件。它可以在我的开发机器上使用下面的web.config文件,如果我直接键入PDF的URL,我会被重定向到登录页面

但是,当将整个解决方案复制到生产服务器(安装了.NET 2和4的windows server 2003R2 sp1)时,文件可以直接访问,并且似乎表单身份验证不起作用

如何在服务器上对此进行调查? 我的配置有什么问题

注意:角色是在登录时分配的,没有角色提供程序(如internet和stackoverflow上的许多文章所示),我想我这样做是正确的,因为它在我的开发机器上工作

注2:我注意到一件奇怪的事情,即在win2003R2服务器上的IIS管理工具中,配置窗口与我在web.config文件中的配置窗口不一致。当我在IIS管理器中右键单击web应用程序属性,转到ASP.NET选项卡,转到编辑配置,然后转到不同位置的授权选项卡时,它似乎只表示允许*,而配置文件显然具有拒绝*。是否可能在该服务器上不支持此类型的配置文件(但也不会生成任何错误)

提前Thx

懦夫


您的配置没有问题。相反,静态文件(JPG、CSSE、PDF)由iis处理,而不涉及asp.net管道。这意味着当您请求pdf文件时,您的授权规则将被忽略

要解决此问题,您可以使用一个aspx页面来获取一个参数,该参数说明应该下载哪个文件,或者配置应用程序以通过asp.net管道运行一些(或所有)静态文件。让所有请求通过asplnet的最简单方法是设置

runAllManagedModulesForAllRequests="true" 

在web.config的modules部分中。

我不确定自己是否准确地记得:是否在iis中将脚本/webconfg作为应用程序创建的文件夹?runAllManagedModulesForAllRequests似乎是个不错的主意,但是,我更新了配置如下,并添加了额外的元素,但是,这些文件仍然可以访问:-(…我也在生产机器上做了同样的更新,并在那里进行了测试,以确保它不依赖于系统,但在应用程序的web.config文件中添加语句也没有任何区别。更重要的是,我更新了web.config以拒绝根上的所有用户,在这种情况下,我仍然得到e静态文件,而所有动态文件被重定向到登录页…我猜不是所有请求都通过ASP.NET管道,即使该语句是应用程序的web.config的一部分。将本地web.config放入pdf文件夹,其中配置仅包含授权部分如何?这是更好的做法a在全局web.config中拥有所有内容。抱歉,但这对我来说似乎不是一个好的解决方案。我现在将使用一个aspx页面进行测试,该页面返回来自外部无法直接访问的位置的文件…Thx用于响应,但runAllManagedModulesForAllRequests不起作用。似乎是正确的解决方案不过
runAllManagedModulesForAllRequests="true"