我们未能使用Windows服务(如中所述)部署OWIN Web API服务
this StackOverflow question
在本地运行时,可以访问所有操作。但是,如果我们发布网站(使用Build->publish或其任何变体),我们会观察到以下情况:
-
当我们浏览到机器名和端口时,会看到虚拟目录的目录列表。
-
当我们请求控制器操作时,站点返回
HTTP错误503。服务不可用。
-
目标服务器上的Windows应用程序事件日志中未记录任何错误。
-
当在托管服务器或客户机上执行请求时,也会发生同样的情况。
URL ACL创建如下:
netsh http add urlacl http://+:8098/api user=Everyone
防火墙似乎没有阻止端口(我们可以通过上面的步骤1实现)。URL ACL存在,公司中的每个人都可以访问它(他们应该这样做)。我们不知道为什么会发生这种情况,似乎也找不到合适的答案。
有人能提出一个我们可能忽略的原因或可能的解决方案吗?
更新
从控制器中删除逻辑并重新发布后,Windows应用程序事件日志中出现以下(缩写)警告信息:
Event code: 3005
Event message: An unhandled exception has occurred.
Exception information:
Exception type: HttpException
Exception message: Could not find a part of the path 'D:\websites\LoggingWebApi\bin\roslyn\csc.exe'.
这很有趣。看起来Publish并没有随生成一起分发Roslyn编译器。
更新2
控制器上最简单的操作方法如下:
[HttpGet]
[Route("Status")]
public string Status()
{
return "Online";
}
即使手动将Roslyn程序集复制到bin文件夹中的服务器,该方法也会返回HTTP 503。应用程序事件日志中不显示任何错误消息。