【发布时间】:2011-08-15 06:47:06
【问题描述】:
我正在尝试从 Silverlight 应用程序调用返回 JSON 的 WCF 服务。它只是返回一个整数。我使用 Fiddler 来验证它永远不会调用我的网络服务。我收到一条错误消息,提示“由于对象的当前状态,操作无效。”发生就行了,HttpWebResponse response = (HttpWebResponse) _webRequest.EndGetResponse(result);如果需要,可以提供 Stacktrace。
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()
另外,根据 Fiddler 的说法,我的 silverlight 应用程序现在正在调用我的 web 服务域以查找 clientaccesspolicy.xml,然后查找 crossdomain.xml,这两者都不存在。
【问题讨论】:
标签: silverlight wcf web-services json httpwebrequest