3
我試圖用上傳通過Silverlight客戶端文件以下MessageContract
:Silverlight不喜歡我的WCF 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客戶端上傳文件?這是一個非常頭痛的問題。
謝謝。
如何在服務端檢索這些標題?他們沒有通過消息合約本身。謝謝。 – Jordan
確保標題的名稱/名稱空間與使用非SL客戶端獲得的名稱/名稱空間相同。檢查的一種方法是使用Fiddler比較由「普通」客戶端發送的消息(其具有[MessageHeader]字段)與SL發送的消息。只要它們匹配,服務器就會收到正確的頭文件。 – carlosfigueira
謝謝。 (還有8個字符) – Jordan