2011-11-13 20 views
1

こんにちはwcfとストリーミングを使用してファイルをアップロードする際に問題があります。私はtransferMode = "Streamed"から "Buffered"にクライアント上で切り替えると、ストリーミングされませんが、例外はありません。クライアントを「ストリーミング」に切り替えると失敗します。私はこれで今何時間も気分を失ってしまっていないし、すべてのサイズを最大にして失敗しないようにしている。何が間違っているのか分かりません。誰でもそれを見つけることができますか?次のように構成されたWCFでストリーミングモードを使用して大きなファイルをアップロードする

<system.serviceModel> 
    <bindings> 
     <basicHttpBinding> 
     <binding name="GreenWebManagerServiceBinding" maxReceivedMessageSize="2147483647" maxBufferSize="2147483647" transferMode="Streamed" messageEncoding="Text" textEncoding="utf-8" > 
      <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647"/> 
      <security mode="None"> 
      </security> 
     </binding> 
     </basicHttpBinding> 
    </bindings> 
    <services> 
     <service behaviorConfiguration="GreenWebManagerServiceBehavior" name="GreenWebManagerService.ManagerService"> 
     <host> 
      <baseAddresses> 
      <add baseAddress="http://localhost:50036/GreenWebManagerService"/> 
      </baseAddresses> 
     </host> 
     <endpoint address="" binding="basicHttpBinding" bindingConfiguration="GreenWebManagerServiceBinding" contract="GreenWebManagerService.IGWManagerService"/> 
     <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> 
     </service> 
    </services> 
    <behaviors> 
     <serviceBehaviors> 
     <behavior name="GreenWebManagerServiceBehavior"> 
      <serviceMetadata httpGetEnabled="true" /> 
      <dataContractSerializer maxItemsInObjectGraph="2147483647" /> 
      <serviceDebug includeExceptionDetailInFaults="true" /> 
      <serviceThrottling maxConcurrentCalls="500" maxConcurrentSessions="500" maxConcurrentInstances="500" /> 
     </behavior> 
     </serviceBehaviors> 
    </behaviors> 
    </system.serviceModel> 

とクライアント:

私は次のように構成されたサービス持って、私は次のエラーとスタックトレースを取得し

<system.serviceModel> 
      <bindings> 
       <basicHttpBinding> 
        <binding name="BasicHttpBinding_IGWManagerService" closeTimeout="10:01:00" 
         openTimeout="10:01:00" receiveTimeout="10:10:00" sendTimeout="10:01:00" 
         allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" 
         maxBufferSize="2147483647" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647" 
         messageEncoding="Text" textEncoding="utf-8" transferMode="Streamed" 
         useDefaultWebProxy="true"> 
         <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" 
          maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" /> 
         <security mode="None"> 
          <transport clientCredentialType="None" proxyCredentialType="None" 
           realm="" /> 
          <message clientCredentialType="UserName" algorithmSuite="Default" /> 
         </security> 
        </binding> 
       </basicHttpBinding> 
      </bindings> 
      <client> 
       <endpoint address="http://localhost:50036/GWManagerService.svc" 
        binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IGWManagerService" 
        contract="ManagerService.IGWManagerService" name="BasicHttpBinding_IGWManagerService" /> 
      </client> 
     </system.serviceModel> 

を、数字はバイトであることに注意してください私はコンソールに書き込みを読む:

A first chance exception of type 'System.Net.Sockets.SocketException' occurred in System.dll 
A first chance exception of type 'System.ServiceModel.ProtocolException' occurred in System.ServiceModel.dll 
A first chance exception of type 'System.ServiceModel.ProtocolException' occurred in System.ServiceModel.dll 
256 
4352 
69888 
135424 
200960 
266496 
332032 
397568 
463104 
528640 
594176 
659712 
725248 
790784 
856320 
921856 
987392 
1052928 
1118464 
1184000 
1249536 
1315072 
1380608 
1446144 
1511680 
1577216 
1642752 
1708288 
1773824 
1839360 
1904896 
1970432 
2002629 
2002629 
A first chance exception of type 'System.Net.WebException' occurred in System.dll 
A first chance exception of type 'System.ServiceModel.ProtocolException' occurred in System.ServiceModel.dll 
A first chance exception of type 'System.ServiceModel.ProtocolException' occurred in mscorlib.dll 
Step into: Stepping over method without symbols 'System.Reflection.TargetInvocationException.TargetInvocationException' 
A first chance exception of type 'System.Reflection.TargetInvocationException' occurred in mscorlib.dll 
Step into: Stepping over method without symbols 'System.RuntimeType.CreateInstanceImpl' 
A first chance exception of type 'System.Reflection.TargetInvocationException' occurred in mscorlib.dll 
Step into: Stepping over method without symbols 'MS.Internal.Xaml.Runtime.ClrObjectRuntime.CreateInstance' 
A first chance exception of type 'System.Xaml.XamlObjectWriterException' occurred in System.Xaml.dll 
Step into: Stepping over method without symbols 'System.Windows.Markup.WpfXamlLoader.Load' 

答えて

1

あなたの例外はwpf xとして始まりますamlローダー例外。

そのデータをWPFコントロールに直接ストリーミングしようとしているようです。これが問題である可能性があります。

何をしているかによって、データをクライアントにストリーミングすることができます。その後、データがすべて終わったら、WPFコントロールにバインドします。

+0

アップロードクライアントがWPFクライアントであるため、ストリームを開き、cassini内でホストされているWCFサービス(.svc)に送信します。 –

関連する問題