Asp.net IIS虚拟目录

Asp.net IIS虚拟目录,asp.net,iis,Asp.net,Iis,我尝试通过我的global.asax发送PDF文件以检查访问权限 我将以下内容添加到我的web.config: <system.webServer> <validation validateIntegratedModeConfiguration="false"/> <modules runAllManagedModulesForAllRequests="true" /> </system.webServer> 我删除了httpHandle

我尝试通过我的
global.asax
发送PDF文件以检查访问权限

我将以下内容添加到我的web.config:

<system.webServer>
  <validation validateIntegratedModeConfiguration="false"/>
  <modules runAllManagedModulesForAllRequests="true" />
</system.webServer>
我删除了
httpHandlers
,并由此得到一个错误:

Could not load file or assembly 'Pipeline' or one of its dependencies. The system cannot find the file specified. 

因此,我认为问题在于
`type=“Pipeline.TimeHandler,Pipeline”
不起作用。但是我应该在那里配置什么来使用standart IIS管道来执行
应用程序\u AuthenticateRequest

您正在混合集成模式和经典模式配置。似乎您的IIS是在集成模式下配置的(在system.webServer中有设置),而您在经典模式(system.web)下注册HTTP处理程序

尝试将其添加到system.webServer配置部分:

<handlers>
  <add name="SampleHandler" verb="*" path="*.pdf" type="Pipeline.TimeHandler, Pipeline" />
</handlers>

如果这不是您的问题,请提供更多信息:

  • 您使用什么版本的IIS
  • 您使用集成模式还是经典模式
  • 请求是否会转移到您的处理程序?它是否运行应用程序_BeginRequest
  • 您是否在IIS中安装了任何非标准ISAPI模块
以及你能得到的任何其他有用的信息

请注意,在经典模式下,还必须将ASP.NET ISAPI模块设置为处理所有请求(默认情况下,它仅处理到*.aspx、*.asmx等的请求),或者至少添加*.pdf

编辑:哦,所以你实际上没有自己的PDF处理程序?在这种情况下,您只需要确保对静态文件运行身份验证(runAllManagedModulesForAllRequests应该足够了),并且您必须确保用户确实需要一些权限来读取您的文件。您必须通过配置拒绝访问目录中的文件。例如,您可以将其添加到文件所在目录的web.config中:

<system.web>
    <authorization>
        <deny users="?" />
    </authorization>
</system.web>

这基本上是说:拒绝所有匿名(即未登录)用户的访问。

从技术上讲,答案是正确的


在我的具体案例中,虚拟目录是一个虚拟应用程序,它有自己的管道和所有东西。所以我就删掉了,并将其添加为虚拟目录,这将按预期工作。

运行所有ManagedModules集合请求应该足够了
但是与模拟和其他应用程序开始请求和应用程序身份验证请求时无法获得的内容相结合executed@Sirl33tname您是否尝试添加授权配置I提到?否则,它将在不调用任何授权的情况下通过,因为默认设置是“允许所有人”。是的,我从一开始就在web.config中有这个设置。我已经编写了自己的处理程序,但如果我使用
type=“Handler.PdfHandler,ProjektName”加载它们
我收到一个错误:
无法加载文件或程序集“ProjektName”或其依赖项之一。系统找不到指定的文件。
@Sirl33tname如果您正在编写网站(而不是web项目),程序集名称可能会出错。尝试只使用短名称,而不使用程序集名称(即仅使用“Handler.PdfHandler”)。
<handlers>
  <add name="SampleHandler" verb="*" path="*.pdf" type="Pipeline.TimeHandler, Pipeline" />
</handlers>
<system.web>
    <authorization>
        <deny users="?" />
    </authorization>
</system.web>