Я изучаю Xamarin из этого учебника - Зарегистрируйте пользователя в ASP.NET Identity из форм Xamarin . Все работает, если отправить запрос с почтальоном. Но если я хочу использовать эмулятор Android, он не работает. И я не могу использовать UWP, потому что режим разработчика должен быть включен, и у меня нет прав администратора на компьютере моей компании. Я включил режим разработчика на своем частном компьютере, и он работает на UWP, но он не работает на эмуляторе Android. В учебном пособии используется UWP и парень сказал, что для эмулятора андроида необходима некоторая конфигурация, но он не сообщил никаких подробностей.
Я прочитал много статей, и кажется, что проблема в связи между моим бэкэндом (работающим на localhost) и эмулятором Android. Правильно ли, что эмулятор Android - это отдельная машина, пытающаяся вызвать мой локальный хост? Я попытался изменить localhost на 127.0.0.1 или 10.0.2.2, и я попробовал все варианты из этой статьи . Но это не работает.
Я прав, что localhost должен быть изменен? Если да, то где? Или проблема в другом месте?
API-сервис Регистрация метода:
public async Task<bool> RegisterAsync(string email, string password, string confirmPassword)
{
try
{
System.Diagnostics.Debug.WriteLine("Email: " + email);
var client = new HttpClient();
var model = new RegisterBindingModel
{
Email = email,
Password = password,
ConfirmPassword = confirmPassword
};
var json = JsonConvert.SerializeObject(model);
HttpContent content = new StringContent(json);
content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
var response = await client.PostAsync("http://localhost:49205/api/Account/Register", content);
if (response.IsSuccessStatusCode)
{
return true;
}
return false;
}
catch(Exception e)
{
System.Diagnostics.Debug.WriteLine("Error: " + e);
throw;
}
}
Исключение, если я использую localhost:
{System.Net.Http.HttpRequestException: An error occurred while sending the request ---> System.Net.WebException: Error: ConnectFailure (Connection refused) ---> System.Net.Sockets.SocketException: Connection refused
at System.Net.Sockets.Socket.Connect (System.Net.EndPoint remoteEP) [0x000b6] in <bcdc1df2b3724ab69797f3819a126346>:0
at System.Net.WebConnection.Connect (System.Net.HttpWebRequest request) [0x0016d] in <bcdc1df2b3724ab69797f3819a126346>:0 --- End of inner exception stack trace ---
at System.Net.HttpWebRequest.EndGetRequestStream (System.IAsyncResult asyncResult) [0x0003a] in <bcdc1df2b3724ab69797f3819a126346>:0
at System.Threading.Tasks.TaskFactory`1[TResult].FromAsyncCoreLogic (System.IAsyncResult iar, System.Func`2[T,TResult] endFunction, System.Action`1[T] endAction, System.Threading.Tasks.Task`1[TResult] promise, System.Boolean requiresSynchronization) [0x0000f] in <fcbf47a04b2e4d90beafbae627e1fca4>:0
Неверный запрос, если я использую 10.0.2.2:
{StatusCode: 400, ReasonPhrase: 'Bad Request', Version: 1.1, Content: System.Net.Http.StreamContent,
Headers: {Server: Microsoft-HTTPAPI/2.0 Date: Thu, 17 May 2018 09:08:41 GMT Connection: close Content-Type: text/html; charset=us-ascii Content-Length: 334 }}