我们未能成功使用Windows服务部署OWIN Web API服务(如this StackOverflow question中所述)。经过多次尝试解决问题后,我们决定只创建一个ASP.NET Web API站点并通过IIS进行部署。
在本地运行时,所有操作都可以访问。但是,如果我们发布网站(使用Build - > Publish或其任何变体),我们会发现以下内容:
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.应用程序事件日志中不会显示任何错误消息。
当这个方法在本地运行时(在我的机器上),它返回一个JSON字符串,我可以在文本编辑器中打开它。
答案 0 :(得分:1)
URL ACL的创建方式如下:
netsh http add urlacl http://+:8098/api user = Everyone
我遇到了类似的问题,最后删除了网络服务器上的URL ACL预留。修好了。试一试。
netsh http delete urlacl url = http://+:8098/api