おそらくこれを達成する方法はたくさんありますが、ここに私の考えがあります。 私はちょうど任意の数の文字列を含んでいますので、必要に応じて追加/削除できます。
まず、イメージと文字列値を含むWCFサービスに渡される、ある種の「入力」オブジェクトが必要になります。 Imagesプロパティがバイト配列の配列であることに注意してください。これは複数の画像を含めることができるためです。
[DataContract]
public class InputObject
{
[DataMember]
public byte[][] Images { get; set; }
[DataMember]
public string FirstValue { get; set; }
[DataMember]
public string SecondValue { get; set; }
}
次に、あなたはあなたのServiceContractは次のようになります
[DataContract]
public class ReturnObject
{
[DataMember]
public string FirstValue { get; set; }
[DataMember]
public string SecondValue { get; set; }
}
...あなたのWCFサービスが返すオブジェクトをお勧めします。
[ServiceContract]
public interface IService1
{
[OperationContract]
ReturnObject UploadData (InputObject input);
}
このようなサービスクラスです。
public class Service1 : IService1
{
public ReturnObject UploadData (InputObject input)
{
// Do your thing with InputObject data
ReturnObject returnObject = new ReturnObject
{
FirstValue = "MyFirstValue" ,
SecondValue = "MySecondValue"
};
return returnObject;
}
}
サービスのバインディングがイメージデータを送信するのに適切であることを確認して、デフォルトの制限のいくつかが適切になるようにする必要があります。次に、私のサービスの設定からのバインディングの例を示します。
<wsHttpBinding>
<binding name="Service1Binding" maxReceivedMessageSize="1000000">
<readerQuotas maxArrayLength="1000000"
maxBytesPerRead="1000000"
maxDepth="1000000"
maxNameTableCharCount="1000000"
maxStringContentLength="1000000"/>
</binding>
</wsHttpBinding>
これはサービスのバインディング設定として必ず指定してください。
<endpoint address=""
binding="wsHttpBinding"
contract="WcfService5.IService1"
bindingConfiguration="Service1Binding">
これで、クライアントのサービスからこれを参照して呼び出すだけで済みます。
A非常に詳細かつ簡単に、これはあなたを助け
希望は...例に従ってください。これはあなたのためにNagaMenschをしましたか?もしそうなら、それは受け入れに値すると思う? –
NagaMensch、これはあなたの質問に答えましたか? –
はい、これは非常に役に立ちました!私はByte []のコレクションであるこれの変形を使用して終了しました。 – alchemical