文件请求不会进入OWIN(runAllManagedModulesForAllRequests为true)

时间:2017-03-23 19:17:41

标签: asp.net owin iis-express

我突然无法让OWIN处理对它们有静态文件扩展名的请求(例如mysite.com/index.html)。我在我的web.config中设置了Microsoft.Owin.Host.SystemWeb,我安装了PM> Install-Package Microsoft.Owin.Host.SystemWeb包。

我创建了一个MVCE来测试这个以下步骤

  1. 创建一个新的VS项目。键入ASP.NET,清空项目
  2. Startup.cs
  3. 添加Startup.cs文件
  4. using Microsoft.Owin; using Owin; [assembly: OwinStartup(typeof(MVCE.Startup.Startup))] namespace MVCE.Startup { public class Startup { public void Configuration(IAppBuilder app) { app .Use(async (ctx, next) => { await ctx.Response.WriteAsync("Hello World!"); }); } } }

    <system.webServer>
      <modules runAllManagedModulesForAllRequests="true">
    
      </modules>
    </system.webServer>
    
    <system.codedom>
      <compilers>
        <compiler language="c#;cs;csharp" extension=".cs"
          type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
          warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701"/>
        <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb"
          type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
          warningLevel="4" compilerOptions="/langversion:14 /nowarn:41008 /define:_MYTYPE=\&quot;Web\&quot; /optionInfer+"/>
      </compilers>
    </system.codedom>
    

    当我在VS中运行应用程序时,我得到了#Hello; Hello World!&#34;在我的浏览器中按预期的任何路径在URL上没有扩展名。一旦我添加了一个扩展,我从IIS获得了404,我的OWIN代码永远不会被调用。

      

    您要查找的资源已被删除,名称已更改或暂时不可用。

    这是来自MVCE的web.config:

                                 

    {{1}}

1 个答案:

答案 0 :(得分:0)

看起来这是路由错误。当您在项目中安装了MVC或Web API时,它们都会自动添加处理w /&#34;文件的路由,例如请求&#34;。如果您不在,则必须通过添加

自行注册OWIN路线
RouteTable.Routes.MapOwinPath("");

到您的Startup.cs文件。