在 startup.cs 我有 AddCors 到服務,我想從 AddCors 內部除錯代碼,但 Breackpoint 不會在里面觸發
services.AddCors(options =>
{
//debug didn't fire here
var corsOrigins = configuration["cors-origins"].Split(",");
if ((corsOrigins.Length == 1)
{
options.AddPolicy("CorsPolicy",
builder => builder.SetIsOriginAllowed(_ => true)
.AllowAnyMethod()
.AllowAnyHeader()
.AllowCredentials());
}
else
{
options.AddPolicy("CorsPolicy",
builder => builder.WithOrigins(corsOrigins)
.AllowAnyMethod()
.AllowAnyHeader()
.AllowCredentials());
}
});
任何想法如何在 AddCors 方法中停止代碼執行?
uj5u.com熱心網友回復:
當請求進入 API 時,將評估內部的選項構建器。這本質上是因為中間件IOptions<CorsOptions>從容器接收一個并評估它的.Value屬性。
我們可以模擬這個。想象一下你正在構建容器:
ServiceCollection services = new ServiceCollection();
services.AddCors(options =>
{
var corsOrigins = configuration["cors-origins"].Split(",");
if ((corsOrigins.Length == 1)
{
options.AddPolicy("CorsPolicy",
builder => builder.SetIsOriginAllowed(_ => true)
.AllowAnyMethod()
.AllowAnyHeader()
.AllowCredentials());
}
else
{
options.AddPolicy("CorsPolicy",
builder => builder.WithOrigins(corsOrigins)
.AllowAnyMethod()
.AllowAnyHeader()
.AllowCredentials());
}
});
IServiceProvider provider = services.BuildServiceProvider();
CorsOptions options = provider.GetRequiredService<IOptions<CorsOptions>>().Value;
顯然,您可以允許 ASP.NET Core 構建服務等。您只需要訪問IServiceProvider某處即可從容器中檢索選項。這應該會在 lambda 函式內命中斷點,或者讓您直接檢查生成的CorsOptions物件。
uj5u.com熱心網友回復:
因為 AddCors 是一種來自已編譯程式集的方法,沒有除錯資訊,如果沒有特殊工具,您無法在此類程式集中進行除錯。如果沒有這些工具,最簡單的方法是獲取asp.net 核心的源代碼并將其添加到您的解決方案中。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/490298.html
上一篇:ASP.NETCoreMVC-從表單資料到視圖模型的資料系結
下一篇:如何在c#中將列舉值分配給類物件
