WCF在执行服务方法之后.System.ServiceModel.CommunicationException:远程服务

本文关键字:ServiceModel CommunicationException 远程服务 System 之后 执行 服务 方法 WCF | 更新日期: 2023-09-27 18:21:43

我得到的错误不一致,

  1. 成功执行服务方法后(在服务和客户端之间的数据传递之间)

  2. While执行服务方法本身。

  3. 如果我们使用低数据[CSV和DB中的数千个数据],它将执行而不会导致任何问题

我有谷歌&在配置文件中尝试了很多,如果有什么需要检查IIS级别,请帮助我。

场景:

我上传了文件(CSV),其中包含100000(10万)条记录&DB还包含10万条记录&要求是将csv的每个记录与DB记录进行比较&给出记录不同的合并输出(通过比较每个字段)。

客户端到服务:文件通过字节格式传输客户端服务:集合对象[通用列表格式]

技术&使用的代码用于获取初始记录的实体框架-4。使用正常foreach/for循环进行比较。用于现场比较的开关。WCF、Silverlight、c#&净4.5

以下是我的设置,

服务配置:

    <basicHttpBinding>
    <binding name="basicHttpBinding_IUploadService" maxBufferPoolSize="2147483647" closeTimeout="00:45:00"
              openTimeout="00:45:00" receiveTimeout="00:45:00" sendTimeout="00:45:00" maxBufferSize="2147483647"
                        maxReceivedMessageSize="2147483647">
              <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647"
                    maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
              <security mode="Transport">
                <transport clientCredentialType="None" proxyCredentialType="None"
                  realm="" />
                <message clientCredentialType="UserName" algorithmSuite="Default" />
              </security>
            </binding>
    </basicHttpBinding>
<service name="Namespace.UploadService">
        <endpoint address="" binding="basicHttpBinding" bindingConfiguration="basicHttpBinding_IUploadService"
           contract="Namespace.IUploadService" >
          <identity>
            <dns value="localhost" />
          </identity>
        </endpoint>
        <endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange" />
</service>
<behavior name="">
          <serviceMetadata httpsGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="true" />
          <ServiceErrorBehaviour/>
</behavior>

客户端配置:

<binding name="BasicHttpBinding_IUploadService" closeTimeout="00:45:00"
          openTimeout="00:45:00" receiveTimeout="00:45:00" sendTimeout="00:45:00"
          maxBufferSize="2147483647" maxReceivedMessageSize="2147483647">
          <security mode="Transport" />
</binding>
<endpoint address="https://localhost/URL/Upload.svc"
        binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IUploadService"
        contract="UploadService.IUploadService" name="BasicHttpBinding_IUploadService" />

Web配置:

<system.web>
    <compilation debug="true" targetFramework="4.5"/>
    <authentication mode="Windows"/>
    <httpRuntime maxRequestLength="2147483647" executionTimeout="2700" enableVersionHeader="false"/>
    <pages controlRenderingCompatibilityVersion="4.0" clientIDMode="AutoID"/>
  </system.web>

错误:

System.ServiceModel.CommunicationException: The remote server returned an error: NotFound. ---> System.Net.WebException: The remote server returned an error: NotFound. ---> System.Net.WebException: The remote server returned an error: NotFound.
   at System.Net.Browser.BrowserHttpWebRequest.InternalEndGetResponse(IAsyncResult asyncResult)
   at System.Net.Browser.BrowserHttpWebRequest.<>c__DisplayClassa.<EndGetResponse>b__9(Object sendState)
   at System.Net.Browser.AsyncHelper.<>c__DisplayClass4.<BeginOnUI>b__0(Object sendState)
   --- End of inner exception stack trace --- & ...

字节大小客户端到服务器(输入):10Mb〔以字节为单位〕&服务器到客户端(输出):如果它的数量很小,则罚款其他问题[预期大于输入大小]

同时使用https而不是http

谢谢,S.文卡特什

WCF在执行服务方法之后.System.ServiceModel.CommunicationException:远程服务

如果WCF抛出错误,Silverlight总是抛出NotFound,因为HTTP响应代码为500:此错误代码强制Silverlight抛出NotFound。

因此,首先尝试在执行此调用时调试WCF。如果你不能做到这一点,让WCF在某个地方记录错误。如果您喜欢在silverlight端抛出相应的错误,那么您必须使用服务器WCF行为,即使发生错误,该行为也会使WCF返回200代码。

更多信息请点击此处:http://msdn.microsoft.com/en-us/library/ee844556(v=vs.95).aspx

我过去也遇到过类似的错误,大多数时候都是WCF服务失败了:例如一些与通信部分无关的异常。

如果可能,调试WCF服务本身;或者,您可以使用以下实用程序设置跟踪,并确保WCF正确返回调用:

http://msdn.microsoft.com/en-us/library/ms732023.aspx