windows-phone-7 – WP7设备Windows 8.1 VS 2012 Asp.net Web Api – 如何让设备与Web Api通信?

我现在使用的是
Windows 8.1并使用VS 2012.我正在使用Web api后端来处理Windows Phone应用程序中的所有繁重工作.但是,当我通过模拟器运行我的应用程序时,所有请求到我本地运行的web api被拒绝.

我发现模拟器无法解析localhost.在this article做了一些非常模拟器后,我能够在Windows 8模拟器上没有问题.

但是我现在需要在我的实际设备上测试它以使用相机,但我遇到了与模拟器相同的问题.我无法与我当地的网络API沟通.

当我在Windows 7和VS 2010上时,我没有遇到任何问题.我只是使用了文章中的步骤而没有任何问题.

当我尝试从我的设备向我的web api请求时,我收到此错误(该设备通过计算机被USB连接)

<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\"\"http://www.w3.org/TR/html4/strict.dtd\">
<HTML>
  <HEAD>
    <TITLE>Bad Request</TITLE>
    <META HTTP-EQUIV=\"Content-Type\" Content=\"text/html; charset=us-ascii\">
  </HEAD>
  <BODY>
    <h2>Bad Request - Invalid Hostname</h2>
    <hr>
    <p>HTTP Error 400. The request hostname is invalid.</p>
  </BODY>
</HTML>

我需要设置什么才能使其工作?

编辑

我还有这个问题.我能够让Windows Phone 8模拟器工作,但仍然无法使我的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" };
        }
    }

>我尝试过localhost(知道它不会对我读到的内容有效)
>尝试了我的电脑ip地址
>尝试在app Express中输入IIS Express配置一个ip地址来使用

<绑定>
            < binding protocol =“http”bindingInformation =“:55210:localhost”/>
            < binding protocol =“http”bindingInformation =“:55210:169.254.80.80”/>
        < /绑定>

最佳答案 您的404表示无效的主机名.也许你必须按照描述的步骤
here简而言之:将你的机器名称添加到你的web服务的配置中.它与Windows Phone 8有关,但也可能适用于Windows Phone 7.

点赞