簡體   English   中英

將WCF REST服務配置為客戶端?

[英]Configuring a WCF REST service as a client?

是否可以讓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);
            }
        }

您可以輕松地使客戶端使用相同的二進制文件

  1. 將服務類的DLL包括到客戶端項目中。
  2. 從服務界面創建渠道工廠。
  3. 消耗通道工廠。

有關根據您的要求的更多信息,請參見http://msdn.microsoft.com/zh-cn/library/ms576132(v=vs.110).aspx

對於最大接收錯誤,您需要執行以下操作: 傳入郵件的最大郵件大小配額(65536)....要增加配額,請使用MaxReceivedMessageSize屬性

或從代碼中:

WebHttpBinding binding = new WebHttpBinding();
binding.MaxReceivedMessageSize = 2147483647;

同樣在客戶端。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM