如何使用 ASP.NET Web 配置拒绝访问文件,而不仅仅是本地访问?
我的 ASP.NET Web 配置文件有问题。我想拒绝某些用户或角色访问特定的 PDF 文件。我正在使用 ASP.NET 会员和角色管理系统。所以我将这行代码添加到 Web.config 文件中:
<location path="myfile.pdf">
<system.web>
<authorization>
<allow roles="admin"/>
<deny users="*"/>
</authorization>
</system.web>
</location>
并将其放入该文件所在的目录中。现在,当我在本地系统中运行该项目时,我无法使用“admin”角色登录来访问 PDF 文件。但是当我在网络服务器上发布项目时,我无法浏览该文件夹,但当我浏览 PDF 文件的完整路径时,我可以查看 PDF 文件。所以:
I have a problem with ASP.NET web configuration file. I want to deny some users or roles to accessing a specific PDF file. I am using ASP.NET membership and role management system. So I added this lines of codes to a Web.config file:
<location path="myfile.pdf">
<system.web>
<authorization>
<allow roles="admin"/>
<deny users="*"/>
</authorization>
</system.web>
</location>
and put it to the directory witch the file is included in it. Now when I run the project in local system I can not access the PDF file wile I login with "admin" role. But when I publish the project on the web server I can not brows the folder but I can view the PDF file when I browse complete path to the PDF file. So:
I can not access: http://www.example.com/folder
but I can view: http://www.example.com/folder/myfile.pdf
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
在 ASP.Net 获取 PDF 文件之前,IIS 可能已经开始提供该文件了。假设您使用的是 .Net 4.0,请将其添加到您的 Web.config 文件中以强制所有请求流向 ASP.Net:
IIS is probably serving the PDF file before ASP.Net gets its hands on it. Assuming you're using .Net 4.0, add this to your Web.config file to force all requests to flow through to ASP.Net:
您需要让 IIS 将 PDF 请求转发到 ASP.NET 才能完成您的工作。
示例文章:
引用文章的相关部分:
由于您不使用自定义处理程序,因此只需将处理程序设置为 ASP.NET 默认处理程序即可。这与 IIS 中已设置为“.aspx”的处理程序相同。
You need to make IIS forward PDF requests to ASP.NET for your stuff to take place.
Example Article:
Quoting relevant part from article:
Because you don't use custom handler, you just need to set the handler to ASP.NET default handler. This is the same handler set to ".aspx" already in IIS.