次のコマンドを使用して、SilverlightクライアントからファイルをアップロードしようとしていますMessageContract
。
[MessageContract]
public class CategoryClientFileTransferMC : IDisposable
{
/// <summary>
/// CategoryID - Category identity.
/// </summary>
[MessageHeader(MustUnderstand = true)]
public int CategoryID;
/// <summary>
/// ID - File identifier.
/// </summary>
[MessageHeader(MustUnderstand = true)]
public string ID;
/// <summary>
/// Length - File length in bytes.
/// </summary>
[MessageHeader(MustUnderstand = true)]
public long Length;
/// <summary>
/// FileByteStream - File stream.
/// </summary>
[MessageBodyMember(Order = 1)]
public Stream FileByteStream;
/// <summary>
/// Dispose the contract.
/// </summary>
public void Dispose()
{
if (FileByteStream != null)
{
FileByteStream.Close();
FileByteStream = null;
}
}
}
私の問題は、クライアントで生成された操作メソッドが1つの引数しか受け取らないことです。と呼ばれるバイト配列FileByteStream
。私が作成した他の(Silverlight以外の)クライアントでは、MemberHeader
フィールドも要求されます。これらのヘッダーを指定しないと、サーバーはファイルをどう処理するかわかりません。操作を呼び出すときにこれらのヘッダーを設定するにはどうすればよいですか?
また、Silverlightクライアントからファイルをアップロードするためのより良い方法はありますか?これは大きな頭痛の種です。
ありがとう。