0

現在、Webサービスをコーディングしていますが、使用法は次のとおりです。

dllとしてフロントエンドを取得しました。つまり、wpfウィンドウを備えたライブラリプロジェクトを取得しました。そのライブラリは、他のプログラムから呼び出されます。バックエンド WCF サービスは外部 IIS でホストされ、フロントエンドは wcf サービスが参照される controller.dll を介して Web サービス メソッドを呼び出します。

私はこことグーグルから同じ問題についてすでにいくつかの投稿を読みました...しかし、私はそれを修正することはできません.

frontend.dll を呼び出すダミーの Windows フォームを取得しました。そのプロジェクトは app.config を取得しました:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.serviceModel>
    <bindings>
      <basicHttpBinding>
        <binding name="BasicHttpBinding_IService" closeTimeout="00:01:00"
            openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:10:00"
            allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
            maxBufferSize="2147483647" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647"
            messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
            useDefaultWebProxy="true">
          <readerQuotas maxDepth="32" 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://Hidden-ip/TicketReportService.svc"
          binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IService"
          contract="ServiceReference.IService" name="BasicHttpBinding_IService" />
    </client>
  </system.serviceModel>
</configuration>

ここで説明したように進める場合、frontend.dll を呼び出したい各プログラムは、独自の app.config にバインディング/エンドポイント構成を配置する必要があることを認識しています。これは単なる例ですが、後で controller.dll でプログラムによってバインディング/エンドポイントの構成を行っているため、構成ファイルは必要ありません...しかし、それは別のトピックです。

メソッドを呼び出すと、Web サービス経由でファイルがアップロードされ、次の 2 つのシナリオが得られます。

ファイル > 16kb かつ <~30kb の場合、プロトコル例外が発生し"MaxArrayLength" (16384) was exceededます。

約 60kb のファイルをアップロードしようとすると、プロトコル例外も発生しますが、次の情報だけが含まれます。remoteserver returned unexpected answer.(400) bad request.

app.config を見ると、maxarray の長さが int32.max 値に設定されています。また、メソッドを呼び出すオブジェクトのバインディングを確認すると、maxarraylength が app.config から取得されたことがわかりますが、まだエラー メッセージが表示されます。

ここで何が間違っていましたか?それはクライアント側の問題ですよね?

IIS の私のサービス web.config では、次のようになりました。

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <system.serviceModel>
        <services>
            <service behaviorConfiguration="BackendService.Behavior" name="MyNamespaye.Service">
                <endpoint address="" binding="basicHttpBinding" contract="MyNamespaye.IService" />
                <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
            </service>
        </services>
        <behaviors>
            <serviceBehaviors>
                <behavior name="BackendService.Behavior">
                    <serviceMetadata httpGetEnabled="true"/>
                    <serviceDebug includeExceptionDetailInFaults="false" />
                </behavior>
            </serviceBehaviors>
        </behaviors>
    </system.serviceModel>
    <connectionStrings>
        <add name="CustomerEntities" connectionString="metadata=res://*/CustomerModel.csdl|res://*/CustomerModel.ssdl|res://*/CustomerModel.msl;provider=MySql.Data.MySqlClient;provider connection string=&quot;server=hidden-ip;User Id=root;database=fromcloud;password=hidden-pw;Persist Security Info=True&quot;" providerName="System.Data.EntityClient" />
        <add name="DocumentEntities" connectionString="metadata=res://*/DocumentModel.csdl|res://*/DocumentModel.ssdl|res://*/DocumentModel.msl;provider=MySql.Data.MySqlClient;provider connection string=&quot;server=hidden-ip;User Id=root;password=hidden-pw;Persist Security Info=True;database=fromcloud&quot;" providerName="System.Data.EntityClient" />
    </connectionStrings>
</configuration>
4

1 に答える 1