GVKun编程网logo

大数据接收时WCF Web服务失败(webservice传输大数据)

8

此处将为大家介绍关于大数据接收时WCFWeb服务失败的详细内容,并且为您解答有关webservice传输大数据的相关问题,此外,我们还将为您介绍关于.net–不同的WSDLASMX,WCFWeb服务、

此处将为大家介绍关于大数据接收时WCF Web服务失败的详细内容,并且为您解答有关webservice传输大数据的相关问题,此外,我们还将为您介绍关于.net – 不同的WSDL ASMX,WCF Web服务、.net – 处理自托管WCF Web服务中的并发请求、ASP.net Web服务与WCF、asp.net – 与WCF和其他Web服务有什么区别?的有用信息。

本文目录一览:

大数据接收时WCF Web服务失败(webservice传输大数据)

大数据接收时WCF Web服务失败(webservice传输大数据)

我在本地(或远程)调用WCF Web服务,该服务在少量数据(约25行< 1K数据ea)下工作正常.但是当数据变得更大(大约300行)时,Web服务就会失败.下面是内部异常的异常,内部异常和堆栈跟踪. 该服务在本地执行似乎也花了很长时间(我添加这个因为它可能会给你一些解决方案的暗示).获取大量数据需要3s服务器端,而小数据需要1s服务器端.但是,运行Web服务(本地)以获取少量数据需要24秒. 我还从我的客户端测试应用程序中包含了app.config中的绑定信息. =========绑定信息===========
<system.serviceModel>
  <bindings>
    <basicHttpBinding>
      <binding name="BasicHttpBinding_IFormsService" closeTimeout="00:01:00"
          openTimeout="00:01:00" receiveTimeout="02:00:00" sendTimeout="00:02:00"
          allowCookies="false" bypassproxyOnLocal="false" 
          hostNameComparisonMode="StrongWildcard"
          maxBufferSize="2147483647" maxBufferPoolSize="2147483647" 
          maxReceivedMessageSize="2147483647"
          messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
          useDefaultWebProxy="true">
        <readerQuotas maxDepth="32" maxStringContentLength="1000000000" 
                      maxArrayLength="1000000000"
                      maxBytesPerRead="4096" maxNaMetableCharCount="16384" />
        <security mode="None">
           <transport clientCredentialType="None" 
                      proxyCredentialType="None" realm="" />
           <message clientCredentialType="UserName" algorithmSuite="Default" />
        </security>
     </binding>
  </basicHttpBinding>
</bindings>
<client>
  <endpoint 
        address="http://monica-pc/TrialIQSvc/FormsService.svc/FormsService/FormsService.Svc"
        binding="basicHttpBinding" 
        bindingConfiguration="BasicHttpBinding_IFormsService"
        contract="WebService.IFormsService" name="BasicHttpBinding_IFormsService" />
</client>

========= EXCEPTION DATA =============

**Exception**: An error occurred while receiving the HTTP response to http://monica-pc/TrialIQSvc/FormsService.svc/FormsService/FormsService.Svc. This Could be due to the service endpoint binding not using the HTTP protocol. This Could also be due to an HTTP request context being aborted by the server (possibly due to the service shutting down). See server logs for more details.

**Inner Exception**: The underlying connection was closed: An unexpected error occurred on a receive.
   **Stack trace**: 
Server stack trace: 
   at System.ServiceModel.Channels.HttpChannelUtilities.ProcessGetResponseWebException(WebException webException,HttpWebRequest request,HttpAbortReason abortReason)
   at System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelRequest.WaitForReply(TimeSpan timeout)
   at System.ServiceModel.Channels.RequestChannel.Request(Message message,TimeSpan timeout)
   at System.ServiceModel.dispatcher.RequestChannelBinder.Request(Message message,TimeSpan timeout)
   at System.ServiceModel.Channels.ServiceChannel.Call(String action,Boolean oneway,ProxyOperationRuntime operation,Object[] ins,Object[] outs,Object[] outs)
   at System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall,ProxyOperationRuntime operation)
   at System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)

