Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WinPhone 7.1上的HttpWebRequest(带或不带调试器)_C#_Windows Phone 7_Windows Phone 7.1.1 - Fatal编程技术网

C# WinPhone 7.1上的HttpWebRequest(带或不带调试器)

C# WinPhone 7.1上的HttpWebRequest(带或不带调试器),c#,windows-phone-7,windows-phone-7.1.1,C#,Windows Phone 7,Windows Phone 7.1.1,我正在尝试对web服务执行一个简单的请求。代码在后台执行,而不是UI线程。Uri包含正确的地址,该地址总是返回带有200个HTTP代码的结果。一切都在进行 var-request=WebRequest.Create(uri); 尝试 { var ar=request.BeginGetResponse(=>{},null); 使用(var response=request.EndGetResponse(ar))//NullReferenceException在此处上升 使用(var stream=

我正在尝试对web服务执行一个简单的请求。代码在后台执行,而不是UI线程。Uri包含正确的地址,该地址总是返回带有200个HTTP代码的结果。一切都在进行

var-request=WebRequest.Create(uri);
尝试
{
var ar=request.BeginGetResponse(=>{},null);
使用(var response=request.EndGetResponse(ar))//NullReferenceException在此处上升
使用(var stream=response.GetResponseStream())
{
var serializer=newdatacontractjsonserializer(typeof(AuthResult));
return(AuthResult)serializer.ReadObject(stream);
}
}
捕获(例外e)
{
返回新的AuthResult{Error=e.Message};
}
没有调试器,代码总是失败。当附加调试器时,它很少失败

System.NullReferenceException occurred
  Message=NullReferenceException
  StackTrace:
   at System.Net.Browser.ClientHttpWebRequest.InvokeGetResponseCallback(Object state)
   at System.Net.Browser.ClientHttpWebRequest.Completed(Object sender, EventArgs e)
   at MS.Internal.InternalWebRequest.OnCompleted(Object sender, EventArgs args)
   at MS.Internal.CoreInvokeHandler.InvokeEventHandler(Int32 typeIndex, Delegate handlerDelegate, Object sender, Object args)
   at MS.Internal.JoltHelper.FireEvent(IntPtr unmanagedObj, IntPtr unmanagedObjArgs, Int32 argsTypeIndex, Int32 actualArgsTypeIndex, String eventName)
下一个:

System.Net.WebException occurred
Message=The remote server returned an error: NotFound.
StackTrace:
   at System.Net.Browser.ClientHttpWebRequest.EndGetResponse(IAsyncResult asyncResult)
   at Contest.InteropApi.SignIn(Uri uri)
   at Contest.ViewModel.LoginViewModel.<PerformSignIn>b__4()
   at System.Reactive.Linq.QueryLanguage.<>c__DisplayClass3b`1.<>c__DisplayClass3d.<ToAsync>b__3a()
   at System.Reactive.Concurrency.Scheduler.Invoke(IScheduler scheduler, Action action)
   at System.Reactive.Concurrency.DefaultScheduler.<>c__DisplayClass1`1.<Schedule>b__0(Object _)
   at System.Reactive.Concurrency.ConcurrencyAbstractionLayerImpl.<>c__DisplayClasse.<QueueUserWorkItem>b__d(Object _)
   at System.Threading.ThreadPool.WorkItem.WaitCallback_Context(Object state)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Threading.ThreadPool.WorkItem.doWork(Object o)
   at System.Threading.Timer.ring()
System.Net.WebException发生
Message=远程服务器返回错误:NotFound。
堆栈跟踪:
位于System.Net.Browser.ClientHttpWebRequest.EndGetResponse(IAsyncResult asyncResult)
在竞赛时。interoppi.SignIn(Uri)
在Contest.ViewModel.LoginViewModel.b_uu4()中
at System.Reactive.Linq.QueryLanguage.c__DisplayClass3b`1.c__DisplayClass3d.b__3a()
在System.Responsive.Concurrency.Scheduler.Invoke(isScheduler Scheduler,Action Action)
在System.Responsive.Concurrency.DefaultScheduler.c__DisplayClass1`1.b_u 0(对象)
at System.Reactive.Concurrency.Concurrency抽象层框架pl.c\u DisplayClasse.b\u d(对象)
位于System.Threading.ThreadPool.WorkItem.WaitCallback\u上下文(对象状态)
在System.Threading.ExecutionContext.Run(ExecutionContext ExecutionContext,ContextCallback回调,对象状态)
在System.Threading.ThreadPool.WorkItem.doWork(对象o)处
在System.Threading.Timer.ring()中

Http是异步使用的-您必须在
BeginGetResponse
方法的回调(第一个参数)中调用
EndGetResponse
。您的代码在响应未就绪时调用
EndGetResponse

请查看本网站末尾的示例:

也许此http类可以帮助您进行http调用:

谢谢!我以为
EndGetResponse
会等待完成。事实证明,在移动SDK中,这是不受支持的。在调试模式下,从
BeginGetResponse
步进到
EndGetResponse
时,似乎有足够的时间加载页面。