簡體   English   中英

ASP.NET Core 應用程序的 Configure 方法中是否有強制的語句順序?

[英]Is there a mandatory order of statements in the Configure method of a ASP.NET Core application?

前言:

我花了整個下午試圖理解為什么我的應用程序總是對我的請求返回401 未經授權的響應。

經過多次挖掘,拉頭發和咒罵,我遇到了這個問題,以及這個答案

app.UseAuthentication(); app.UseAuthorization();之前app.UseAuthorization(); 解決了這個問題。

就我而言,我看到我仍然收到一些 CORS 錯誤(如果我刪除了[Authorize]屬性,則不會發生這種情況),所以我移動了app.UseCors(AllowSpecificOriginsPolicy); 首先,一切正常!

工作順序是:

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    ...
    app.UseCors(AllowSpecificOriginsPolicy); // this one first
    app.UseAuthentication(); // this one second
    app.UseAuthorization(); // this one third
    ...
}

題:

我的問題是,我們怎么知道這里的正確順序是什么?
它是寫在文檔中的某個地方還是您只是通過反復試驗才找到的?

此信息最近以示例Configure實現的形式添加到docs中:

 public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); app.UseDatabaseErrorPage(); } else { app.UseExceptionHandler("/Error"); app.UseHsts(); } app.UseHttpsRedirection(); app.UseStaticFiles(); // app.UseCookiePolicy(); app.UseRouting(); // app.UseRequestLocalization(); // app.UseCors(); app.UseAuthentication(); app.UseAuthorization(); // app.UseSession(); app.UseEndpoints(endpoints => { endpoints.MapRazorPages(); endpoints.MapControllerRoute( name: "default", pattern: "{controller=Home}/{action=Index}/{id?}"); }); }

注意:

使用個人用戶帳戶創建新 Web 應用程序時未添加的中間件已注釋掉。

暫無
暫無

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

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