Exception rethrown at [0]: 
   at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg,IMessage retMsg)
   at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData,Int32 type)
   at Test.WebService.IFormsService.GetFormGroupInstance(String formGroupId,String subjectId,String userId)
   at Test.WebService.FormsServiceClient.GetFormGroupInstance(String formGroupId,String userId) in G:\SVNTrialIQ\trunk\Common\trunk\source\Forms\Test\Service References\WebService\Reference.cs:line 59
   at Test.Form1.btnInstanceInfo_Click(Object sender,EventArgs e) in G:\SVNTrialIQ\trunk\Common\trunk\source\Forms\Test\Form1.cs:line 408

解决方法

要获取扩展错误信息,请尝试使用 SvcTraceViewer.

.net – 不同的WSDL ASMX,WCF Web服务

.net – 不同的WSDL ASMX,WCF Web服务

我有asmx web-service,它可以从其他客户端(.NET,Delphi)成功使用.

我尝试来到wcf,并在WCF服务中编写相同的逻辑(basicHttpBinding用于互操作性). (.net客户端消耗正常,但delphi 7无法调用此服务).

我开始研究两种服务(asmx,wcf)之间的差异并检测它们的wsdl是不同的:

WSDL asmx:

<s:element name="Test">

<s:complexType>

<s:sequence>
<s:element minOccurs="1" maxOccurs="1" name="a" type="s:int"/>
</s:sequence>
</s:complexType>
</s:element>

<s:element name="TestResponse">

<s:complexType>

<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="TestResult" type="s:string"/>
</s:sequence>
</s:complexType>
</s:element>

wcf的wsdl是相当不同的:

<wsdl:operation name="Test"> <soap:operation soapAction="http://tempuri.org/isyncer/Test"/>

<wsdl:input> <soap:body use="literal"/> </wsdl:input>

<wsdl:output> <soap:body use="literal"/> </wsdl:output>

<wsdl:fault name="ServiceFaultExceptionFault"> <soap:fault name="ServiceFaultExceptionFault" use="literal"/> </wsdl:fault> </wsdl:operation>

我认为delphi无法生成正确的代理是一个共鸣.

我可以配置wcf来生成与asmx相同的wsdl.

谢谢.

解决方法

您必须展平WSDL.请查看 http://geekswithblogs.net/EltonStoneman/archive/2008/07/30/flattening-wsdl-from-wcf-services.aspx和 http://wcfextras.codeplex.com/以获取信息.

.net – 处理自托管WCF Web服务中的并发请求

.net – 处理自托管WCF Web服务中的并发请求

我开始开发以下场景(Visual Studio 2010,WCF):我们网络中的不同客户端将调用我自己开发的Web服务,该服务作为 Windows服务的一部分托管,因此我们讨论的是自托管WCF Windows服务中的Web服务.

自托管的WCF Web服务将依次调用外部Web服务,因此就像一种外观.

显然,我的自托管WCF Web服务需要接受并发调用,这就是我的问题:我计划在我自己托管的WCF Web服务上从不同客户端调用的操作中,我只是创建客户端外部Web服务,调用外部Web服务,从外部Web服务获得同步响应,然后回复调用客户端.

听起来很简单,但是我需要考虑多个线程进入我的服务主机吗?显然我需要小心主机本身的任何“全局”变量,但如果我只是在被调用的Web服务的不同操作中创建外部Web服务客户端,或者我忽略了什么,我应该保存?

谢谢大家!

干杯,
斯特沃

解决方法

这里有一些选择,特别是因为它们与WCF实例化和并发性有关.

实例:你的选择是

> PerCall:为每个客户端请求创建一个新的InstanceContext(以及服务对象).
> PerSession:为每个新客户端会话创建一个新的InstanceContext(以及服务对象),并在该会话的生命周期内进行维护(这需要一个支持会话的绑定).
> Single:单个InstanceContext(以及服务对象)处理应用程序生命周期内的所有客户端请求.

并发:

