一、创建时,WCF Service中HttpContext.Current为null的解决办法

1. 在hosting WCF的web.config中加入:

<system.serviceModel>

<serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>

</system.serviceModel>

2. 在Service的类定义上加上下面Attribute:

[AspNetCompatibilityrequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]

二、错误提示:调用方未由服务进行身份验证。

修改WCF服务的web.config文件system.serviceModel下添加配置:

<bindings>

<wsHttpBinding>

<binding name="bindingConfiguration1">

<security mode="None">

<transport clientCredentialType="None"/>

<message clientCredentialType="None"/>

</security>

</binding>

</wsHttpBinding>

</bindings>

</system.serviceModel>

</configuration>

并修改behaviors下的endpoint,添加bindingConfiguration="bindingConfiguration1"

三、已超过传入消息(65536)的最大消息大小配额

解决方案1:调用方的代码里加入:

(client.Endpoint.Binding as WSHttpBinding).MaxReceivedMessageSize = int.MaxValue;

解决方案2:修改客户端调用方的Config配置文件:

<system.serviceModel>

<bindings>

<wsHttpBinding>

<binding maxReceivedMessageSize="65536000"

四、调用时服务端返回400 Bad Request错误

解决方案:修改服务端的Config配置文件,增加maxReceivedMessageSize设置:

<system.serviceModel>

<bindings>

<wsHttpBinding>

<binding name="bindingConfiguration1" maxReceivedMessageSize="2147483647"

五、 无法打开安全通道,因为与远程终结点的安全协商已失败。

这可能是由于用于创建通道的 EndpointAddress 中不存在 EndpointIdentity 或错误指定了 EndpointIdentity。

请确认由 EndpointAddress 指定或暗示的 EndpointIdentity 正确标识了远程终结点。

这个错误通常是服务端相关配置修改了,删除引用,重新添加引用即可

六、接收对 http://xxx.svc 的 HTTP 响应时发生错误。这可能是由于服务终结点绑定未使用 HTTP 协议造成的。这还可能是由于服务器中止了 HTTP 请求上下文(可能由于服务关闭)所致。有关详细信息,请参阅服务器日志。

1、没有重新生成代理文件

2、这是因为WCF返回值无法序列化造成的

WCF的方法,不能返回Object、ICollection、IList之类的不明确的数据类型,但是IList<string>这样的类型可以返回,如果返回IList<SimpleSoft>这样的自定义类型,需要在接口上增加KnownType,如:

[ServiceContract]

[ServiceKnownType(typeof(SimpleSoft))]

public interface ISearchService

七、格式化程序尝试对消息反序列化时引发异常: 尝试对参数 http://tempuri.org/ 进行反序列化时出错: 方法名。InnerException 消息是“在行 1、位置 1485 出现错误。 元素“http://schemas.datacontract.org /2004/07/父类”含有“http://schemas.datacontract.org/2004/07/子类”数据协定的数据。反序列化程序 不知道映射到此协定的类型。请将与“子类”对应的类型添加到已知类型的列表中,例如,通过使用 KnownTypeAttribute 属性或通过将其添加到传递给 DataContractSerializer 的已知类型的列表等方法。”。有关详细信息,请参阅 InnerException。

接口返回父类,但是实际返回的是子类,就会出现这个错误,解决方法,在父类定义上添加属性,如:

[KnownType(typeof(FullSoft))]

public class SimpleSoft

八、读取 XML 数据时,超出最大字符串内容长度配额 (8192)。通过更改在创建 XML 读取器时所使用的 XmlDictionaryReaderQuotas 对象的 MaxStringContentLength 属性,可增加此配额。

解决方案:修改客户端的Config配置文件,增加maxStringContentLength设置:

<system.serviceModel>

<bindings><wsHttpBinding><binding name=""....>

<readerQuotas maxStringContentLength="2147483647"

九、无 法激活服务,因为它不支持 ASP.NET 兼容性。已为此应用程序启用了 ASP.NET 兼容性。请在 web.config 中关闭 ASP.NET 兼容性模式或将 AspNetCompatibilityRequirements 属性添加到服务类型且同时将 RequirementsMode 设置为“Allowed”或“Required”。

解决办法:

修改相应   服务.svc.cs

using System.ServiceModel.Activation ;

[AspNetCompatibilityRequirements (RequirementsMode=AspNetCompatibilityRequirementsMode.Required)]

十、WCF接口的参数,如果是枚举值,则必须是已经定义的枚举

比如枚举定义: enum aaa{aa=1, bb=2} 如果参数有aaa类型,传递3就会出错,因为枚举定义里没有3

如果枚举定义加上Flags属性,就可以传递3了(等于是aaa.aa | aaa.bb)

[Flags]

enum aaa{aa=1, bb=2}

十一、作为WCF接口的参数,其成员必须有public的set属性,否则不会传递,比如下面的a参数可以在wcf中使用,下面的b参数无法使用:

public aaa{

public int a{get;set;}

public int b{get;private set;}

}

十二、System.ArgumentException: 此集合已经包含方案 http 的地址。此集合中每个方案中最多只能包含一个地址。

WCF 针对每个schema只支持一个绑定,所以站点不能绑定多个主机头来使用WCF,如果绑定多个主机头,可以在Web.config里配置,但是如下配置后,其它主机头无法使用这个wcf:

<serviceHostingEnvironment>

<baseAddressPrefixFilters>

<add prefix="http://www.cnblogs.com/"/>

</baseAddressPrefixFilters>

</serviceHostingEnvironment>

十三、在wcf项目下,找到web.config 文件修改如下(蓝色部分)

