Windows phone 7 HttpWebRequest在Windows Phone 7上返回“远程服务器返回错误:NotFound”

Windows phone 7 HttpWebRequest在Windows Phone 7上返回“远程服务器返回错误:NotFound”,windows-phone-7,httpwebrequest,Windows Phone 7,Httpwebrequest,我正在尝试使用WindowsPhone7模拟器对HuddleAPI进行身份验证。然而,我没有取得任何成功。我一直在获取远程服务器返回的错误:NotFound。我甚至尝试过简化我的代码,只是尝试一个简单的网站,如谷歌,但仍然得到同样的结果 我有以下代码: string url = "http://www.google.com"; HttpWebRequest client= WebRequest.CreateHttp(new Uri(url)) as HttpWebRequest; cl

我正在尝试使用WindowsPhone7模拟器对HuddleAPI进行身份验证。然而,我没有取得任何成功。我一直在获取远程服务器返回的错误:NotFound。我甚至尝试过简化我的代码,只是尝试一个简单的网站,如谷歌,但仍然得到同样的结果

我有以下代码:

string url = "http://www.google.com"; 

 HttpWebRequest client= WebRequest.CreateHttp(new Uri(url)) as HttpWebRequest;

 client.AllowReadStreamBuffering = true;

 // Call and handle the response.
 client.BeginGetResponse(
  (asResult) =>
  {
   Dispatcher.BeginInvoke(
    () =>
    {
     try
     {
      var response = client.EndGetResponse(asResult);
      System.IO.StreamReader reader = new System.IO.StreamReader(response.GetResponseStream());
      string responseString = reader.ReadToEnd();

     }
     catch (WebException failure)
     {
      throw failure;
     }
    });
  },
   null
 );
执行总是在catch部分结束。然而,在观看了Fiddler2之后,google.com似乎没有任何流量。所以这个请求似乎没有被提出

我在这里看到了类似的问题,但我使用的是标准端口,因此不确定这是否相关。我也尝试过根据帖子简化代码,但没有成功

有趣的是,最有可能的选择似乎是因为我的AppManifestWM.xaml文件中可能没有根据定义的网络功能,但我的AppManifestWM.xaml文件似乎定义了以下内容:

<Deployment xmlns="http://schemas.microsoft.com/windowsphone/2009/deployment" AppPlatformVersion="7.0">
  <App xmlns="" ProductID="{ac5b5d62-573c-4134-b290-0ad4f678ad7f}" Title="xxx.WindowsPhone7.Client" RuntimeType="Silverlight" Version="1.0.0.0" Genre="apps.normal"  Author="xxx.WindowsPhone7.Client author" Description="Sample description" Publisher="xxx.WindowsPhone7.Client publisher">
    <IconPath IsRelative="true" IsResource="false">ApplicationIcon.png</IconPath>
    <Capabilities>
      <Capability Name="ID_CAP_NETWORKING" />
      <Capability Name="ID_CAP_LOCATION" />
      <Capability Name="ID_CAP_SENSORS" />
      <Capability Name="ID_CAP_MICROPHONE" />
      <Capability Name="ID_CAP_MEDIALIB" />
      <Capability Name="ID_CAP_GAMERSERVICES" />
      <Capability Name="ID_CAP_PHONEDIALER" />
      <Capability Name="ID_CAP_PUSH_NOTIFICATION" />
      <Capability Name="ID_CAP_WEBBROWSERCOMPONENT" />
    </Capabilities>
    <Tasks>
      <DefaultTask  Name ="_default" NavigationPage="MainPage.xaml"/>
    </Tasks>
    <Tokens>
      <PrimaryToken TokenID="xxx.WindowsPhone7.ClientToken" TaskName="_default">
        <TemplateType5>
          <BackgroundImageURI IsRelative="true" IsResource="false">Background.png</BackgroundImageURI>
          <Count>0</Count>
          <Title>xxx.WindowsPhone7.Client</Title>
        </TemplateType5>
      </PrimaryToken>
    </Tokens>
  </App>
</Deployment>
所以我不知所措。请求实际上似乎没有发生,这让我觉得有什么东西在阻止它

更新:

没有任何变化,但认为此堆栈跟踪可能是heko:

