Я пытаюсь позвонить из приложения Silverlight в службу WCF, возвращая JSON. Он просто возвращает целое число. Я использовал Fiddler для проверки того, что он никогда не звонит на мой веб-сервис. Я получаю сообщение об ошибке «Операция недействительна из-за текущего состояния объекта». Это происходит на линии, HttpWebResponse response = (HttpWebResponse) _webRequest.EndGetResponse (результат); При необходимости можно предоставить Stacktrace.Ошибка при вызове WCF из приложения Silverlight с использованием HttpWebRequest
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();
}
}
UPDATE: Я закомментирована линия выше, что говорит, говорит
_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 теперь делает при обращении к моему домену WebService ищет clientaccesspolicy.xml, а затем ищет crossdomain.xml, ни один из которые существуют.
Я прокомментировал строку, которая устанавливает ContentType, и теперь я получаю другую ошибку. Это верхняя часть StackTrace для ошибки: System.Net.Browser.AsyncHelper.BeginOnUI (SendOrPostCallback beginMethod, состояние объекта) в System.Net.Browser.BrowserHttpWebRequest.EndGetResponse (IAsyncResult asyncResult) – puddinman13
Кроме того, запрос по-прежнему не является отправляется на мой веб-сервис. Скрипач по-прежнему не показывает никаких признаков звонка. Новая ошибка возникает в ответе HttpWebResponse = (HttpWebResponse) _webRequest.EndGetReponse (результат); линия. Спасибо за ваш ответ! – puddinman13
Какая ошибка вы получаете? – carlosfigueira