在HTTP请求上更新配置并重新启动自托管的ASP.NET Web API 2

时间:2017-11-22 15:09:28

标签: c# asp.net-web-api asp.net-web-api2

我有一个运行ASP.NET Web API 2.2的自托管OWIN Web应用程序,它作为Windows服务执行。我想实现远程配置方案:从客户端,我想发出HTTP请求,在被调用的Web API操作中,我想更新配置文件(例如更改数据库连接字符串),然后重新启动服务(以便加载新配置)。但是,这是一个棘手的部分:

如果我只是致电Environment.Exit,那么响应将无法完成,客户端将无法获得有效的消息。 有没有办法写入响应流并在从Web-API操作中重新启动服务之前完成它?或者我应该为此使用别的东西,也许是过滤器?或者你还有其他建议吗?

我对任何安全性讨论都不感兴趣 - 该服务仅在Intranet中可用,并且相应的Web API操作通过身份验证和授权进行保护。

提前感谢您的帮助。

1 个答案:

答案 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,那么服务子系统会认为你的服务崩溃并尝试重新安装它(如果你在服务设置中设置它)

相关问题