app.UseMiddleware <t>()导致500

时间:2016-05-19 18:44:06

标签: c# .net asp.net-core .net-core asp.net5

如果我直接在startup.cs中调用中间件,例如:

public void Configure(IApplicationBuilder app)
{
    app.UseMiddleware<StaticFileMiddleware>();
    app.UseMiddleware<DefaultFilesMiddleware>();
}

查看source on GitHub,这正是扩展方法调用的代码。但是,我收到500错误和堆栈跟踪:

 :(
Oops.
500 Internal Server Error
System.InvalidOperationException
The 'Invoke' method's first argument must be of type 'HttpContext'.
at Microsoft.AspNetCore.Builder.<>c__DisplayClass3_0.<UseMiddleware>b__0(RequestDelegate next)
at Microsoft.AspNetCore.Builder.Internal.ApplicationBuilder.Build()
at Microsoft.AspNetCore.Hosting.Internal.WebHost.BuildApplication()

Show raw exception details

System.InvalidOperationException: The 'Invoke' method's first argument must be of type 'HttpContext'.
   at Microsoft.AspNetCore.Builder.UseMiddlewareExtensions.<>c__DisplayClass3_0.b__0(RequestDelegate next)
   at Microsoft.AspNetCore.Builder.Internal.ApplicationBuilder.Build()
   at Microsoft.AspNetCore.Hosting.Internal.WebHost.BuildApplication()

可能与我的No Static Files Extensions are referable问题相关。

无论哪种方式,我目前无法成功加载简单的index.html页面。

任何帮助?

由于

3 个答案:

答案 0 :(得分:2)

您可能在项目中使用了RC1版本的StaticFiles库,而不是RC2。

project.json中,更改此内容:

"dependencies": {
   "Microsoft.AspNet.StaticFiles": "1.0.0-rc1-final"
}

对此:

"dependencies": {
   "Microsoft.AspNetCore.StaticFiles": "1.0.0-rc2-final"
}

命名空间也发生了变化,但一旦纠正了你就应该好了。

答案 1 :(得分:1)

从那时起,asp.net核心1.0已经发布。 正确的NuGet包是:(注意:.AspNetCore。)

"Microsoft.AspNetCore.StaticFiles": "1.0.0"

你可以使用(再次)

app.UseStaticFiles();

答案 2 :(得分:0)

您也可以致电:

app.UseStaticFiles();
app.UseDefaultFiles();

而不是UseMiddleware方法。