WCF代理提交崩溃 - 杀死进程

时间:2011-02-14 03:57:49

标签: .net wcf crash

我有一个简单的WCF服务,它接受一些数据(wsHttpBiding)并返回一个结果。在客户端,加载包含代理包装器的DLL,并用于构建/提交服务请求。

这在大多数情况下都能很好地工作,但是对于少数用户来说,对客户端代理的提交调用会导致应用程序立即崩溃(没有错误,警告等 - 该过程会立即死亡)

问题似乎与用户Windows帐户有关:登录同一台计算机的不同用户不会遇到此问题。

寻找关于我可能从哪里开始寻找罪魁祸首的想法。那里有什么想法吗?

修改

  1. 我正在尝试获取一个带有一些跟踪语句的版本,并将错误记录到受影响的计算机中。 .submit调用没有try / catch,但不应该异常通过调用堆栈进行备份(客户端/代理dll直接加载到主应用程序域中,但是超时之类的任何其他异常都会被简单地回传按预期进入主机应用程序)
  2. 服务器端的Web.Config如下
  3. 用户与其他用户位于同一个域中,正在使用默认凭据。在内部应用程序中,服务器位于同一网络上。
  4. 服务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)时会出现一些引起问题的问题。

    有什么想法吗?

1 个答案:

答案 0 :(得分:0)

获取更多信息,尝试打开W​​CF跟踪,并使用trace viwer实用程序 如果源是WCF操作,则读取错误消息。 here's关于如何做到这一点的链接,并不复杂。 请注意跟踪文件可能很大。不要追踪超过 你需要时间来匹配数据。 (如果可能,开发机器在这里是理想的)

还有一件事,即时崩溃没有警告,可能是因为错误 发生在GUI的主线程以外的线程上。 (所以WCF调用确实是开始寻找的地方)。