【问题标题】:Exclude web config handler on specific directory排除特定目录上的 Web 配置处理程序
【发布时间】:2020-12-02 05:16:20
【问题描述】:

带有点的 URL 会生成服务器错误 404(例如 www.mysite.com/a.b)。一个解决方案是编辑我的站点的 HTTP 处理程序,使用一个新的处理程序来查找特定的路径条件。如果请求匹配,它会正确发送到 .NET 进行处理。处理程序如下所示。

<add name="ApiURIs-ISAPI-Integrated-4.0"
     path="*"
     verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS"
     type="System.Web.Handlers.TransferRequestHandler"
     preCondition="integratedMode,runtimeVersionv4.0" />

因为我使用 path="*",所有静态文件(如 .css 或 .js)都会失败并被阻止。我的静态文件位于 /Content 目录中。有没有办法从这里排除目录?

【问题讨论】:

  • 你读过this吗?

标签: asp.net-mvc asp.net-mvc-4 iis asp.net-mvc-5


【解决方案1】:

尝试在要删除处理程序的目录中添加以下 web.config 文件:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <handlers>
            <remove name="ApiURIs-ISAPI-Integrated-4.0" />
        </handlers>
    </system.webServer>
</configuration>

进行更改后刷新网站。

【讨论】:

  • 这对我不起作用。任何网页都会变成没有内容的空(它们都是空白页面)。
  • @Jelle 另一个选项是您可以在根配置文件中使用位置标签:&lt;location path="upload" allowOverride="false"&gt; &lt;system.webServer&gt; &lt;handlers accessPolicy="Read"&gt; &lt;clear /&gt; &lt;remove name="StaticFile" path="*" verb="*" modules="StaticFileModule,DefaultDocumentModule,DirectoryListingModule" resourceType="Either" requireAccess="Read" /&gt; &lt;/handlers&gt; &lt;/system.webServer&gt; &lt;/location&gt;
  • @Jelle 通过使用位置标签,它将配置设置应用于您在路径中提到的指定文件夹或文件。
  • 我对您的定位解决方案感到困惑。位置路径正在上传,这应该是内容吗?还有路径、动词、模块和 requireAccess 参数,但 remove 不允许这些参数,只有 add 允许。您还将处理程序名称更改为 StaticFile,这让我更加困惑。
  • @Jelle cmets 就是一个例子。您可以根据您的要求进行设置。在路径中设置您的文件夹名称和路径,在删除名称处理程序中设置您的处理程序名称。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-04-02
  • 1970-01-01
  • 2022-11-27
  • 1970-01-01
  • 1970-01-01
  • 2016-08-15
  • 1970-01-01
相关资源
最近更新 更多