Я сейчас на Windows 8.1 и использую VS 2012. Я использую Web api backend для всей тяжелой работы в моем приложении Windows Phone. Однако, когда я запускал приложение через эмулятор, все запросы к моему локальному веб-сайту api отклонялись.WP7 Device + Windows 8.1 + VS 2012 + Asp.net Web Api - Как заставить устройство разговаривать с веб-Api?
Я обнаружил, что эмулятор не смог решить localhost. После того, как я сделал что-то очень симулятор в this article, я не смог решить проблему с эмулятором Windows 8.
Однако мне нужно проверить его на моем самом устройстве, чтобы использовать камеру, но я столкнулся с той же проблемой, что и с эмулятором. Я не могу общаться с моей локальной веб-ави.
У меня не было проблем, когда я был в Windows 7 и VS 2010. Я только что использовал шаги в статье и не имел проблем.
Я получаю эту ошибку, когда я пытаюсь сделать запрос на моем веб-апи из устройства (устройство подключается в по 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 иметь возможность разговаривать с локальным веб-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" };
}
}
- Я попытался локальный (знал, что это не будет работать от того, что я читал)
- пытался мой компьютер IP-адрес
попытался поместить в IIS Express в конфигурацию приложения ip-адрес для использования
< привязок> < связывания протокола = "HTTP" bindingInformation = ": 55210: локальный" /> < связывания протокола = "HTTP" bindingInformation =»: 55210: 169.254.80.80" /> </привязок>
для WP7 я рекомендую проверить http://stackoverflow.com/questions/10444273/httpclient-and-httpget-support-in-wp7 –
У меня нет проблем с тем, как его кодировать, у меня есть проблема для них всем говорить на местном уровне. У меня было полностью функционирующее приложение, которое работает. Я просто пропустил что-то, что позволило бы подключить мое устройство к моему компьютеру, запустить локальную копию api-файла asp.net и установить, что устройство и веб-api будут разговаривать друг с другом локально. – chobo2
Возможно, последующее поможет http://stackoverflow.com/questions/16118558/work-with-web-api-and-windows-phone –