Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.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
Windows phone 7 WP7设备+;Windows 8.1+;VS 2012+;Asp.net Web Api-如何让设备与Web Api对话?_Windows Phone 7_Visual Studio 2012_Windows Phone 8_Asp.net Web Api_Windows 8.1 - Fatal编程技术网

Windows phone 7 WP7设备+;Windows 8.1+;VS 2012+;Asp.net Web Api-如何让设备与Web Api对话?

Windows phone 7 WP7设备+;Windows 8.1+;VS 2012+;Asp.net Web Api-如何让设备与Web Api对话?,windows-phone-7,visual-studio-2012,windows-phone-8,asp.net-web-api,windows-8.1,Windows Phone 7,Visual Studio 2012,Windows Phone 8,Asp.net Web Api,Windows 8.1,我现在使用的是Windows 8.1和VS 2012。我在Windows Phone应用程序中使用Web api后端完成所有繁重的工作。但是,当我通过模拟器运行我的应用程序时,对本地运行的web api的所有请求都被拒绝 我发现仿真器无法解析localhost。在做了一些非常类似于模拟器的事情之后,我能够在Windows8模拟器上运行,没有问题 然而,我现在需要在我的实际设备上测试它来使用相机,但是我遇到了与模拟器相同的问题。我无法与本地web api通信 我在Windows7和VS2010上时

我现在使用的是Windows 8.1和VS 2012。我在Windows Phone应用程序中使用Web api后端完成所有繁重的工作。但是,当我通过模拟器运行我的应用程序时,对本地运行的web api的所有请求都被拒绝

我发现仿真器无法解析localhost。在做了一些非常类似于模拟器的事情之后,我能够在Windows8模拟器上运行,没有问题

然而,我现在需要在我的实际设备上测试它来使用相机,但是我遇到了与模拟器相同的问题。我无法与本地web api通信

我在Windows7和VS2010上时没有遇到任何问题。我只是使用了文章中的步骤,没有任何问题

当我尝试从我的设备请求web api时(设备通过计算机通过usb连接)出现此错误


错误的请求
错误的请求-无效的主机名

HTTP错误400。请求主机名无效

我需要设置什么才能让它工作

编辑

我仍然有这个问题。我已经能够让WindowsPhone8模拟器工作,但仍然无法让我的WP7设备能够与本地Web Api通信

示例代码 我会这样做的

public class CourseService
{
    public const string webApiUrl = "http://localhost:4372/api/values";
    RestClient client = new RestClient(webApiUrl);
    public void GetCourses(Action successCallback, Action<string> errorCallBack, bool forceError = false)
    {
        var request = new RestRequest(Method.GET);

        client.ExecuteAsync(request, response =>
        {
            if (forceError)
            {
                errorCallBack("Failed");
            }
            else
            {
                if (response.StatusCode == HttpStatusCode.OK)
                {
                    successCallback();
                }
                else
                {
                    errorCallBack("Failed");
                }
            }
        });
    }
}



 public class ValuesController : ApiController
    {
        // GET api/values
        public IEnumerable<string> Get()
        {
            return new string[] { "value1", "value2" };
        }
    }
公共类课程服务
{
公用常量字符串webapirl=”http://localhost:4372/api/values";
RestClient=newrestclient(webapirl);
public void GetCourses(操作成功回调、操作错误回调、bool forceError=false)
{
var请求=新的重新请求(Method.GET);
client.ExecuteAsync(请求、响应=>
{
如果(强制错误)
{
错误回调(“失败”);
}
其他的
{
if(response.StatusCode==HttpStatusCode.OK)
{
successCallback();
}
其他的
{
错误回调(“失败”);
}
}
});
}
}
公共类值控制器:ApiController
{
//获取api/值
公共IEnumerable Get()
{
返回新字符串[]{“value1”,“value2”};
}
}
  • 我尝试了localhost(从我所读到的内容知道它不起作用)
  • 我尝试了我的计算机ip地址
  • 试图在应用程序配置中放入IIS Express以使用ip地址


    • 您的404显示的主机名无效。也许您必须遵循简单描述的步骤:将机器名称添加到web服务的配置中。它是关于Windows Phone 8的,但可能也适用于Windows Phone 7。

      您没有发送请求详细信息,但从设备上呼叫本地主机是没有意义的。您需要连接到远程计算机,这是您的电脑名或IP


      如果你仍然无法使用IP访问该站点,我会尝试在WP7上安装Fiddler,以便更好地了解正在发生的事情

      如何运行webapi?使用IIS Express

      还是用IIS?您还将遇到CORS问题。是webapi 1还是webapi 2

      您可能需要此nuget软件包:

      在Webapi2中阅读有关CORS(跨来源资源共享)支持的更多信息,请点击此处:


      如果这些指针对您没有帮助,我希望看到一些调用webapi和webapi构造函数和数据注释的代码

      请检查C:\Windows\System32\drivers\etc\hosts中的配置,您也可以尝试在IE Internet属性中操作LAN设置

      选中“作为专用自动配置”部分,然后自动检测设置

      您需要执行此操作

      <bindings>
          <binding protocol="http" bindingInformation="*:55210:localhost" />
          <binding protocol="http" bindingInformation="169.254.80.80:55210:" />
      </bindings>
      
      
      
      而不是这个

      <bindings>
          <binding protocol="http" bindingInformation=":55210:localhost" />
          <binding protocol="http" bindingInformation=":55210:169.254.80.80" />
      </bindings>
      
      
      

      另外,使用“管理”选项启动visual。。。iis express就是这样工作的,这是一个安全问题。

      对于WP7,我建议检查我在如何编写代码方面没有问题,我对他们在本地交谈有问题。我有一个功能齐全的应用程序。我只是缺少一些东西,可以让我将设备插入计算机,运行本地asp.net web api副本,让设备和web api在本地相互通信。以下内容可能有助于尝试禁用本地计算机的防火墙,并尝试通过IP地址/URL连接您的web api。。。这样行吗?是的,我试过禁用我的防病毒和windows防火墙。在我的本地机器上,使用ip地址可以工作。然后我复制了相同的url,并通过浏览器在手机上尝试,但得到了404。当我再次尝试时,我收到了一个错误的请求。我看到了那篇文章,但我不清楚当我启动VS时会发生什么(它会显示localhost吗?),我不清楚我将在WP7浏览器中使用什么作为链接。有了ip,我在关闭zune后取得了一些成功,但当它打开时失败了。是的,我使用的是IIS express,并且几乎做到了这一点(当我使用VS 2010和WP&时效果很好)。我正在使用webapi 1,不知道CORS是什么。我想我可以得到一些代码。好的,我添加了一些示例代码,说明如何调用我的webapi服务。
      <bindings>
          <binding protocol="http" bindingInformation=":55210:localhost" />
          <binding protocol="http" bindingInformation=":55210:169.254.80.80" />
      </bindings>