我有一个运行ASP.NET Web API 2.2的自托管OWIN Web应用程序,它作为Windows服务执行。我想实现远程配置方案:从客户端,我想发出HTTP请求,在被调用的Web API操作中,我想更新配置文件(例如更改数据库连接字符串),然后重新启动服务(以便加载新配置)。但是,这是一个棘手的部分:
如果我只是致电Environment.Exit
,那么响应将无法完成,客户端将无法获得有效的消息。 有没有办法写入响应流并在从Web-API操作中重新启动服务之前完成它?或者我应该为此使用别的东西,也许是过滤器?或者你还有其他建议吗?
我对任何安全性讨论都不感兴趣 - 该服务仅在Intranet中可用,并且相应的Web API操作通过身份验证和授权进行保护。
提前感谢您的帮助。
答案 0 :(得分:2)
看起来像吸盘式打孔机,但它确实有效:
[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,那么服务子系统会认为你的服务崩溃并尝试重新安装它(如果你在服务设置中设置它)