执行服务方法后的WCF。 System.ServiceModel.CommunicationException:远程服务器返回错误:NotFound

时间:2013-07-09 12:58:48

标签: c# wcf silverlight entity-framework-4 .net-4.5

我的错误不一致,

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

  2. 执行服务方法本身。

  3. 如果我们播放的数据较少,它会执行不带导致任何问题[CSV和&amp ;; DB]

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

    情景:

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

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

    技术&使用的代码 实体框架-4用于获取初始记录。 使用普通的foreach / for循环进行比较。 用于现场比较的开关。 WCF,Silverlight,c#& .Net 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" />
    

    网络配置:

    <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 [以字节格式]&amp; 服务器到客户端(输出):如果它的数量很少那么就可以了[期待更多输入大小]

    还使用https NOT http

    谢谢, S.Venkatesh

2 个答案:

答案 0 :(得分:0)

如果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

答案 1 :(得分:0)

我在过去遇到过类似的错误,大部分时间是WCF服务失败了:ex一些与通信部分无关的异常。

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

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