現在、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="server=hidden-ip;User Id=root;database=fromcloud;password=hidden-pw;Persist Security Info=True"" 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="server=hidden-ip;User Id=root;password=hidden-pw;Persist Security Info=True;database=fromcloud"" providerName="System.Data.EntityClient" />
</connectionStrings>
</configuration>