我突然无法让OWIN处理对它们有静态文件扩展名的请求(例如mysite.com/index.html)。我在我的web.config中设置了Microsoft.Owin.Host.SystemWeb
,我安装了PM> Install-Package Microsoft.Owin.Host.SystemWeb
包。
我创建了一个MVCE来测试这个以下步骤
Startup.cs
Startup.cs
文件 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=\"Web\" /optionInfer+"/>
</compilers>
</system.codedom>
当我在VS中运行应用程序时,我得到了#Hello; Hello World!&#34;在我的浏览器中按预期的任何路径在URL上没有扩展名。一旦我添加了一个扩展,我从IIS获得了404,我的OWIN代码永远不会被调用。
您要查找的资源已被删除,名称已更改或暂时不可用。
这是来自MVCE的web.config:
{{1}}
答案 0 :(得分:0)
看起来这是路由错误。当您在项目中安装了MVC或Web API时,它们都会自动添加处理w /&#34;文件的路由,例如请求&#34;。如果您不在,则必须通过添加
自行注册OWIN路线RouteTable.Routes.MapOwinPath("");
到您的Startup.cs
文件。