我想從Silverlight應用程序調用返回JSON的WCF服務。它只是返回一個整數。我已經使用Fiddler來驗證它永遠不會打電話給我的web服務。我得到一個錯誤,指出「由於對象的當前狀態,操作無效」。它發生在線上,HttpWebResponse response =(HttpWebResponse)_webRequest.EndGetResponse(result);如果需要,可以提供Stacktrace。使用HttpWebRequest從Silverlight應用程序調用WCF時出現錯誤
public MainPage()
{
InitializeComponent();
StartWebRequest();
}
void StartWebRequest()
{
HttpWebRequest _webRequest = (HttpWebRequest)WebRequest.Create(new Uri("http://www.example.com/MyJSON.svc/onlineusercount"));
_webRequest.ContentType = "text/json";
_webRequest.Method = "GET";
_webRequest.BeginGetResponse(FinishWebRequest, _webRequest);
}
void FinishWebRequest(IAsyncResult result)
{
HttpWebRequest _webRequest = (HttpWebRequest)result.AsyncState;
HttpWebResponse response = (HttpWebResponse)_webRequest.EndGetResponse(result);
Stream streamResponse = response.GetResponseStream();
StreamReader streamRead = new StreamReader(streamResponse);
string responseString = streamRead.ReadToEnd();
needle.Value = Convert.ToInt32(responseString);
// Close the stream object
streamResponse.Close();
streamRead.Close();
// Release the HttpWebResponse
response.Close();
}
}
更新:我註釋掉上面的行說
_webRequest.ContentType = "text/json";
我的新的錯誤說:拋出:SecurityException未處理的用戶代碼。我相信這意味着我應該使用try catch,但我不確定捕獲哪種類型的異常。
我的堆棧跟蹤如下:
at System.Net.Browser.AsyncHelper.BeginOnUI(SendOrPostCallback beginMethod, Object state)
at System.Net.Browser.BrowserHttpWebRequest.EndGetResponse(IAsyncResult asyncResult)
at FuelizerGuage.MainPage.FinishWebRequest(IAsyncResult result)
at System.Net.Browser.BrowserHttpWebRequest.<>c__DisplayClassd.<InvokeGetResponseCallback>b__b(Object state2)
at System.Threading.QueueUserWorkItemCallback.WaitCallback_Context(Object state)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
at System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem()
at System.Threading.ThreadPoolWorkQueue.Dispatch()
at System.Threading._ThreadPoolWaitCallback.PerformWaitCallback()
此外,根據提琴手,我的Silverlight應用程序現在是在調用我的web服務領域進行尋找clientaccesspolicy.xml,然後查找crossdomain.xml的,沒有的存在。
我註釋掉了設置ContentType的行,現在我得到了一個不同的錯誤。這是錯誤的StackTrace的頂部:System.Net.Browser.AsyncHelper.BeginOnUI(SendOrPostCallback beginMethod,Object state) at System.Net.Browser.BrowserHttpWebRequest.EndGetResponse(IAsyncResult asyncResult) – puddinman13
此外,請求仍然不是被髮送到我的web服務。提琴手仍然沒有顯示出正在進行的呼叫。新的錯誤發生在HttpWebResponse響應=(HttpWebResponse)_webRequest.EndGetReponse(result);線。謝謝您的回覆! – puddinman13
你得到的錯誤是什麼? – carlosfigueira