Workflow (uses a WCF service on another domain) timeout problem RRS feed

  • Question

  • Hi

    I'm pretty new to workflow, and I have an interesting problem. I have a WCF service hosted somewhere, this is used by a lot of clients. The main purpose of this service is to download data(.zip, .csv, etc) files from some FTP server or over HTTP. These files can be pretty huge (30 to 300 MB). Now, I'm using workflow service, which has service reference to this WCF service. I have a flowchart kind of workflow service, where the user keys in the location of the data (FTP URL). For the time, I'm using the default client for this purpose, so when I key in the ftp url, my workflow sends a request to the WCF service, and it begins download (stores it in the BLOB). But I get the following error on my client:


    The request channel timed out while waiting for a reply after 00:00:59.9949997. Increase the timeout value passed to the call to Request or increase the SendTimeout value on the Binding. The time allotted to this operation may have been a portion of a longer timeout.

    Server stack trace: 
       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, TimeSpan timeout)
       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 ExternalDataService.DownloadData(String sourceURL, String destinationURL)
       at ExternalDataServiceClient.DownloadData(String sourceURL, String destinationURL)

    Inner Exception:
    The HTTP request to 'http://localhost:49621/ExternalDataCollection.xamlx' has exceeded the allotted timeout of 00:01:00. The time allotted to this operation may have been a portion of a longer timeout.
       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)

    Inner Exception:
    The operation has timed out
       at System.Net.HttpWebRequest.GetResponse()
       at System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelRequest.WaitForReply(TimeSpan timeout)


    If I use a console client I can modify the timeout parameters in the request, but I don't know how to do that in workflow! Any help?

    Should I consider using state machine diagrams? I don't think it can solve this problem, as when any state would send the request to the WCF service, the underlying connection would timeout. Is this correct?



    • Moved by Arwind - MSFT Thursday, April 26, 2012 9:40 AM (From:Connectivity and Messaging - Windows Azure)
    Thursday, April 26, 2012 6:39 AM

All replies