- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
IIS Express 正在生成 403.14 Forbidden
当原本通过 ASP.NET URL 路由处理的 URL 恰好对应于我的 ASP.NET 项目中的物理文件夹时,会出现错误。 (该文件夹只包含代码,巧合的是文件夹名称恰好与页面的 URL 匹配;我的 URL 结构是由数据库动态确定的,用户可以编辑该结构,所以虽然我可以重命名我的项目文件夹,一般来说我无法阻止这种碰撞的发生。)
这似乎正在发生,因为 DirectoryListingModule
介入处理请求,然后由于目录浏览被禁用而立即失败。我尝试删除这个:
<system.webServer>
<handlers>
<remove name="StaticFile" />
<add name="StaticFile" path="*" verb="*"
modules="StaticFileModule" resourceType="Either" requireAccess="Read" />
</handlers>
</system.webServer>
这会删除默认的 StaticFile
处理程序配置,其中有 modules="StaticFileModule,DefaultDocumentModule,DirectoryListingModule"
,并将其替换为仅提供我想要的功能的配置。 (我想要静态文件服务,但我不需要此应用程序中的目录列表或默认文档。)但效果似乎是,当我点击时,IIS 会生成一个完全空的(0 字节)响应(状态为 200)有问题的页面。
接下来,我尝试配置 StaticFile
处理程序仅处理我想要提供的特定物理文件夹:
<system.webServer>
<handlers>
<remove name="StaticFile" />
<add name="StaticFileCss" path="style/*.css" verb="*"
modules="StaticFileModule" resourceType="Either" requireAccess="Read" />
<add name="StaticFileScripts" path="Scripts/*" verb="*"
modules="StaticFileModule" resourceType="Either" requireAccess="Read" />
</handlers>
</system.webServer>
但是当我点击有问题的 URL 时,会生成 404.4 - Not found
错误,消息为 The resource you are looking for does not have a handler associated with it.
。 (错误页面上的详细错误信息表明我们处于 IIS Web Core
模块中,在 MapRequestHandler
通知期间,处理程序为 Not yet determined
,并且有一个错误代码 0x80070002
,这是一个 COM HRESULT对应于 Win32 ERROR_FILE_NOT_FOUND
错误。)
令人费解的是,它甚至懒得去询问 ASP.NET 是否有相应的处理程序。 IIS 似乎完全自行决定肯定不存在处理程序。
仅当存在与 URL 匹配的文件夹时才会发生这种情况。所有其他具有动态确定的 URL 的资源都可以正常工作 - IIS 向 ASP.NET 请求处理程序,ASP.NET 的路由机制正常运行,如果 URL 对应于我动态定义的页面之一,则一切都可以正常工作。只是物理文件夹的存在阻止了这一切的工作。
我可以看到是 IIS 执行此操作,因为我收到了此 404 的 IIS 样式错误页面之一,并且它们具有与 ASP.NET 生成的 404 非常不同的独特设计。 (如果我尝试导航到既不对应于物理文件夹也不对应于动态资源的 URL,我会得到 ASP.NET 生成的 404 页面。所以通常情况下,IIS 肯定会将请求移交给 ASP.NET,但是 IIS肯定会妨碍这些有问题的资源。)
我尝试将其添加到我的 <system.WebServer>
中,如果问题是 IIS 确定与物理文件夹对应的请求不满足 managedHandler
前提条件:
<modules runAllManagedModulesForAllRequests="true">
但这似乎没有帮助 - 它仍然没有涉及与物理文件夹对应的 URL 的 ASP.NET 路由。无论如何,这都不是最理想的 - 我不希望为我肯定想要作为静态内容处理的内容运行托管处理程序。我实际上希望将 ASP.NET URL 路由用作后盾 - 我只希望它在 URL 绝对不引用静态内容时发挥作用。
我不明白为什么 ASP.NET 甚至不询问 ASP.NET 在这种情况下的想法。为什么它在 MapRequestHandler
期间不调用 ASP.NET如果有一个物理文件夹恰好与该 URL 相对应?
最佳答案
当找到与路由具有相同 URL 的物理文件或文件夹时,路由将不会处理请求并会提供物理文件。
不过,您可以通过将 RouteCollection 对象中的 RouteExistingFiles 属性设置为 true 来更改此行为。
查看 MSDN 页面 Scenarios when routing is not applied
关于asp.net - 物理文件夹破坏了 IIS Express 上的 ASP.NET URL 路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17611158/
我的 Angular 应用程序中有以下代码。 app.config(function($routeProvider, $locationProvider) { $locationProvider
这就是我在 Backbone 中进行路由的方式,在决定调用哪个外部模板之前,首先获取路由及其参数。我觉得这很灵活。 var Router = Backbone.Router.extend({
我是 MEAN 堆栈领域的新手,我对 Angular 路线有一些疑问。为什么我应该在客户端重新创建后端已经用express.js创建的路由,有什么好处?这是 Angular.js 工作的唯一方式吗?我
我可以设置一条从根级 URL 进行映射的路由吗? http://localhost:49658/ 我使用的是 VS2010 内置 Web 服务器。 尝试使用空白或单斜杠 URL 字符串设置路由不起作用
我有一个现有的应用程序 Rails 3.2.17和 Angular js。我想在现有应用程序中包含 Activeadmin。 我遵循了 active-admin post from ryan bate
我正在关注 this Angular 中的路由教程,它就是行不通。当我使用“comp”选择器放置它的 HTML 代码时,它可以工作,但是当我尝试使用路由器 socket 对其进行路由时,它只显示来自
多个路由通过路由器进行管理。 前端路由的概念和原理 (编程中的) 路由 (router)就是一组 key-value 对应关系,分为:后端路由和前端路由 后端路由
服务器需要根据不同的URL或请求来执行不一样的操作,我们可以通过路由来实现这个步骤。 第一步我们需要先解析出请求URL的路径,我们引入url模块。 我们来给onRequest()函数加上一些逻辑
我正在为 Angular 6 应用程序设置路由,我想要一条可以匹配可变数量的段的路由。目前我有一个看起来像这样的路由配置: const routes: Routes = [ { path: '',
用户将点击电子邮件中的链接,如下所示: do-something/doSomething?thing=XXXXXXXXXXX 如何在路由器中定义路由并订阅获取参数? 目前在我的路由器中: {
我有一个具有以下结构的 Angular (4) 应用程序: app.module bi.module auth.module 路由应该是: / -> redirect to /home /
我正在使用 WCF 4 路由服务,并且需要以编程方式配置服务(而不是通过配置)。我见过的这样做的例子很少见,创建一个 MessageFilterTable 如下: var fi
我需要创建一个“路由”服务。我正在尝试使用 .Net 的 System.ServiceModel.Routing.IRequestReplyRouter我可以让它只在 HTTP 模式下工作,而不是在
例如,链接: /shop/phones/brend/apple/display/retina/color/red 在哪里: phones - category alias brend -
非常基本的问题,我很惊讶我找不到答案。我刚刚开始研究 django 并进行了开箱即用的安装。创建了一个项目并创建了一个应用程序。 urls.py 的默认内容很简单: urlpatterns = [
我已经实现了 WCF 路由服务;我还希望该服务(或类似的 WCF 服务)以规定的和统一的(与内容无关的)方式转换有效负载。例如,有效负载将始终采用 Foo 的形式。我想把它作为Bar在所有情况下。我很
我想使用 $locationProvider.html5Mode(true); 在 angularJs 中删除 # 哈希;但这导致所有 URL 都通过 angularJs 进行路由。我如何设置它以便只
我要听导航开始事件并判断其是否url属性是 /logout . 如果是这样,路由器应该停止触发连续事件,例如 路线已识别 , GuardsCheckStart , ChildActivationSta
有人可以解释我如何使用参数路由到 URL 吗? 例如id 喜欢点击产品并通过Id打开产品的更多信息。 我的路由到目前为止... angular.module('shop', ["cus
我目前正在 Angular: 7.2.14 上构建,想看看是否有人可以解释如何使用路由保护、共享服务或其他方式等重定向查询参数。 我试图解决的问题要求查询参数从根 Uri 路径传入,然后将路由重定向到
我是一名优秀的程序员,十分优秀!