![](/img/trans.png)
[英]Asp.Net Core 2.1 SPA React Template with Windows Authentication
[英]How to start and stop an ASP.NET Core 2.1 app programmatically with Windows Authentication enabled?
我對ASP.NET Core 2.1應用程序有一組非常具體的需求,我似乎無法解決這個問題。 該應用程序的目的是演示如何使用自動化工具(如Selenium)使用Web代理,特別是針對使用NTLM身份驗證的站點。
因為這是一個在其他正在運行的代碼的上下文中使用的演示站點,所以我需要能夠以編程方式啟動和停止它。 我似乎無法找到任何方法來有效地使用Kestral和IIS / IIS Express來適當地啟動和停止應用程序。
因為我想證明使用配置了代理的Web瀏覽器來瀏覽並通過此站點進行身份驗證,並且因為大多數瀏覽器在瀏覽localhost
站點(及其堂兄弟127.0.0.1
和::1
)時繞過代理,我需要能夠使用localhost以外的主機名來瀏覽站點,並且我在hosts文件中使用了一個簡單的別名來實現此目的。 但是,這會讓HTTP.sys正確,因為嘗試注冊除localhost結果之外的任何URL前綴,完全不出所料地知道HTTP.sys如何工作,在Access denied
錯誤中。
我已經檢查了 其他 幾個 答案 ,所有這些答案似乎已經過時,或者只是不適合我。
啟動類如下:
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
services.Configure<IISOptions>(iis => { iis.AutomaticAuthentication = false; });
services.AddAuthentication(IISDefaults.AuthenticationScheme);
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseMvc();
}
}
如果我使用“IIS Express”配置文件在調試器中手動啟動應用程序,它的工作原理是我收到提示輸入憑據。 如果我使用“項目”配置文件,當然,它不起作用,因為Kestrel似乎不理解沒有HTTP.sys的Windows身份驗證。 如果我嘗試使用任何編程方式來啟動應用程序( WebHost.CreateDefaultBuilder().Build().StartAsync
),它無法提示進行身份驗證,我猜測它的原因與它不起作用相同調試器中的“項目”配置文件。
關鍵是要在克隆演示存儲庫后避免用戶進行最少的配置。 在完整的IIS中托管Web應用程序是一個非首發。 同樣,需要管理員訪問權限的解決方案(如使用netsh http add urlacl
)或以管理員netsh http add urlacl
運行也是非啟動者,因為許多用戶沒有對其計算機的管理訪問權限。
我正在嘗試甚至可能嗎? 我怎樣才能將它拼湊起來以使其有效? “你想做的事情是不可能的”,這是一個非常有效的答案,但如果這是給出的答案,我想了解為什么這是不可能的更多信息。
我沒有太多的IIS經驗,也沒有完全理解你的情況,但我希望我可以分享足夠的幫助你解決這個問題。
您的問題似乎有三個方面:
我無法幫助1.關於Windows身份驗證:
InProcess
和OutOfProcess
。 InProcess
) - 因此圖中沒有紅隼。 當您選擇項目配置文件時,您實際上是使用Kestrel( OutOfProcess
)自托管應用程序 - 因此除非您明確將其配置為充當反向代理,否則圖片中沒有IIS。 InProcess
或OutOfProcess
獲得圖片中的IIS,您就應該能夠使用Windows身份驗證。 關於啟動和停止應用程序:
OutOfProcess
,您可以完全控制,您可以隨意啟動和停止,因為您可以訪問WebHost
對象。 InProcess
,我不確定使用WebHost啟動/停止是否可行,但您可以使用IApplicationLifetime.StopApplication()
停止它,並讓IIS在下一個請求時為您啟動它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.