根据 HTTP 请求更新配置并重启自托管 ASP.NET Web API 2
Update configuration and restart self-hosted ASP.NET Web API 2 on HTTP request
我有一个自托管的 OWIN 网络应用 运行 ASP.NET Web API 2.2,它作为 windows 服务执行。我想实现一个远程配置场景:从客户端,我想发出一个 HTTP 请求,在调用的 Web API 操作中,我想更新一个配置文件(例如,更改一个数据库连接字符串),然后重新启动服务(以便加载新配置)。然而,这是棘手的部分:
如果我只是调用 Environment.Exit
,那么响应将不会完成,客户端也不会收到响应成功的消息。 有没有什么方法可以写入响应流并在从 Web-API 操作中重新启动服务之前完成它?或者我应该为此使用其他东西,也许是过滤器? 或者你有什么其他建议吗?
我对任何安全讨论不感兴趣 - 该服务仅在 Intranet 中可用,并且相应的 Web API 操作通过身份验证和授权得到保护。
提前感谢您的帮助。
看起来像吸盘拳,但它有效:
[HttpGet]
public async Task<IHttpActionResult> ActionMethod()
{
var httpActionResult = Ok(); //some work instead it
new Thread(() =>
{
Thread.Sleep(500);
Environment.Exit(1);
}).Start();
return httpActionResult;
}
我不确定,但如果您退出时使用 exitCode != 0,那么服务子系统会认为您的服务崩溃并尝试重新启动它(如果您在服务设置中设置它)
我有一个自托管的 OWIN 网络应用 运行 ASP.NET Web API 2.2,它作为 windows 服务执行。我想实现一个远程配置场景:从客户端,我想发出一个 HTTP 请求,在调用的 Web API 操作中,我想更新一个配置文件(例如,更改一个数据库连接字符串),然后重新启动服务(以便加载新配置)。然而,这是棘手的部分:
如果我只是调用 Environment.Exit
,那么响应将不会完成,客户端也不会收到响应成功的消息。 有没有什么方法可以写入响应流并在从 Web-API 操作中重新启动服务之前完成它?或者我应该为此使用其他东西,也许是过滤器? 或者你有什么其他建议吗?
我对任何安全讨论不感兴趣 - 该服务仅在 Intranet 中可用,并且相应的 Web API 操作通过身份验证和授权得到保护。
提前感谢您的帮助。
看起来像吸盘拳,但它有效:
[HttpGet]
public async Task<IHttpActionResult> ActionMethod()
{
var httpActionResult = Ok(); //some work instead it
new Thread(() =>
{
Thread.Sleep(500);
Environment.Exit(1);
}).Start();
return httpActionResult;
}
我不确定,但如果您退出时使用 exitCode != 0,那么服务子系统会认为您的服务崩溃并尝试重新启动它(如果您在服务设置中设置它)