<behaviors>
     <serviceBehaviors>
        <behavior>
          <!-- 为避免泄漏元数据信息,请在部署前将以下值设置为 false 并删除上面的元数据终结点 -->
          <serviceMetadata httpGetEnabled="true"/>
          <!-- 要接收故障异常详细信息以进行调试,请将以下值设置为 true。在部署前设置为 false 以避免泄漏异常信息 -->
          <dataContractSerializer maxItemsInObjectGraph="2147483647"/>
          <serviceDebug includeExceptionDetailInFaults="true"/>
        </behavior>
      </serviceBehaviors>
  </behaviors>

WCF常见问题的更多相关文章

  1. WCF常见问题(1) -- WebService/WCF Session Cookie

    原文:WCF常见问题(1) -- WebService/WCF Session Cookie 在.net 3.0推出WCF之前使用的WebService,有的应用有使用Session保持一些信息,在不 ...

  2. WCF学习系列一【WCF Interview Questions-Part 1 翻译系列】

    http://www.topwcftutorials.net/2012/08/wcf-faqs-part1.html WCF Interview Questions – Part 1 This WCF ...

  3. C#中使用WCF一些常见问题及解决方案

    最近在学习WCF,在这过程当中我遇到了很多的问题,简单说说我遇到的问题已经可能有效的解决方案. 1.在C#中,同一个解决方案下无法引用别的项目,引用之后会有一个警告,查看属性找不到引用的路径,这种情况 ...

  4. WCF 数据服务 4.5

    .NET Framework 4.5 其他版本 WCF 数据服务(以前称为"ADO.NET Data Services")是 .NET Framework 的一个组件.可以使用此组 ...

  5. [Silverlight]常见问题

    [Silverlight]常见问题 1. Silverlight项目是否支持ADO.NET对象? 不支持,Silverlight不支持常见的ADO.NET对象,如DataTable,DataSet,D ...

  6. WCF技术

      在WCF数据访问中使用缓存提高Winform字段中文显示速度 伍华聪 2014-09-06 12:50 阅读:2507 评论:1     WCF开发框架之插件化应用模式升级 伍华聪 2013-07 ...

  7. WCF 4.0 如何编程修改wcf配置,不使用web.config静态配置

    How to programmatically modify WCF without web.config setting WCF 4.0 如何编程修改wcf配置,不使用web.config静态配置 ...

  8. 四、利用EnterpriseFrameWork快速开发基于WCF为中间件的三层结构系统

    回<[开源]EnterpriseFrameWork框架系列文章索引> EnterpriseFrameWork框架实例源代码下载: 实例下载 本章内容与上一张<利用Enterprise ...

  9. 【msdn】RESTful 服务(配备 WCF)介绍

    原文地址:http://msdn.microsoft.com/zh-cn/magazine/dd315413.aspx RESTful 服务(配备 WCF)介绍 Jon Flanders 代码下载位置 ...

随机推荐

  1. 接着上回,导包正确之后,出现javabean.Friend cannot be cast to java.util.List,的错误。找了很久。以为是User user0作为参数,改成了String username还是错误,看了看listFriend.jsp没有错误,我想会不会是包多了,导致类型复杂。最后发现包少了一个:

    import org.apache.commons.dbutils.handlers.BeanListHandler;这个包,BeanListHandler让我发现List<Friend> ...

  2. ImportError: cannot import name webdriver解决方案

        在sublime写一个Python程序的时候,使用from selenium import webdriver,在run的时候却出现ImportError: cannot import nam ...

  3. 杂项-关于strlen()的使用

    发现了一个很坑的东西. 看下面两份代码: //code1 char s[N]; ;i<strlen(s);i++)Do(); //code2 char s[N]; ;s[i];i++)Do(); ...

  4. win7 删除多余启动项的方法

    win7已经没有像xp那么简单的boot.ini让我们修改了,取而代之的是bcdedit.现在就简单的说下bcdedit的常规应用吧.开始,运行,输入bcdedit /?可以看到帮助.简单的应用开始. ...

  5. 2016.10.4初中部下午NOIP普及组比赛总结

    2016.10.4初中部下午NOIP普及组比赛总结 这次的题有些水,只是第四题有点坑. 题目: 比赛:AC+0+AC+50=250 改题:AC+AC+AC+50=350 一.Bill 满地都是水 题目 ...

  6. SpringData_02_JPQL查询、SQL查询和方法命名规则查询

    1.使用JPQL的方式查询 JPQL查询:Hibernate提供的是HQL查询,而JPA提供的是JPQL查询语言 使用Spring Data JPA提供的查询方法已经可以解决大部分的应用场景,但是对于 ...

  7. Android HttpClient 用法以及乱码解决

    一.Post提交 并可以实现多文件上传 // 创建DefaultHttpClient对象 HttpClient httpclient = new DefaultHttpClient(); // 创建一 ...

  8. 北京服务业占GDP比重达81.7%

    北京服务业占GDP比重达81.7% 2017-05-17 19:46:00 来源: 中国新闻网(北京)举报   0 易信 微信 QQ空间 微博 更多 (原标题:北京服务业占GDP比重达81.7%)   ...

  9. 局域网下共享 MySQL 数据库连接

    转载自:https://blog.csdn.net/larger5/article/details/96974554 一.前言 在使用公司的一些开发框架,需要特定的 MySQL 版本,还要做一些配置操 ...

  10. 将UBB编码转成标准的HTML代码

    /// <summary> /// 将UBB编码转成标准的HTML代码 /// </summary> /// <param name="argString&qu ...