当启动控制台api或服务启动时,我想调用一个方法。
我已经在我的launchsettings中尝试过这段代码,当我用Visual启动我的api项目并且我的Get方法在开始时被自动调用时,它会工作。
但问题是,当我将代码发布为控制台应用程序或作为Windows服务发布时,它无法工作,我必须从浏览器或邮递员调用url http://localhost:8888来调用我的方法!
"Sadad.Api": {
"commandName": "Project",
"launchBrowser": true,
"launchUrl": "Home",
"applicationUrl": "http://localhost:8888",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
}发布于 2020-06-08 05:56:26
据我所知,如果您从visual调试asp.net核心应用程序,visual将帮助我们使用applicationUrl运行浏览器。
如果您想在应用程序完全启动后调用您的mvc或web之一。我建议您将IHostApplicationLifetime注入配置()方法,然后为ApplicationStarted编写回调,该回调将在应用程序主机完全启动时触发。
更多细节,您可以参考下面的示例:
在Startup.cs ConfigureServices方法中注册httpclient服务
public void ConfigureServices(IServiceCollection services)
{
services.AddHttpClient();
services.AddControllersWithViews();
}在配置方法中添加lifetime.ApplicationStarted.Register回调:
public void Configure(IApplicationBuilder app, IWebHostEnvironment env, IHostApplicationLifetime lifetime)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Default}/{action=Index}/{id?}");
});
IHttpClientFactory httpClientFactory = app.ApplicationServices.GetService(typeof(IHttpClientFactory)) as IHttpClientFactory;
lifetime.ApplicationStarted.Register(onApplicationStartedAsync(httpClientFactory).Wait);
}
private async Task<Action> onApplicationStartedAsync(IHttpClientFactory httpClientFactory)
{
var httpclient = httpClientFactory.CreateClient();
var httpMessage = new HttpRequestMessage(HttpMethod.Get, "http://localhost:5000/api/values");
var httpresponse = await httpclient.SendAsync(httpMessage);
if (httpresponse.IsSuccessStatusCode)
{
string res = await httpresponse.Content.ReadAsStringAsync();
}
return null;
}结果:

https://stackoverflow.com/questions/62227834
复制相似问题