6

When trying to pass a small FileStream to my WCF service I get "Timeouts are not supported on this stream" error. Can anyone see what I'm doing wrong?

Interface:

[OperationContract]
List<SystemClass> ReadExcelFile(System.IO.FileStream stream);

Web.Config

<bindings>
  <basicHttpBinding>
    <binding name="streaming" maxReceivedMessageSize="2147483647" transferMode="Streamed">
    </binding>
  </basicHttpBinding>
</bindings>

<services>
  <service name="MISDashboard.wcfService" behaviorConfiguration="">
    <endpoint address="" binding="basicHttpBinding" bindingConfiguration="streaming" contract="MISDashboard.wcfService"></endpoint>
  </service>
</services>
...
<httpRuntime maxRequestLength="2147483647"/>
4

2 に答える 2

5

FileStreamパラメータとして使用しないでくださいStream。AFileStreamは、ローカル ファイル システムにバインドされたストリームです。データの転送を開始すると、反対側ではストリームがネットワークから来るため、そこで FileStream を使用することはできません。

ほとんど同じだと思われるかもしれませんがStream、WCF によって特別な方法で処理され、多くの内部タスクがバイパスされます。

また、ラージ データの送信については、この素晴らしい記事を読むことを検討してください。

于 2013-07-03T07:54:01.797 に答える
0

I guess the issue over here is about the ReadTimeOut and WriteTimeOut properties. Under the hood WCF must be trying to set them up and as these are not implemented in FileStream class it throws the exception. So if you define the method Argument type as Stream WCF should create the appropriate stream that is required for data streaming. I would guess NetworkStream.

于 2013-07-03T20:45:59.610 に答える