我尝试将我的PDF文件通过我的路由global.asax
以检查访问权限。
我为此添加到我的web.config中:
<system.webServer>
<validation validateIntegratedModeConfiguration="false"/>
<modules runAllManagedModulesForAllRequests="true" />
</system.webServer>
和
<system.web>
<httpHandlers>
<add verb="GET" path="*.pdf" type="Pipeline.TimeHandler, Pipeline" />
</httpHandlers>
</system.web>
除非我的文件位于IIS虚拟目录上,否则此方法工作正常。
要求的信息:
您使用哪个版本的IIS?Microsoft-IIS / 7.5
您使用集成模式还是经典模式?它以集成模式运行。
请求是否全部转移到您的处理程序?我实际上没有处理程序,只是不想使用Integreated处理程序。
它运行Application_BeginRequest吗?不,它甚至都没有击中Application_BeginRequest
IIS中是否安装了任何非标准的ISAPI模块?不,我认为不是。
我将web.config编辑为:
<system.webServer>
<handlers>
<add name="ScriptResource.axd_GET,HEAD" path="ScriptResource.axd" verb="GET,HEAD" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" preCondition="integratedMode,runtimeVersionv2.0" />
<add name="*_AppService.axd_*" path="*_AppService.axd" verb="*" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" preCondition="integratedMode,runtimeVersionv2.0" />
<add name="*.asmx_*" path="*.asmx" verb="*" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" preCondition="integratedMode,runtimeVersionv2.0" />
<add name="PdfHandler" verb="*" path="*.pdf" type="Pipeline.TimeHandler, Pipeline" />
</handlers>
<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"
不起作用。但是我应该在那里配置什么才能使用标准的IIS pipline来Application_AuthenticateRequest
执行该操作。
从技术上讲,Lu的答案是正确的。
在我的特定情况下,事实证明虚拟目录是一个具有自己的管道和所有内容的虚拟应用程序。因此,我只是删除了它,并将其添加为虚拟目录,这可以按预期工作。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句