我们正在使用 ServiceStack 从 ASMX -> RESTful 重写我们的服务,因此短期内需要保持 IIS 和经典服务在端口 80 上运行。此外,我们的一些客户在下面托管多个 Web 应用程序(例如公司内部网) IIS 监听 80 端口。
我的应用程序需要分发给数百个客户,因此我想摆脱 IIS 依赖项,以便让我的更新部署更简单(如果可能的话)。我们也有很多客户在他们的路由器中为端口 80 设置了特殊的转发,因此在不同的端口上监听 SS 服务会导致很多部署痛苦——更不用说大多数防火墙对端口 80 流量更宽松。
我有两个可能的相关问题:
1. 当我可以让 SS 在端口 80 上启动时,我会得到 " handler not found
" 表示原本可以在另一个端口上工作的路由。
2.在调试(启动/调试/停止/重新启动)时,最终监听器注册似乎“粘住”,我最终得到:
System.Net.HttpListenerException (0x80004005): Failed to listen on prefix 'http://*:80/' because it conflicts with an existing registration on the machine.
at System.Net.HttpListener.AddAllPrefixes()
at System.Net.HttpListener.Start()
at ServiceStack.WebHost.Endpoints.Support.HttpListenerBase.Start(String urlBase) in C:\src\ServiceStack\src\ServiceStack\WebHost.Endpoints\Support\HttpListenerBase.cs:line 122
at FieldCommService.FieldCommService.ConfigureServices() in e:\Development\Source\Hg\fieldcomm\src\Services\FieldCommService\FieldCommService.cs:line 305
at FieldCommService.FieldCommService.Startup() in e:\Development\Source\Hg\fieldcomm\src\Services\FieldCommService\FieldCommService.cs:line 84
我不排除在 IIS 下托管服务作为解决方案,我只是不想承担/继续承担 IIS 带来的配置和部署痛苦。
我有两个问题:
1. [使用 AppHostHttpListenerBase] 作为自托管服务收听 :80 是否可行?
2. 在 AppHostHttpListenerBase 的智能感知中,注意到该类旨在允许侦听 IIS 旁边的端口 80,但需要“管理员用户权限”。这在作为服务运行的 Windows 下意味着什么?属于管理员组的身份?或者只是“本地系统”?