wcf 如何发布到 IIS 6 的  公网.我怎么做也发布不鸟.
只能发布到 Local下.选程访问就不行了

解决方案 »

  1.   

    你是以httpbinding方式发布的吗?只有这个http的binding才能在公网里使用。TCP的在公网应该不行,会被防火墙拦掉的,除非你的机器全裸在公网上。
      

  2.   

    <service behaviorConfiguration="WcfTest.Service1Behavior" name="WcfTest.Service1">
    <endpoint address="*" binding="basicHttpBinding" contract="WcfTest.Service1"/>
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
    </service>
      

  3.   

    <service behaviorConfiguration="WcfTest.Service1Behavior" name="WcfTest.Service1">
    <endpoint address="*" binding="basicHttpBinding" contract="WcfTest.Service1"/>
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
      

  4.   

    http://developer.51cto.com/art/200810/91601_8.htm
      

  5.   

    这里有和你遇到同样问题的朋友
    http://topic.csdn.net/u/20080623/18/8fa909d4-3ba6-423c-8ec9-b23919b462d1.html你可以服务器和开发机等需要的地方的hosts表加一条机器名对公网/内网IP的记录,或者使用svcutil.exe 工具生成代理文件,然后客户开发机使用代理文件开发,new Uri参数直接写IP。
    今天找了一个笨办法,搞定了这个事情,用disco.exe生成svc对应的wsdl和xsd文件,然后将里面的机器名改为固定ip地址,对其中的链接地址也要改,例如生成时可能是http://jason/JYLXIIS/IBaseSettingManager.svc?xsd=xsd2,那么首先把“jason”改为xx.xx.xx.xx,然后把IBaseSettingManager.svc?xsd=xsd2改为IBaseSettingManager.xsd,这些映射关系在disco产生的文件中有一个results.discomap文件中有详细的说明。最后把这些改好的文件放入到iis的虚拟目录下,改动一下web.config文件,在behavior节中增加externalMetadataLocation="http://xx.xx.xx.xx/Platform/BaseSettingManager.wsdl"这个扩展元数据地址,就可以了。美中不足的是以前我用一个Behavior就可以了,现在我不得不为每个endpoint来建立一个对应的behavior。 
    谢谢isline的回复。