0

私は InfoPath フォーム (InfoPath 2010) を作成しており、カスタム コードでは、以下のように送信アクションの一部として WCF サービスをプログラムで呼び出しています。

DriverHours.DriverHours allHours = new DriverHours.DriverHours(); ブール仕様;

    XPathNavigator myNav = this.MainDataSource.CreateNavigator();

    string allData = myNav.OuterXml;
    allData = allData.Replace("my:", "");

   result = allHours.SaveDriverHoursByString(allData);

SaveDriverHoursByString は XML データの文字列を取得し、WCF を介してバックエンドのデータベースに保存します。

submit ブロックが実行されると、最後の行に次のエラーが表示されます。

System.Web.Services.Protocols.SoapHeaderException
The formatter threw an exception while trying to deserialize the message: There was an error while trying to deserialize parameter http://tempuri.org/:Xml. The InnerException message was 'There was an error deserializing the object of type System.String. The maximum string content length quota (8192) has been exceeded while reading XML data. This quota may be increased by changing the MaxStringContentLength property on the XmlDictionaryReaderQuotas object used when creating the XML reader. Line 208, position 21.'.  Please see InnerException for more details.
   at System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage message, WebResponse response, Stream responseStream, Boolean asyncCall)
   at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters)
   at HrsServicetemplate.DriverHours.DriverHours.SaveDriverHoursByString(String Xml)
   at HrsServicetemplate.FormCode.FormEvents_Submit(Object sender, SubmitEventArgs e)
   at Microsoft.Office.InfoPath.Internal.FormEventsHost.OnSubmit(DocReturnEvent pEvent)
   at Microsoft.Office.Interop.InfoPath.SemiTrust._XDocumentEventSink2_SinkHelper.OnSubmitRequest(DocReturnEvent pEvent)

今、解決策は、WCF サービスの web.config でコンテンツの長さを増やすことであることがわかりました。以下は現在の web.config ファイルであり、エラーは引き続き発生します。

<?xml version="1.0"?>
<configuration>
  <connectionStrings>
   <!--<add name="IFMS_Connection" connectionString="Data Source=aaaa;User Id=aaaa;Password=abcdefg;"/>    -->
    <add name="IFMS_Connection" connectionString="Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=aaaa)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME = ORCLDEVL)));User Id=aaa;Password=aaaa;"/>

  </connectionStrings>
  <system.web>
   <httpRuntime maxRequestLength="2147483647" />
   <compilation debug="true" targetFramework="4.0" />
  </system.web>
  <system.serviceModel>

    <bindings>
      <wsHttpBinding>

        <binding name="NoSecurityBinding"  maxReceivedMessageSize="2147483647">
          <readerQuotas
             maxDepth="2147483647"
             maxStringContentLength="2147483647"
             maxArrayLength="2147483647"
             maxBytesPerRead="2147483647"
             maxNameTableCharCount="2147483647" />

          <security mode="None">
            <transport clientCredentialType="None"/>
            <message establishSecurityContext="false"/>
          </security>


        </binding>
      </wsHttpBinding>



    </bindings>


    <services>

    </services>
    <behaviors>      
      <serviceBehaviors>
        <behavior>
          <!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
          <serviceMetadata httpGetEnabled="true" />         
        </behavior>
        <behavior name="metadataAndDebug">
          <serviceMetadata httpGetEnabled="true" />

          <serviceDebug
            includeExceptionDetailInFaults="true"/>

        </behavior>
      </serviceBehaviors>
    </behaviors>

    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
  </system.serviceModel>
 <system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/>
  </system.webServer>

</configuration>

何か案は?特に、構成エントリの欠落について疑問に思っています。ありがとう!

4

1 に答える 1

0

サーバー側の構成を更新したが、クライアントの構成を更新していない可能性があります。

于 2012-06-04T21:32:52.473 に答える