如何使用 ASP.NET Web 配置拒绝访问文件,而不仅仅是本地访问?

发布于 2024-10-19 23:06:01 字数 752 浏览 2 评论 0原文

我的 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 文件。所以:

我无法访问: http://www.example.com/folder

但我可以查看:http://www.example.com/folder/myfile.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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

小嗲 2024-10-26 23:06:01

在 ASP.Net 获取 PDF 文件之前,IIS 可能已经开始提供该文件了。假设您使用的是 .Net 4.0,请将其添加到您的 Web.config 文件中以强制所有请求流向 ASP.Net:

<system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/>
<system.webServer>

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:

<system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/>
<system.webServer>
杯别 2024-10-26 23:06:01

您需要让 IIS 将 PDF 请求转发到 ASP.NET 才能完成您的工作。

示例文章:

引用文章的相关部分:

将 PDF 文件挂接到 Web 上
使用 IIS 的应用程序

测试自定义 HTTP 很容易
Visual Studio 内置的处理程序
网络服务器,卡西尼号,因为所有
文档类型会自动
在网络应用程序中处理
默认。然而,IIS 需要一些
调整。 IIS 将忽略发送
对静态文档的请求,例如
PDF 文件,到 ASP .NET Web
应用程序,而是简单地
满足请求。我们需要
拦截请求并允许我们
Web 应用程序首先处理它。
为此,我们需要设置 IIS
PDF 文件 (*.pdf) 的映射,告诉您
IIS 将请求发送到我们的网站
应用。

在 IIS 5/6 中

  1. 打开 Internet 信息服务 (IIS) 管理器。
  2. 对于您的 Web 应用程序,在“目录”选项卡上,单击“配置”
    按钮。
  3. 在“应用程序配置”窗口的“映射”选项卡上,
    单击添加按钮添加新的
    应用程序扩展映射。
  4. 在“可执行文件”字段中,输入:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll

  5. 在扩展名字段中,输入:*.pdf

  6. 选择所有动词并选中“脚本引擎”并检查该文件
    存在。

在 IIS 7 中

  1. 打开 Internet 信息服务 (IIS) 管理器。
  2. 打开处理程序映射设置。
  3. 添加托管处理程序。
  4. 对于请求路径,输入:*.pdf
  5. 对于类型,选择应用程序的自定义 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 版本上,但应该是
与添加文档映射类似
到网络应用程序。一次
已配置,请求 PDF 文档
将被发送到网络应用程序,
您可以在哪里处理请求
在允许访问之前。

记住,在 Visual Studio 的内置中
Web 服务器,模块映射不是
必需的,因为所有文件请求都会进行
通过网络应用程序,使其
轻松测试自定义 http 处理程序。

由于您不使用自定义处理程序,因此只需将处理程序设置为 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:

Hooking PDF Files Into the Web
Application with IIS

It was easy testing the custom HTTP
handler in Visual Studio's built-in
web server, Cassini, since all
document types are automatically
processed in the web application by
default. However, IIS needs a few
tweaks. IIS will ignore sending
requests for static documents, such as
PDF files, to the ASP .NET web
application and will instead simply
serve the request. We need to
intercept the request and allow our
web application to process it first.
To do this, we'll need to setup an IIS
mapping for PDF files (*.pdf), telling
IIS to send the request to our web
application.

In IIS 5/6

  1. Open the Internet Information Services (IIS) Manager.
  2. For your web application, on the Directory tab, click the Configuration
    button.
  3. On the Mappings tab of the Application Configuration window,
    click the Add button to add a new
    Application Extension Mapping.
  4. In the Executable field, enter: C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll

  5. In the Extension field, enter: *.pdf

  6. Select All Verbs and checkmark Script Engine and Check that file
    exists.

In IIS 7

  1. Open the Internet Information Services (IIS) Manager.
  2. Open the Handler Mappings setting.
  3. Add a Managed Handler.
  4. For Request Path enter: *.pdf
  5. For Type, select the custom HTTP handler for the application.

A shortcut to this in IIS 7, as
mentioned above in the article, is to
define the mapping in the web.config
within the system.webServer handlers
section, as follows:

<system.webServer> 
... 
<handlers> 
<add name="PDF" path="*.pdf" verb="*" type="CustomFileHandlerDemo.Handlers.FileProtectionHandler" resourceType="Unspecified" /> 
... 
</handlers> 
</system.webServer>

The above code in the web
application's web.config will
automatically add the entry into the
IIS 7 Handler Mappings section.

The above steps may differ depending
on your version of IIS, but should be
similar for adding a document mapping
to the web application. Once
configured, requests for PDF documents
will be sent to the web application,
where you can process the request
before allowing access.

Remember, in Visual Studio's built-in
web server, module mappings are not
required, as all requests for files go
through the web application, making it
easy to test the custom http handler.

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文