首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web Service >

关于WCF服务的各种异常

2012-02-13 
关于WCF服务的各种错误1 首先 创建一个wcf服务库 没有自己写一段代码 都是VS自带 的小例子希望各位好心人

关于WCF服务的各种错误
1 首先 创建一个wcf服务库 没有自己写一段代码 都是VS自带 的小例子 希望各位好心人能帮忙看看 分数不是问题 问题是我真没多少分 我的QQ是 783433664 有学习WCF 的可以加我 一起研究下哈  
下面是服务端CONfig文件
2

XML code
<?xml version="1.0" encoding="utf-8"?><configuration>  <system.web>    <compilation debug="true" />  </system.web>  <!-- 部署服务库项目时,必须将配置文件的内容添加到   主机的 app.config 文件中。System.Configuration 不支持库的配置文件。-->  <system.serviceModel>    <services>      <service name="WcfServiceLibrary2.Service1">        <host>          <baseAddresses>            <add baseAddress="http://www.911rmb.com/WcfServiceLibrary2.Service1.svc" />          </baseAddresses>        </host>        <!-- Service Endpoints -->        <!-- 除非完全限定,否则地址将与上面提供的基址相关 -->        <endpoint address="" binding="wsHttpBinding" contract="WcfServiceLibrary2.IService1">          <!--               部署时,应删除或替换下列标识元素,以反映             用来运行所部署服务的标识。删除之后,WCF 将              自动推断相应标识。          -->          <identity>            <dns value="www.911rmb.com" />          </identity>        </endpoint>        <!-- Metadata Endpoints -->        <!-- 元数据交换终结点供相应的服务用于向客户端做自我介绍。 -->         <!-- 此终结点不使用安全绑定,应在部署前确保其安全或将其删除-->        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />      </service>    </services>    <behaviors>      <serviceBehaviors>        <behavior>          <!-- 为避免泄漏元数据信息,          请在部署前将以下值设置为 false 并删除上面的元数据终结点  -->          <serviceMetadata httpGetEnabled="True" />          <!-- 要接收故障异常详细信息以进行调试,          请将以下值设置为 true。在部署前设置为 false             以避免泄漏异常信息-->          <serviceDebug includeExceptionDetailInFaults="False" />        </behavior>      </serviceBehaviors>    </behaviors>  </system.serviceModel>    <system.webServer>        <directoryBrowse enabled="true" />    </system.webServer></configuration>


在客户端端引用后生成的config 我自己修改了一下<security mode="None">
XML code
<?xml version="1.0" encoding="utf-8" ?><configuration>    <system.serviceModel>        <bindings>            <wsHttpBinding>                <binding name="WSHttpBinding_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"                    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="None" proxyCredentialType="None"                            realm="" />                        <message clientCredentialType="None" negotiateServiceCredential="true"                            algorithmSuite="Default" />                    </security>                </binding>            </wsHttpBinding>        </bindings>        <client>            <endpoint address="http://www.911rmb.com/WcfServiceLibrary2.Service1.svc"                binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_IService1"                contract="ServiceReference1.IService1" name="WSHttpBinding_IService1">                <identity>                    <dns value="www.911rmb.com" />                </identity>            </endpoint>        </client>    </system.serviceModel></configuration> 


客户端调用代码 
C# code
static void Main(string[] args)        {            ServiceReference1.Service1Client ss = new ServiceReference1.Service1Client();            while (true)            {                var ket = Console.ReadLine();                var value = ss.GetData(int.Parse(ket));                Console.WriteLine(value);            }        }


客户端显示错误为
无法处理消息。这很可能是因为操作“http://tempuri.org/IService1/GetData”不正确,或因为消息包含无效或过期的安全上下文令牌,或因为绑定之间出现不匹配。如果由于未处于活动状态导致服务中止了该通道,则安全上下文令牌无效。若要防止服务永久中止闲置会话,请增加服务终结点绑定上的接收超时

[解决办法]
你契约的命名空间地址有问题,注意:默认的是http://tempuri.org/,
修改为:Namespace="www.911rmb.com"试试
[解决办法]
看错误应该是服务器端要求安全认证,但是客户端没有提供

客户端的config要和服务器端匹配,一般不修改客户端,而是修改服务器端的配置。再在客户端update service reference...


[解决办法]
重新引用就不报错了
 

热点排行