我有一个自我托管的WCF服务,和一个ASP .Net网站,需要在同一台机器上运行。我发现,当自托管服务运行时,所有针对IIS的端口443 (基于IP和主机头/SSL绑定)的调用都会路由到WCF体系结构,因此只要自托管服务正在运行,网站就会停止工作。它有效地抢占了IIS完成其工作的能力。
请注意,IIS仍然可以在其他端口上正常工作,例如端口80。只是在端口443上太急切了。不完全确定这是服务器问题还是代码/wcf问题。
发布于 2013-01-16 13:41:27
经过相当多的研究,我能够确定其中一个服务端点,即设置为模拟crossdomain.xml文件的REST端点正在抢占IIS。除此之外,一切都像预期的那样工作。我抛弃了那个端点,转而使用IIS来提供文件。
发布于 2013-01-10 01:22:27
听起来,正如您所怀疑的那样,自托管服务正在截获对端口443的调用,然后IIS才能接收这些调用。快速检查您的IIS日志应该会确认是否发生了这种情况。
请注意,虽然您可以在端口80上运行多个域,但如果我没记错的话,您只能在端口443上使用一个域,所以像主机标题这样的东西不能用于HTTPS连接。
有没有办法通过IIS托管自托管服务?这可能会解决这个问题,并减轻您未来的管理负担。
编辑以下注释:如果您不能在IIS中托管,那么假设我是正确的,WCF服务正在拦截IIS的请求,这就是阻止流量通过的原因,那么您可能需要在您的WCF应用程序中添加一些东西,或者为基于HttpListener的传入流量创建(或找到一个现有示例)独立代理,并使用它来识别正在查找的服务请求并适当地中继它。当然,这种类型的代理服务也可以用来屏蔽扩展,因此您可以使用它将任何格式的外部url转发到适当的内部服务url。重要的是,在网络堆栈中,代理位于WCF和IIS的前面,因此它可以在请求被任一方拾取之前拦截它们。如果您正在编写自己的代码,那么HttpListener可能是一个很好的起点。
https://stackoverflow.com/questions/14242717
复制相似问题