2011-11-23 14 views
4

データコントラクトの一部としてバイト配列を受け入れるWCFサービス操作があります。このサービスは内部でのみ公開されており(インターネットではない)、10MBのバイト配列を許可するためにクォータを増やしたいと考えています。IIS 7でホストされているWCFサービス - バインディング構成の設定が無視される

サービスはIIS7でホストされています。タイプ MyService.ServiceContracts.Dataのオブジェクトを逆シリアル化エラーが発生しました

:私はデフォルトの長さにわたってバイト配列を送信しようとすると、私は次の例外メッセージが表示されます。 XMLデータを読み取る際に最大配列長の制限( (16384))を超えました。 XMLリーダーを作成するときに使用される XmlDictionaryReaderQuotasオブジェクトのMaxArrayLengthプロパティを変更することによって、このクォータが増加して になる可能性があります。 ライン1、位置22991.

がここにコンフィギュレーションです:

<system.serviceModel> 
    <netTcpBinding> 
     <binding name="largeBinaryBinding" maxReceivedMessageSize="10001000" 
       maxBufferPoolSize="80008000" maxBufferSize="10001000" 
       receiveTimeout="00:01:00" openTimeout="00:01:00" 
       closeTimeout="00:01:00" sendTimeout="00:01:00"> 
      <readerQuotas maxArrayLength="10000000" /> 
     </binding> 
    </netTcpBinding> 

    <services> 
     <service name="MyService"> 
      <endpoint binding="netTcpBinding" 
         bindingConfiguration="largeBinaryBinding" 
         bindingNamespace="http://my.services.co.uk/MyService" 
         contract="Services.MyService.ServiceContracts.IMyService" /> 
     </service> 
    </services> 
</system.serviceModel> 

は、だから私の構成では、大きなメッセージを可能にしますが、IISはこれを無視しているようです - どのように私はこれを停止して大きなメッセージを許可しません?

答えて

9

私は質問を投稿した直後に、私は答えを発見する!

WASを使用する場合は、サービスの完全なクラス名を構成のサービス名で指定する必要があります。私の例では、MyServiceという名前のサービス実装クラスをネームスペースServicesに持っていました。したがって、構成で私は必要があります

<service name="Services.MyService"> 
    ... 

それ以外の場合、IISは慎重に細工された構成を黙って無視します。なんて都合のいい。

関連する問題