簡體   English   中英

.Net Core 2.2啟動中的Services.Configuration.Replace

[英]Services.Configuration.Replace in .Net Core 2.2 Startup

我正在尋找替代默認API 404的選項,但未在Web API中找到路由錯誤,並且發現此鏈接覆蓋路由

根據描述,我可以創建如下的類

   public class HttpNotFoundAwareController:ApiControllerActionSelector
{

    public override HttpActionDescriptor SelectAction(HttpControllerContext controllerContext)
    {
        HttpActionDescriptor descriptor = null;
        try
        { 
        descriptor= base.SelectAction(controllerContext);
        }
        catch(HttpResponseException ex)
        {
            var code = ex.Response.StatusCode;
        }

        return descriptor;
    }
}

但是,此替代也需要注冊。 通過鏈接,應在WebAPIConfig中完成,如下所示

configuration.Services.Replace(typeof(IHttpControllerSelector), new HttpNotFoundAwareDefaultHttpControllerSelector(configuration));

但是我不確定,如何在.Net Core Startup.cs文件中注冊覆蓋? 因為沒有“服務”可用的“替換”屬性。

有人可以幫忙嗎?

為了捕獲404並返回自定義錯誤,您可以嘗試使用UseStatusCodePages

app.UseStatusCodePages(new StatusCodePagesOptions {
    HandleAsync = async context =>
    {
        if (context.HttpContext.Response.StatusCode == StatusCodes.Status404NotFound)
        {
            await context.HttpContext.Response.WriteAsync($"{context.HttpContext.Request.Path} is not Found");
        }
    }
});

暫無
暫無

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

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