none
wcf 双工回调占用80端口的问题 RRS feed

  • 问题

  • 设置双工回调时自动会使用到80端口,但现在程序使用80端口的太多了,如skype之类的。请问如何设置使其使用其他端口?
    2009年12月25日 2:33

答案

全部回复

  • 如果使用wsDualHttpBinding的话,你可以在客户端配置中设定客户端地址

               <wsDualHttpBinding>
                    <binding name="WSDualHttpBinding_IService1" closeTimeout="00:01:00"
                        openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
                        bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard"
                        maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
                              clientBaseAddress=”http://machinename:90/
                        messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true">
                        <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
                            maxBytesPerRead="4096" maxNameTableCharCount="16384" />
                        <reliableSession ordered="true" inactivityTimeout="00:10:00" />
                        <security mode="Message">
                            <message clientCredentialType="Windows" negotiateServiceCredential="true"
                                algorithmSuite="Default" />
                        </security>
                    </binding>
                </wsDualHttpBinding>


    Mog Liang
    2009年12月28日 5:29
  • 如果使用wsDualHttpBinding的话,你可以在客户端配置中设定客户端地址

               <wsDualHttpBinding>
                    <binding name="WSDualHttpBinding_IService1" closeTimeout="00:01:00"
                        openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
                        bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard"
                        maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
                              clientBaseAddress=”http://machinename:90/
                        messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true">
                        <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
                            maxBytesPerRead="4096" maxNameTableCharCount="16384" />
                        <reliableSession ordered="true" inactivityTimeout="00:10:00" />
                        <security mode="Message">
                            <message clientCredentialType="Windows" negotiateServiceCredential="true"
                                algorithmSuite="Default" />
                        </security>
                    </binding>
                </wsDualHttpBinding>


    Mog Liang
    clientBaseAddress=”http://machinename:90/ machinename表示哪个?为什么我这样设置之后,根本接不到数据了?是不是哪里有问题?
    2009年12月28日 8:35
  • 使用wsdualHttpBinding 如果关闭防火墙脚后一切正常,如果打开防火墙就不能正常调用,请问如何解决.
    2009年12月28日 8:36
  • machinename 为客户端机器名,或者客户端机器的ip地址。
    若服务和客户端在同一台机器的话,设置为localhost也成。


    Mog Liang
    2009年12月28日 8:52
  • machinename 为客户端机器名,或者客户端机器的ip地址。
    若服务和客户端在同一台机器的话,设置为localhost也成。


    Mog Liang
    我设置为http://127.0.0.1:90/  但是调用不成功.
    2009年12月28日 8:54
  • 服务在同一台机器吗
    Mog Liang
    2009年12月28日 8:55
  • 不是的,如果是同一台机器,则没有问题.  

    如果不是同一台机器,客户端打开防火墙,wsHttpBinding的服务没有问题,wsDualHttpBinding的服务则调用失败.

                                客户端不开防火墙,则一切正常.
    2009年12月28日 9:32
  • 在防火墙里为客户端应用程序设置一个规则,允许访问网络和接受连接。
    wsHttpBinding 要求服务端和客户端都要能直接或通过NAT寻址并接受连入,请参考这篇文章
    http://msdn.microsoft.com/zh-cn/library/ms731948.aspx
    nettcpBinding 对网络的要求较低,你也可以尝试一下。


    Mog Liang
    • 已建议为答案 Mog Liang 2009年12月31日 2:04
    2009年12月28日 9:40
  • 你WCF服务里使用了80以外的任何端口吗?
    检查一下你的防火墙设置


    Frank Xu Lei--谦卑若愚,好学若饥
    专注于.NET平台下分布式应用系统开发和企业应用系统集成
    Focus on Distributed Applications Development and EAI based on .NET
    欢迎访问老徐的中文技术博客:Welcome to My Chinese Technical Blog
    欢迎访问微软WCF中文技术论坛:Welcome to Microsoft Chinese WCF Forum
    欢迎访问微软WCF英文技术论坛:Welcome to Microsoft English WCF Forum
    2009年12月28日 10:17
    版主
  • 你WCF服务里使用了80以外的任何端口吗?
    检查一下你的防火墙设置


    Frank Xu Lei--谦卑若愚,好学若饥
    专注于.NET平台下分布式应用系统开发和企业应用系统集成
    Focus on Distributed Applications Development and EAI based on .NET
    欢迎访问老徐的中文技术博客:Welcome to My Chinese Technical Blog
    欢迎访问微软WCF中文技术论坛:Welcome to Microsoft Chinese WCF Forum
    欢迎访问微软WCF英文技术论坛:Welcome to Microsoft English WCF Forum
    有可能是80造成的,但是我在防火墙的例外里面添加了80端口.TCP与UDP都试过了,还是不行
    2009年12月29日 1:47
  • 在防火墙里为客户端应用程序设置一个规则,允许访问网络和接受连接。
    wsHttpBinding 要求服务端和客户端都要能直接或通过NAT寻址并接受连入,请参考这篇文章
    http://msdn.microsoft.com/zh-cn/library/ms731948.aspx
    nettcpBinding 对网络的要求较低,你也可以尝试一下。


    Mog Liang
    不好意思,这篇没看懂..我对防火墙没有直观的了解.
    2009年12月29日 2:17
  • 客户端机器使用的是什么操作系统?你可以Google一下防火墙配置的文章,为客户端创建一条允许接入(incoming or inbound)的规则应该就行了。
    这是篇配置windows xp sp2 防火墙的文章
    http://www.microsoft.com/china/smb/issues/sgc/articles/cfgfwall.mspx


    Mog Liang
    2009年12月29日 2:57
  • 客户端机器使用的是什么操作系统?你可以Google一下防火墙配置的文章,为客户端创建一条允许接入(incoming or inbound)的规则应该就行了。
    这是篇配置windows xp sp2 防火墙的文章
    http://www.microsoft.com/china/smb/issues/sgc/articles/cfgfwall.mspx


    Mog Liang
    操作系统是xp,我在例外里面增了现有程序,但还是访问不成功.让我有点郁闷.
    2009年12月29日 7:29
  • 尝试按这篇文章说的, 配置Windows防火墙端口例外。
    http://www.microsoft.com/china/smb/issues/sgc/articles/cfgfwall.mspx
    比如说你要使用81端口作为客户端通讯端口,那么创建一个tcp 81端口的例外。


    Mog Liang
    2009年12月30日 2:54