Silverlight не нравится мой WCF MessageContract. Почему?
Я пытаюсь загрузить файл через клиент 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;
}
}
}
Моя проблема в том, что сгенерированный метод операции на клиенте принимает только один аргумент; байтовый массив называетсяFileByteStream
, В других (не Silverlight) клиентах, которые я создал, он запрашиваетMemberHeader
поля также. Без указания этих заголовков сервер не знает, что делать с файлом. Как я могу установить эти заголовки при вызове операции?
Кроме того, есть ли лучший способ загрузить файл из клиента Silverlight? Это была огромная головная боль.
Благодарю.