2014-02-09 56 views
0

我使用wcf创建了一个休息服务。 我正在编写一个服务方法内的实体框架代码来从数据库中获取数据。调用两次的服务方法

每次来自浏览器的调用都会触发两次或三次服务方法。 我发现方法中没有例外。我之前遇到过同样的问题,并解决了将DataContract属性添加到所有模型(现在不帮助)的问题。

可能的原因是什么?请帮忙。

问候 阿希什

+0

[您是否尝试过使用WCF诊断](http://msdn.microsoft.com/en-us/library/ms733025(v = vs.110).aspx)? –

回答

3

跟踪Web服务是从开始点。

1.-添加以下到Web.config在您的WCF项目:

<system.diagnostics> 
<trace autoflush="true"> 
</trace> 
<sources> 
    <source name="System.ServiceModel" 
      switchValue="Information, ActivityTracing" 
      propagateActivity="true"> 
     <listeners> 
      <add name="sdt" 
       type="System.Diagnostics.XmlWriterTraceListener" 
       initializeData="WcfDetailTrace.e2e" /> 
     </listeners> 
    </source> 
</sources> 

然后执行你的服务,并签出项目中的文件“WcfDetaiTrace.e2e”的内容文件夹,它是一个XML文件。这样你会很容易发现你的服务有什么问题。存在的主要问题涉及:

  1. 缺少DataContracts/KnownTypes
  2. 日期时间序列化异常(溢)
  3. 使用错误的动词访问REST条目(GET,但应该是POST,PUT或DELETE)

希望它有帮助。

+0

太好了。它真的有帮助,否则你不知道,WTH会造成麻烦。 – Zeeshan

+0

什么会引起我的兴趣:当序列化出现问题时,为什么第二次调用该方法?我没有看到两次执行代码的好处。另外:是否可以禁用该行为,以避免执行该方法两次,只要序列化失败就会抛出错误? – NineBerry

1

有时候它会错误地序列化数据约定,这就是为什么它调用两次相同的方法。请检查您的数据合同类是否有重复的属性或任何其他问题。