5 asp.net-web-api asp.net-core
我想将下面代码中IHost创建的对象配置为在 https://localhost:5001 上运行。WebApp<TStartup>我怎么做?
理想情况下,我想从与启动文件相同的项目中的 launchsettings.json 读取此值。但是,如果我必须读取配置文件或硬编码,我就可以接受。
public class WebApp<TStartup> : WebApplicationFactory<TStartup> where TStartup : class
{
protected override void ConfigureWebHost(IWebHostBuilder builder)
{
builder.UseUrls("https://localhost:5001"); // does not work
base.ConfigureWebHost(builder);
}
protected override IHost CreateHost(IHostBuilder builder)
{
builder
.UseServiceProviderFactory(new AutofacServiceProviderFactory(containerBuilder =>
{
}));
WebHost = builder.Build();
WebHost.Start();
return WebHost; //base.CreateHost(builder);
}
protected override IHostBuilder CreateHostBuilder()
{
return base.CreateHostBuilder();
}
}
Run Code Online (Sandbox Code Playgroud)
测试治具:
[Test]
public async Task Test2()
{
webapp = new WebApp<Startup>(); // Startup is API server project
HttpClient httpClient = webapp.CreateClient();
string url = httpClient.BaseAddress.ToString();
//line above returns http://localhost:80, desired is https://localhost:5001
//...
}
Run Code Online (Sandbox Code Playgroud)
/sf/answers/5160519311/ 与我上面发布的传递命令行参数的答案类似,您可以这样做。
public class CustomWebApplicationFactory<TStartup>
: WebApplicationFactory<TStartup> where TStartup : class
{
protected override void ConfigureWebHost(IWebHostBuilder builder)
{
// Notice there is no `--` prefix in "urls"
builder.UseSetting("urls", "http://localhost:1234");
// other stuff as usual
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1173 次 |
| 最近记录: |