gpt4 book ai didi

configuration - 错误 : IIS7 managed requests

转载 作者:行者123 更新时间:2023-12-04 18:17:13 24 4
gpt4 key购买 nike

(我不知道我是否也应该将这个问题发布到 ServerFault,因为它是关于 IIS 配置的?)

在 IIS7 中,我们可以通过以下方式告诉模块为托管内容运行(从而加速静态内容服务):

<modules>
...
<add name="WhateverName"
type="WhateverType"
preCondition="managedHandler"
...
</modules>

但。只要请求的 URL 中还有一个文件名(带扩展名),它就可以正常工作。如果省略它,IIS7 会认为您需要静态内容,并且托管模块将不会运行。
http://localhost/ <-- this one will skip managed handlers
http://localhost/default.aspx <-- this one will run them

如果我手动设置IIS7默认文档,那么第一个是 default.aspx ,我看不出区别没有区别。对我来说,这看起来、走路和听起来都像是一只 bug 。 这是一个错误! 为什么?因为当我请求第一个请求时,它是一个托管请求,不是吗。当然是的。但 IIS7 将其视为静态请求。所以? 这是一个错误 .此请求应被视为受管理的。

如何说服 IIS7 为没有文件名的 URL 请求运行托管处理程序?

帮助思考

让我帮你思考一下:如果我重新排序 system.webServer/handlers ,我肯定可以解决这个问题。在最后 StaticFile 之前指向 StaticFileModule 的处理程序, DefaultDocumentModuleDirectoryBrowsingModule我应该在目录请求上运行集成的 asp.net 处理程序。或者编写我自己的处理程序,它将默认文档附加到任何目录请求。我很确定其中之一应该可以解决它。但是我将如何配置/开发它?

最佳答案

问题在于请求处理顺序。 IIS7 按照 IIS 的 Handlers 配置元素指定的顺序处理请求。默认情况下,IIS 配置的 Handlers 元素包含

<add name="StaticFile" path="*" verb="*" modules="StaticFileModule,DefaultDocumentModule,DirectoryListingModule" resourceType="Either" requireAccess="Read" />

在处理程序的末尾。因此,与任何先前指定的处理程序不匹配的所有请求都将由该处理程序处理(也包括文件夹请求)。

您可以使用 删除所有默认处理程序清除 中的元素处理程序 配置并指定您自己的请求处理顺序。

我建议将默认 IIS 处理程序配置 (C:\Windows\System32\inetsrv\config\applicationHost.config) 复制到您的 Web 配置,最后不使用 StaticFile 处理程序。

然后,您应该为每种静态内容类型(jpg、gif、js、css)添加特定的静态内容处理程序。
<add name="StaticFile-swf" path="*.swf" verb="*" modules="StaticFileModule" resourceType="File" requireAccess="Read" />
<add name="StaticFile-png" path="*.png" verb="*" modules="StaticFileModule" resourceType="File" requireAccess="Read" />
<add name="StaticFile-gif" path="*.gif" verb="*" modules="StaticFileModule" resourceType="File" requireAccess="Read" />
<add name="StaticFile-jpg" path="*.jpg" verb="*" modules="StaticFileModule" resourceType="File" requireAccess="Read" />
<add name="StaticFile-css" path="*.css" verb="*" modules="StaticFileModule" resourceType="File" requireAccess="Read" />
<add name="StaticFile-js" path="*.js" verb="*" modules="StaticFileModule" resourceType="File" requireAccess="Read" />

之后管理文件夹请求的处理程序(PageHandlerFactory)。
<add name="PageHandlerFactory-Folders" path="*" verb="*" type="System.Web.UI.PageHandlerFactory" modules="ManagedPipelineHandler" resourceType="Unspecified" requireAccess="Read" allowPathInfo="false" preCondition="integratedMode" />

最后,您还应该添加 StaticFile 处理程序。

Here是一个例子。

关于configuration - 错误 : IIS7 managed requests,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1267409/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com