我现在使用的是
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.