访问iis中托管的wcf服务在localhost中工作,但如果通过ip:port / service.svc访问则不能访问

时间:2014-10-14 08:48:45

标签: asp.net asp.net-mvc wcf

的Web.config

<behavior name="JobsServiceBehavior">
    <dataContractSerializer maxItemsInObjectGraph="2147483646" />
    <serviceMetadata httpGetEnabled = "true" httpsGetEnabled="true"/>
    <serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>

<service behaviorConfiguration="JobsServiceBehavior"
           name="XDE.WebServices.Implementation.JobManagerService">
    <endpoint binding="wsDualHttpBinding"
        name="WSDualHttpBinding_IJobManagerService"
        bindingConfiguration="wsDualHttpBinding"
        contract="XDE.CommonInterfaces.Jobs.IJobManagerService" />
</service>

的app.config

<client>
    <endpoint address="http://192.192.192.1/Services/JobService.svc"
        binding="wsDualHttpBinding"
        bindingConfiguration="WSDualHttpBinding_IJobManagerService"
        contract="XDE.CommonInterfaces.Jobs.IJobManagerService"
        name="WSDualHttpBinding_IJobManagerService" />
</client>

您好, 我有一个wcf服务的问题。我在服务器机器上的iis上的mvc应用程序中托管了一项服务, 当我尝试访问它没有任何反应,我得到一个空的参考。我正在使用DuplexChannelFactory,当我调用open()方法时,有一段时间没有任何反应,然后aplication关闭。 如果我在与服务消费应用程序相同的计算机上托管mvc应用程序,则不会发生这种情况。

1 个答案:

答案 0 :(得分:0)

首先,我必须阻止你使用wsDualHttpBinding。我在通过互联网和代理/防火墙使用它时遇到了问题。我同意Juval Lowy在他的书(编程WCF服务)中所说的话:“WSDualHttpBinding几乎无法使用,因为实际上不可能通过各种通信障碍来分离服务与客户端以及需要找到特定的Web服务器这不切实际“。另见wsDualHttpBinding ClientBaseAddress & firewalls 我强烈建议你使用NetTcpBinging / NetTcpRelayBinding(IIS / WAS软件)。

但你可以试试wsDualHttpBinding。我记得我的问题是在 ClientBaseAddress 中。 AFAIK - 您需要在客户端配置中(或以编程方式)指定它,并在ClientBaseAddress中使用不同的(额外)端口(可以被防火墙阻止),以便第二个http通道以双工方式进行通信