我有一个简单的WCF服务,它接受一些数据(wsHttpBiding)并返回一个结果。在客户端,加载包含代理包装器的DLL,并用于构建/提交服务请求。
这在大多数情况下都能很好地工作,但是对于少数用户来说,对客户端代理的提交调用会导致应用程序立即崩溃(没有错误,警告等 - 该过程会立即死亡)
问题似乎与用户Windows帐户有关:登录同一台计算机的不同用户不会遇到此问题。
寻找关于我可能从哪里开始寻找罪魁祸首的想法。那里有什么想法吗?
修改:
服务Web.Config:
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="Services.EventsBehavior">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
<serviceThrottling maxConcurrentSessions="100" />
</behavior>
<behavior name="Services.LayoutsBehavior">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>
<services>
<service behaviorConfiguration="Services.EventsBehavior" name="Services.Events">
<endpoint address="" binding="wsHttpBinding" contract="Services.IEvents">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
<host>
<timeouts openTimeout="00:00:45" />
</host>
</service>
<service behaviorConfiguration="Services.LayoutsBehavior" name="Services.Layouts">
<endpoint address="" binding="wsHttpBinding" bindingConfiguration="largeRequestMsg" contract="Services.ILayouts">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
</service>
</services>
<bindings>
<wsHttpBinding>
<binding name="largeRequestMsg" maxReceivedMessageSize="5000000"></binding>
</wsHttpBinding>
</bindings>
</system.serviceModel>
更新:(2011/03/18) 所以我已经能够进行一些测试(最后)并且不幸地无法在客户端计算机上使用测试工具重现该问题。
这让我相信在调用我的客户端dll(通过COM)时会出现一些引起问题的问题。
有什么想法吗?
答案 0 :(得分:0)
获取更多信息,尝试打开WCF跟踪,并使用trace viwer实用程序 如果源是WCF操作,则读取错误消息。 here's关于如何做到这一点的链接,并不复杂。 请注意跟踪文件可能很大。不要追踪超过 你需要时间来匹配数据。 (如果可能,开发机器在这里是理想的)
还有一件事,即时崩溃没有警告,可能是因为错误 发生在GUI的主线程以外的线程上。 (所以WCF调用确实是开始寻找的地方)。