WCF サービスを Web サービス クライアントとしても実行することは可能ですか?
これが可能である場合、構成ファイルでクライアント設定を構成する方法について、いくつかのガイダンスを提供してもらえますか?
私が抱えている主な問題は、大きなメッセージをメインの REST サービスに送信していることです。そのメッセージがセカンダリ サービスに中継されると、応答によって "MaxReceivedMessage" が大きすぎるエラーが発生するようです。REST サービスの CLIENT 設定を構成しようとしましたが、成功しませんでした。
app.config と web.config のどちらで定義しますか?
CLIENT 設定をどこで宣言してもバインディングが無視されるため、間違っているようです。
これは、REST サービスの APPLICATION 構成です。
<?xml version="1.0"?>
<configuration>
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_IBBIImageWarpService" />
</basicHttpBinding>
</bindings>
<client>
<endpoint address="http://localhost:8080/BBIImageWarp" binding="basicHttpBinding"
bindingConfiguration="BasicHttpBinding_IBBIImageWarpService"
contract="ServiceReference1.IBBIImageWarpService" name="BasicHttpBinding_IBBIImageWarpService" />
</client>
</system.serviceModel>
</configuration>
失敗している私のRESTサービスのエンドポイントメソッドは次のとおりです。
public ServiceResponse<DataContracts.BBIImgObject> WarpImage(DataContracts.BBIImgObject imgObject)
{
try
{
writeMessage("converting to JSON");
string JSON = new JavaScriptSerializer().Serialize(imgObject);
BasicHttpBinding binding = new BasicHttpBinding();
//このバインドに MAXRECEIVEDMessageSize を追加する必要がありますか???
EndpointAddress address = new EndpointAddress("http://localhost:8080/BBIImageWarp");
ServiceReference1.BBIImageWarpServiceClient ImgWarpSvc = new ServiceReference1.BBIImageWarpServiceClient(binding, address);
string rslt = ImgWarpSvc.WarpImageJSON(JSON);
DataContracts.BBIImgObject cloneImgObject = new DataContracts.BBIImgObject();
cloneImgObject.Base64EncodedImageData = rslt;
cloneImgObject.BodyTypeID = imgObject.BodyTypeID;
return new ServiceResponse<DataContracts.BBIImgObject>(String.Empty, ServiceResponse<DataContracts.BBIImgObject>.ResponseTypeEnum.BbiSuccess, cloneImgObject);
}
catch (Exception ex)
{
writeMessage(ex.Message);
return new ServiceResponse<DataContracts.BBIImgObject>(ex.Message, ServiceResponse<DataContracts.BBIImgObject>.ResponseTypeEnum.BbiFailure, null);
}
}