我只是在为owin创建一些自定义中间件,但是当我运行它时,它在浏览器中显示为403.14。
我创建了一个空的WebProject,添加了一个如下所示的owin启动类
using System.Threading.Tasks;
using Microsoft.Owin;
using Owin;
[assembly: OwinStartup(typeof(OwinTest.Startup))]
namespace OwinTest {
public class Startup {
public void Configuration(IAppBuilder app) {
app.Use<MySimpleMiddleware>();
}
class MySimpleMiddleware : OwinMiddleware {
public MySimpleMiddleware(OwinMiddleware next) : base(next) { }
public override Task Invoke(IOwinContext context) {
context.Response.StatusCode = (int)System.Net.HttpStatusCode.OK;
context.Response.ContentType = "text/plain";
context.Response.Write("Hello, world.");
return base.Next.Invoke(context);
}
}
}
}
当在IIS express(8)或IIS(7.5)中运行时,它会向我提供HTTP Error 403.14 - Forbidden
The Web server is configured to not list the contents of this directory.
错误。
但是,如果我将Invoke
的最后一行更改为return Task.FromResult(0);
,那么它会按预期工作,但我不知道我是否一定想成为此时终止管道(或者我是否,如果这是primary
中间件?)
答案 0 :(得分:0)
将其添加到void Configuration(IAppBuilder app)
app.Run(
context =>
{
return context.Response.WriteAsync("More Hello, World");
});
观察管道here
的简单说明
您似乎没有中间件,也没有网站。返回Task.FromResult(0)是有效的,因为现在你的中间件已经扮演了应用程序的角色,忽略了下一步并返回。