1

次のコードを使用して Web サービスに接続しています。

            Dim wsRemote As New System.ServiceModel.EndpointAddress("http://www.exampleurl.com/example.asmx")
            Dim wsBinding As System.ServiceModel.Channels.Binding = Nothing
            Dim wsListenerBindingClass As Type = Nothing
            wsListenerBindingClass = GetType(System.ServiceModel.BasicHttpBinding)
            wsBinding = DirectCast(Activator.CreateInstance(wsListenerBindingClass), System.ServiceModel.Channels.Binding)
            Dim m_wsTest As wsExample.WebServiceSoapClient = New wsExample.WebServiceSoapClient(wsBinding, wsRemote)

m_wsTest クラス インスタンスは、xml 文字列ベースの情報を取得するためのいくつかのメソッドを提供します。文字列の合計サイズが 8192 (デフォルト) を超えると、(明らかに) 次のエラー メッセージが表示されます。

メッセージを逆シリアル化しようとしているときに、フォーマッタが例外をスローしました: パラメータ Test.ExampleWebservice:GetInfoResponse を逆シリアル化しようとしているときにエラーが発生しました。InnerException メッセージは、「Test.ExampleWebservice.wsTest.GetInfoResponseBody 型のオブジェクトの逆シリアル化でエラーが発生しました。XML データの読み取り中に、文字列コンテンツの最大長クォータ (8192) を超えました。このクォータは、XML リーダーの作成時に使用される XmlDictionaryReaderQuotas オブジェクトの MaxStringContentLength プロパティを変更することで増やすことができます。行 1、位置 12760.'。詳細については、InnerException を参照してください。

このエラー メッセージの意味と、何をしなければならないか (クォータを増やす) は理解していますが、どこでどのようにすればよいかわかりません。それで、これについてあなたの助けが必要です。

注意: インストールに「.exe.config」ファイルを含めたくありません。コードを介して、それなしで接続したい。

注意: 私は C# と VB.NET を理解しているので、コード例はどちらかにあるかもしれません。

4

1 に答える 1

1

必要な長さで ReaderQuotas を初期化し、バインディングに割り当てる必要があります。

        var readerqts = new XmlDictionaryReaderQuotas();
        readerqts.MaxStringContentLength = 20000;           
        wsListenerBindingClass.ReaderQuotas = readerqts;

あるいは、HTTPWebRequestを使用して WebService を通過する場合は、

      HTTPWebRequest.ContentLength = 10000;
于 2012-10-31T09:16:31.660 に答える