簡體   English   中英

ASP.NET Core WebAPI 崩潰是因為我沒有 StaticFileMiddleware?

[英]ASP.NET Core WebAPI crashes because I don't have StaticFileMiddleware?

我正在嘗試構建一個簡單的 WebAPI,為 Web 應用程序提供 JSON 數據,但由於某種原因,每次調用都以找不到任何內容而結束,而是崩潰。

我有一個帶路由的控制器:

[Produces("application/json")]
[Route("api/Players")]
public class PlayersController : Controller
{
    [HttpGet("{name}", Name = "GetPlayer")]
    public Player Get(string name)
    {
        return playerService.GetPlayer(name);
    }

playerservice 方法只返回一個 dto。 不幸的是,這個端點甚至沒有被調用。
請求管道被調用,然后崩潰System.MissingMethodException: 'Method not found: 'Void Microsoft.AspNetCore.StaticFiles.StaticFileMiddleware..ctor ,盡管我什至沒有嘗試獲取任何靜態文件,只是/api/players/dummy/swagger ,都不起作用。 這里的調用堆棧只是 Program.Main 和外部代碼。

配置服務去

services.AddMvcCore().AddApiExplorer();
services.AddSwaggerGen(c => c.SwaggerDoc("v1", new Info { Title = "API", Version = "v1" }));

services.AddControllers();

配置去

app.UseSwagger()
    .UseSwaggerUI(c => c.SwaggerEndpoint("/swagger/v1/swagger.json", "API v1"))
    .UseRouting()
    .UseEndpoints(endpoints => endpoints.MapControllers());

我的管道配置不正確嗎? 盡管我什至不提供靜態文件,但我是否需要一些靜態文件中間件? 我究竟做錯了什么?

編輯:異常截圖: 在此處輸入圖片說明

這是來自異常的堆棧跟蹤,它似乎是大搖大擺地發生的:

at Swashbuckle.AspNetCore.SwaggerUI.SwaggerUIMiddleware.CreateStaticFileMiddleware(RequestDelegate next, IHostingEnvironment hostingEnv, ILoggerFactory loggerFactory, SwaggerUIOptions options)
   at Swashbuckle.AspNetCore.SwaggerUI.SwaggerUIMiddleware..ctor(RequestDelegate next, IHostingEnvironment hostingEnv, ILoggerFactory loggerFactory, SwaggerUIOptions options)
   at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor, Boolean wrapExceptions)
   at System.Reflection.RuntimeConstructorInfo.Invoke(BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
   at Microsoft.Extensions.Internal.ActivatorUtilities.ConstructorMatcher.CreateInstance(IServiceProvider provider)
   at Microsoft.Extensions.Internal.ActivatorUtilities.CreateInstance(IServiceProvider provider, Type instanceType, Object[] parameters)
   at Microsoft.AspNetCore.Builder.UseMiddlewareExtensions.<>c__DisplayClass4_0.<UseMiddleware>b__0(RequestDelegate next)
   at Microsoft.AspNetCore.Builder.ApplicationBuilder.Build()
   at Microsoft.AspNetCore.Hosting.WebHost.BuildApplication()
   at Microsoft.AspNetCore.Hosting.WebHost.<StartAsync>d__27.MoveNext()
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.GetResult()
   at Microsoft.AspNetCore.Hosting.WebHostExtensions.<RunAsync>d__5.MoveNext()
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at Microsoft.AspNetCore.Hosting.WebHostExtensions.<RunAsync>d__5.MoveNext()
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.GetResult()
   at Microsoft.AspNetCore.Hosting.WebHostExtensions.<RunAsync>d__4.MoveNext()
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.GetResult()
   at Microsoft.AspNetCore.Hosting.WebHostExtensions.Run(IWebHost host)
   at Teambuilder_WebAPI.Program.Main(String[] args) in D:\Sources\Teambuilder\Teambuilder WebAPI\Program.cs:line 11

Swashbuckle.AspNetCore包的第 5 版處於預發布階段,預計會出現問題。

正如 OP 所確認的, 此 github 問題與此問題有關,因此解決方案將更新到最新版本。

更新:正如 OP 所確認的,您可以將最新穩定版的 Swashbuckle v4.0.1與 .Net Core v3.1 一起使用,一切順利。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM