我的ASP.NET Web配置文件有问题。我想拒绝某些用户或角色访问特定的PDF文件。我正在使用ASP.NET成员资格和角色管理系统。所以我将这行代码添加到Web.config文件中:
<location path="myfile.pdf">
<system.web>
<authorization>
<allow roles="admin"/>
<deny users="*"/>
</authorization>
</system.web>
</location>
并将其放入文件所在的目录中。现在,当我在本地系统中运行项目时,我无法访问PDF文件,而是以“admin”角色登录。但是当我在Web服务器上发布项目时,我无法浏览文件夹,但是当我浏览PDF文件的完整路径时,我可以查看PDF文件。所以:
答案 0 :(得分:11)
IIS可能在ASP.Net获得它之前提供PDF文件。假设您正在使用.Net 4.0,请将其添加到您的Web.config文件中以强制所有请求流向ASP.Net:
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
<system.webServer>
答案 1 :(得分:2)
您需要让IIS将PDF请求转发给ASP.NET才能完成您的工作。
示例文章:
引用文章中的相关部分:
将PDF文件挂钩到Web中 IIS的应用程序
很容易测试自定义HTTP Visual Studio内置的处理程序 网络服务器,卡西尼,因为所有 文档类型是自动的 在Web应用程序中处理 默认。但是,IIS需要一些 调整。 IIS将忽略发送 请求静态文档,例如 PDF文件,到ASP .NET网站 申请,而不是简单 满足要求。我们要 拦截请求并允许我们的 Web应用程序首先处理它。 为此,我们需要设置IIS 映射PDF文件(* .pdf),告诉 IIS将请求发送到我们的网站 应用。
在IIS 5/6中
- 打开Internet信息服务(IIS)管理器。
- 对于Web应用程序,在“目录”选项卡上,单击“配置” 按钮。
- 在“应用程序配置”窗口的“映射”选项卡上, 单击“添加”按钮添加新项 应用扩展映射。
在“可执行文件”字段中,输入:C:\ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ aspnet_isapi.dll
在“扩展名”字段中,输入:* .pdf
- 选择所有动词并勾选脚本引擎并检查该文件 存在。
醇>在IIS 7中
- 打开Internet信息服务(IIS)管理器。
- 打开“处理程序映射”设置。
- 添加托管处理程序。
- 对于请求路径,请输入:* .pdf
- 对于Type,选择应用程序的自定义HTTP处理程序。
醇>IIS 7中的快捷方式,如 在文章上面提到的,是 在web.config中定义映射 在system.webServer处理程序中 部分,如下:
<system.webServer>
...
<handlers>
<add name="PDF" path="*.pdf" verb="*" type="CustomFileHandlerDemo.Handlers.FileProtectionHandler" resourceType="Unspecified" />
...
</handlers>
</system.webServer>
网络上的上述代码 应用程序的web.config将 自动将条目添加到 IIS 7处理程序映射部分。
上述步骤可能有所不同 在您的IIS版本上,但应该是 类似于添加文档映射 到Web应用程序。一旦 已配置,请求PDF文档 将被发送到网络应用程序, 您可以在哪里处理请求 在允许访问之前。
请记住,在Visual Studio的内置中 Web服务器,模块映射不是 所有文件请求都是必需的 通过Web应用程序,制作它 易于测试自定义http处理程序。
因为您不使用自定义处理程序,所以您只需将处理程序设置为ASP.NET默认处理程序。这与IIS中已经设置为“.aspx”的处理程序相同。