2010-07-25 54 views
2

我通過http調用REST服務,返回一個流作爲響應。 我的客戶端代碼看起來像這樣:Silverlight 4 HttpWebRequest拋出ProtocolViolationException

   Uri uri = new Uri(remoteAddress); 
       var webRequest = (HttpWebRequest)WebRequest.Create(uri); 
       webRequest.Method = "GET"; 
       webRequest.ContentType = "multipart/mixed"; 
       webRequest.BeginGetResponse(responseResult => 
       { 
        HttpWebResponse response = (HttpWebResponse)webRequest.EndGetResponse(responseResult); 
        this.messages = ParseResponse(response); 
        Complete(false); 
       }, null); 

我得到這條線以下錯誤:

HttpWebResponse response = (HttpWebResponse)webRequest.EndGetResponse(responseResult); 

System.Net.ProtocolViolationException是由用戶代碼未處理 消息=操作無效由於對象的當前狀態。 堆棧跟蹤: 在System.Net.Browser.AsyncHelper.BeginOnUI(SendOrPostCallback beginMethod,對象狀態) 在System.Net.Browser.BrowserHttpWebRequest.EndGetResponse(IAsyncResult的asyncResult) 在LaharSubProxy.SubscribeAsyncResult`1。 <> c__DisplayClass1.b__0(IAsyncResult responseResult) at System.Net.Browser.BrowserHttpWebRequest。 <> c__DisplayClassd.b__b(對象STATE2) 在System.Threading.QueueUserWorkItemCallback.WaitCallback_Context(對象狀態) 在System.Threading.ExecutionContext.Run(的ExecutionContext的ExecutionContext,ContextCallback回調,對象的狀態,布爾ignoreSyncCtx) 在的System.Threading。 QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem() 在System.Threading.ThreadPoolWorkQueue.Dispatch() 在System.Threading._ThreadPoolWaitCallback.PerformWaitCallback() 的InnerException:

這是推動我絕對堅果,因爲異常是沒有指出任何有用的東西。我已經在提琴手中啓用了「流媒體」選項,但我沒有看到任何流量/錯誤。

請幫忙!

回答

1

好whatdya知道,問題是這一行:

webRequest.ContentType = "multipart/mixed"; 

看起來這是一個錯誤SL /細微差別。我評論說,線路和錯誤消失! 我還應該補充說,在傳統的控制檯/ Windows應用程序中,代碼正常工作得很好。

This post指出我正確的方向。感謝微軟!!!!!!

0

設置ContentType屬性意味着您要爲您的請求提供郵件正文。似乎.net庫不想允許這樣做,儘管我在HTTP規範中沒有找到任何暗示它應該被隱藏的東西。

相關問題