System.Net.WebException未处理 Message=远程服务器返回了一个 错误:找不到。堆栈跟踪: 在System.Net.Browser.ClientHttpWebRequest.InternalEndGetResponseAsyncResult 异步结果 在System.Net.Browser.ClientHttpWebRequest.EndGetResponseAsyncResult 异步结果 在xxx.WindowsPhone7.Client.Views.AddHuddleUserPage.c\u DisplayClass2.c\u DisplayClass4.b\u 1 位于System.Reflection.RuntimeMethodInfo.InternalInvokerUnitimeMethodInfo rtmi、对象对象、绑定标志 invokeAttr、活页夹、对象 参数,CultureInfo文化, 布尔值isBinderDefault,程序集 调用方,布尔验证访问, stackMark&stackMark 位于System.Reflection.RuntimeMethodInfo.InternalInvokeObject obj,BindingFlags调用EATTR,活页夹 活页夹,对象[]参数, 文化信息文化& 斯塔克马克 位于System.Reflection.MethodBase.InvokeObject 对象[]参数 在System.Delegate.DynamicInvokeOneObject[] args 在System.MulticastDelegate.DynamicInvokeImplObject[] args 在System.Delegate.DynamicInvokeObject[] args 在System.Windows.Threading.DispatcherOperation.Invoke 位于System.Windows.Threading.Dispatcher.DispatcherPriority 优先事项 位于System.Windows.Threading.Dispatcher.OnInvokeObject 上下文 位于System.Windows.Hosting.CallbackCookie.InvokeObject[] args 位于System.Windows.Hosting.DelegateWrapper.InternalInvokeObject[] args 位于System.Windows.RuntimeHost.ManagedHost.InvokeDelegateIntPtr 幻影,Int32 nParamCount, ScriptParam[]pParams,ScriptParam& 假定

状态为System.Net.WebExceptionStatus.UnknownError


谢谢您的时间。

这可能只是解决网络连接问题

你能通过IE和应用程序中的WebBrowser控件访问web吗

你可能有一个代理人。看看这份文件在这方面是否有帮助


好的,我已经解决了。。。但我不知道怎么做。我的机器没有重新启动,我的代码没有更改。唯一可能的解释是我的模拟器确实崩溃了几次。也许里面有什么东西

感谢您的时间,这是我正在使用的代码,它与Huddle API配合得很好:

                string url = "https://api.huddle.net/v1/xml/workspaces"; ; 

                HttpWebRequest client= WebRequest.CreateHttp(new Uri(url)) as HttpWebRequest;

                client.Credentials = new NetworkCredential(ViewModel.UserAccount.UserName, ViewModel.UserAccount.Password); 
                client.AllowReadStreamBuffering = true;

                // Call and handle the response.
                client.BeginGetResponse(
                    (asResult) =>
                    {
                        Dispatcher.BeginInvoke(
                            () =>
                            {
                                try
                                {
                                    var response = client.EndGetResponse(asResult);
                                    System.IO.StreamReader reader = new System.IO.StreamReader(response.GetResponseStream());
                                    string responseString = reader.ReadToEnd();



                                                                        }
                                catch (WebException failure)
                                {
                                    MessageBox.Show(failure.Message, "Cannot authenticate", MessageBoxButton.OK);
#if DEBUG
                                    throw failure;
#endif
                                }
                            });
                    },
                        null
                );

你们有小提琴手吗?当Fiddler连接到我的网络堆栈时,我反复出现这个错误。没有费德勒,没有问题

如果有人知道的话,我很想听听为什么


干杯

我工作了几个小时,症状与最初的海报完全相同。然后我按上面的建议合上小提琴2。然后它就起作用了。远程服务器不再返回,错误:NotFound


魔法!谢谢你,凯利布。本应升级投票,但我没有足够的信用。

关闭Fiddler2解决了我的问题。

从未使用Fiddler2,但在开发Windows Phone应用程序时遇到了完全相同的问题

对我来说,原因完全不同: WMAppManifest.xml只是缺少ID\u CAP\u网络

由于我得到了未找到的异常和不受支持的异常,我几乎尝试了所有其他方法,直到找到问题的真正原因-


我更喜欢禁用所有CAP,只启用应用程序真正需要的CAP,因为如果应用程序需要访问所有内容,用户将无法理解/接受-

谢谢,米克。我已经在操作系统中试用了IE小程序,效果很好。还向同一页面添加了WebBrowser控件,该控件也可以正常工作。据我所知,我没有使用代理。有趣的一点。我现在不记得了。我肯定会在某一点上,但在失败的时候,我不能说。