请问WCF客户端调用有关问题

请教WCF客户端调用问题
本帖最后由 JerryOne 于 2014-09-29 15:48:06 编辑
因项目中涉及的服务较多,所以用了手动添加了wcf服务,以下是引用的配置代码

<system.serviceModel>
        <bindings>
            <wsHttpBinding>
                <binding name="WSHttpBinding_IAudit" 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"
                    messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true"
                    allowCookies="false">
                    <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
                        maxBytesPerRead="4096" maxNameTableCharCount="16384" />
                    <reliableSession ordered="true" inactivityTimeout="00:10:00"
                        enabled="false" />
                    <security mode="None">
                        <transport clientCredentialType="Windows" proxyCredentialType="None"
                            realm="" />
                        <message clientCredentialType="Windows" negotiateServiceCredential="true"
                            establishSecurityContext="true" />
                    </security>
                </binding>
         </wsHttpBinding>
     </bindings>
        <client>
            <endpoint address="http://localhost:7353/AuditFlow.svc" binding="wsHttpBinding"
                bindingConfiguration="WSHttpBinding_IAudit" contract="AuditFlowService.IAudit"
                name="WSHttpBinding_IAudit" />
        </client> 
</system.serviceModel>


client是程序调试用的,怎样把地址变成IIS上的地址,我试了一下直接把address改成IIS地址程序会报错
怎样实现到客户端改地址呢?
------解决思路----------------------
报什么错?
在客户端试试能不能访问到服务,能访问到就应该没有问题
------解决思路----------------------
我在配置文件中改地址正常没错。
不过我一般自己做配置文件,用代码实现创建binding和endpoint这样比较灵活些。
------解决思路----------------------
服务器有没有配置好端口和允许防火墙?
------解决思路----------------------
http://localhost:7353/AuditFlow.svc,这是你本机调试时的服务,你要发布到IIS相应的目录下,再添加服务引用时,加IIS服务器的IP,通过发现再引用进来,配置文件中的http://localhost:7353就可修改为http://IP
------解决思路----------------------
引用:
据说可以通过代码读取配置文件的service节点来实现,但我这个是客户端掉用,没有service节点。把地址改成iis重新编译倒是没问题,但这样一来就不能实现配置客户端功能了


晕!这是很常见的情况。

首先,正如msdn文档 http://msdn.microsoft.com/zh-cn/library/ms735103(v=vs.110).aspx 所显示的,要调用客户端,可以动态给出与配置文件不同的 remoteAddress 参数。

而服务器地址,不是你调试程序时的地址,是你的客户端程序在启动时应该到你的服务器去取的。也就是说,真正的程序,总应该给出这个 remoteAddress 参数,访问与开发编译时内置在程序中的不一样的参数。这个是客户端的业务逻辑。没有这个业务逻辑设计概念,才会以为总应该读取预编译的地址。
------解决思路----------------------
引用:
我在配置文件中改地址正常没错。
不过我一般自己做配置文件,用代码实现创建binding和endpoint这样比较灵活些。


是这样的!

不过这个配置,不是手工配置文件,而是发布到互联网上自动获取。

例如访问
    http://bbs.****.net/topics/390898010?enterprise=2124&userid=873