[英]Running WCF self-hosted in multiple web application worker processes
在Web应用程序中,我运行一个简单的wcf主机 :
Uri baseAddress = new Uri("http://localhost:8080/hello");
using (ServiceHost host = new ServiceHost(typeof(HelloWorldService), baseAddress))
{
ServiceMetadataBehavior smb = new ServiceMetadataBehavior();
smb.HttpGetEnabled = true;
smb.MetadataExporter.PolicyVersion = PolicyVersion.Policy15;
host.Description.Behaviors.Add(smb);
host.Open();
}
我在Global.asax/Start
编写了它。 因此,它将在Web应用程序的开头打开并监听端口8080
,并且我可以通过http://localhost:8080/hello
调用HelloWorldService
定义的任何方法。 我已经在IIS
上发布了它,它也可以正常运行,并且一切正常。
当我将Maximum Worker Processes
增加到2
或大于1
时,就会出现问题。
关键是每个工作进程都是一个单独的进程,要获取端口8080,但OS不允许一个以上的进程来获取端口。
看来问题可以通过处理异常来解决,因此只有一个进程可以获取端口。 但这不是真的! 当具有端口的进程发生回收时,不能保证立即执行新的辅助进程。
注意:不能将主机和Web应用程序分开的任何解决方案,因为服务内部的所有业务都将由我的Web应用程序注入和控制。
我有个主意。 我将在每个进程中使用不同的端口并运行它们。 我也阅读了《 应用程序请求路由》,以使用负载平衡功能将一个特定端口分散到工作进程获得的多个不同端口。
请感谢我或给我解决方案。
您可以使用端口池。 在global.asax上,选择未使用的端口之一。
Web应用程序可能不是托管WCF服务的不错选择。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.