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 冲突的旧数据库表?

Django slugify url - 如何处理冲突?

咨询师如何处理冲突?

如何处理名称冲突 collections.Counter 和 typing.Counter?

在 VC++ 中获取读取访问冲突异常如何处理此异常?