Katana/IIS 如何处理冲突。 WinService 中的 WebApi 和 IIS 中的网站 - 谁赢了?
Posted
技术标签:
【中文标题】Katana/IIS 如何处理冲突。 WinService 中的 WebApi 和 IIS 中的网站 - 谁赢了?【英文标题】:How does Katana/IIS handle conflicts. WebApi in WinService and website in IIS - who wins?l 【发布时间】:2015-05-07 07:50:35 【问题描述】:我有一个配置了很多网站的 IIS。现在我想在 Windows 服务中安装一个由 OWIN/Katana 托管的 WebApi(使用 topshelf)。我的 WebApi 可以使用与 IIS 相同的端口吗?
http://myserver/webapp1/(这转到 IIS) http://myserver/api/method/(这应该转到我的 Windows 服务中的 OWIN)这行得通吗?如果我使用相同的名字怎么办?谁赢了?
感谢您的帮助 - 我有点困惑。
拉西
【问题讨论】:
【参考方案1】:理论上是可以做到的。
Windows 允许为不同的服务保留 URL,以便它们可以监听特定的 URL。一旦预订完成,并且应用程序开始监听请求,HTTP 服务器 API 会将传入请求路由到不同的服务。以下是关于如何发生的解释:
Routing Incoming Requests
使用 Web API,很容易设置服务以侦听具体的 URL,并且不会干扰其他 URL 的路由。
问题出在 IIS 中。 IIS 仅允许您在根 URL 上设置站点,而不是在具体的 URL 路径上。没有关于如何完成这项保留的具体文件。但是您可以使用 netsh 自己查看:
-
打开命令提示符并运行
netsh
你会看到netsh>
提示
输入http
。提示现在应该是netsh http>
输入show urlacl
这将向您显示机器中所有服务的 URL 保留的完整列表。注意,您可以将输出转储到从命令行运行它的文件:netsh http show urlacl > c:\users\jotabe\documents\urlacls.txt
使用所有这些信息,您可以设置 IIS 和 Web API 服务,检查由它们创建的注册,并根据链接文档上的规则查看您想要执行的操作是否有效。
【讨论】:
以上是关于Katana/IIS 如何处理冲突。 WinService 中的 WebApi 和 IIS 中的网站 - 谁赢了?的主要内容,如果未能解决你的问题,请参考以下文章
如何处理列名('hash')与 Rails 冲突的旧数据库表?