> Single:允许每个实例上下文一次在实例上下文中最多具有一个线程处理消息.其他希望使用相同实例上下文的线程必须阻塞,直到原始线程退出实例上下文
> Multiple:每个服务实例可以有多个线程同时处理消息.服务实现必须是线程安全的才能使用此并发模式.
>可重入:每个服务实例一次处理一条消息,但接受可重入的操作调用.该服务仅在通过WCF客户端对象调用时才接受这些调用.

让我们先看看Instancing:

每次呼叫:基本上发生的情况是,如果两个客户端呼叫您的服务,则会创建两个不同的服务实例,然后在呼叫完成后销毁

每个会话:如果这两个客户端通过您的代理分别进行2次调用,则在主机上为这两个调用创建的wcf实例将是相同的(对于每个代理,因此2个实例每个服务2个但每个调用者转到同一个实例),然后毁了

单一:代理/客户端将使用相同的实例,因此调用者1调用操作,然后调用者2进行调用,同一实例将被重用.

挺直的.

就并发性而言,它一次在上述实例上下文中活动的线程数.在这里,我有经验和MSDN,其中指出“理解和开发安全使用多个线程的代码可能难以编写”(但并非不可能)

因此,基于您的要求,似乎您不希望维护状态和可伸缩性可能会引起关注,因为您正在为多个代理调用提供服务,并且您不需要共享任何类型的全局数据,这需要单实例模式,那么最多可能的解决方案是:

[ServiceBehavior
(ConcurrencyMode.Single,InstanceContextMode=InstanceContextMode.PerCall)] 
public class YourService: IYourService
{
}

ASP.net Web服务与WCF

ASP.net Web服务与WCF

.net桌面应用程序将信息发送到中央服务器,可能会有成千上万的桌面应用程序将信息发送到我的服务器.

数据量很小.

.net网络服务是否适合这种场景或者WCF会更适合?

有哪些优点/缺点?

解决方法

我将使用基于WCF REST的服务,因为您将能够传输纯数据,而不会产生基于SOAP的经典.asmx Web服务附带的SOAP标头(以及其他信封废话)的开销.

asp.net – 与WCF和其他Web服务有什么区别?

asp.net – 与WCF和其他Web服务有什么区别?

我对WCF和其他Web服务(例如asp.net ASMX,.net Remoting)感到困惑,任何人都可以告诉我与WCF和其他人有什么区别,我应该何时使用它,谢谢!

解决方法

WCF是一个通信堆栈,允许通过HTTP(如ASMX)和TCP(如Remoting)以及命名管道(实际上是一个机器内跨进程调用),MSMQ和.NET 3.5 REST来公开服务.

它允许这样做,因为它将服务的通信部分与业务逻辑分离开来.您需要做的就是使用适当的合同属性([SeriviceContract],[OperationContract]和[DataContract])分别装饰您的服务类,方法和DTO.)

这样做的好处是能够编写一次服务,并允许许多不同类型的客户端使用相同的服务(即Java客户端可以使用HTTP,.NET客户端可以使用TCP,传统可以使用MSMQ等).

WCF仍然允许您使用每个传输的所有功能,包括安全性,事务,可靠的消息传递等,但您需要谨慎使用.并非所有功能都适用于所有传输,您需要进行相应的设计. WCF允许您在合同中指定需要哪些功能.这可以防止somone以不支持所需功能集的方式尝试公开您的服务(即,如果您的服务需要事务,则WCF运行时将不允许通过基本HTTP端点访问服务).

WCF还可以通过自定义行为(它影响WCF运行时的工作方式)和自定义通道(控制WCF服务如何与外部世界通信)进行扩展.

与ASMX相比,WCF有一点学习曲线,但ABSOLUTLY的优势在于延缓了这一学习曲线的重要性.

希望有所帮助.

我们今天的关于大数据接收时WCF Web服务失败webservice传输大数据的分享已经告一段落,感谢您的关注,如果您想了解更多关于.net – 不同的WSDL ASMX,WCF Web服务、.net – 处理自托管WCF Web服务中的并发请求、ASP.net Web服务与WCF、asp.net – 与WCF和其他Web服务有什么区别?的相关信息,请在本站查询。

本文标签: