«Удаленное имя не может быть разрешено» при вызове веб -службы в ASP.NET MVC, но практически идентичный модульный тест дC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 «Удаленное имя не может быть разрешено» при вызове веб -службы в ASP.NET MVC, но практически идентичный модульный тест д

Сообщение Anonymous »

Я получаю систему.net.webexception с сообщением «Удаленное имя не может быть разрешено» при попытке сделать звонок в веб -службу с httpclient в ASP.NET MVC. Достаточно сбито с толку, у меня есть консольное приложение и сопроводительный модульный тест, который имеет практически идентичный код, который работает отлично.public HttpClient GetHttpClient(bool acceptVersion = true, string acceptType = @"application/json")
{
// This line was required to make this run without exception for
// my unit test
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

string key = "key"; // Obviously, abbreviated

var client = new HttpClient();
if (acceptVersion)
{
client.DefaultRequestHeaders.Add("Accept-version", "beta");
}
client.DefaultRequestHeaders.Add("AccessToken", key);
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue(acceptType) { CharSet = "utf-8" });
client.BaseAddress = new Uri("API uri"); // Obviously, edited

return client;
}
< /code>

Мой фабричный метод буквально линейный на линии идентичен для моего рабочего теста.public static async Task PercentOfUsersCurrentlyActive()
{
string json;

using (var client = (new ConnectionFactory()).GetHttpClient(false))
{
// The exception occurs on this line
HttpResponseMessage message = await client.GetAsync("users");

json = await message.Content.ReadAsStringAsync();
}

UserCollection collection = JsonConvert.DeserializeObject(json);

int numActive = collection.content.Count(usr => usr.active);

double average = (double)((double)numActive / (double)collection.content.Count);

return average;
}
< /code>

и мой контроллер: < /p>

public class UserController : AsyncController
{
// GET: User
public async Task Index()
{
// I get the exception on here
double user = await Reports.General_Classes.User.GetActiveUsers();
return View(user);
}
}
< /code>

my Stack Trace: < /p>

[WebException: The remote name could not be resolved: '...']
System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult) +606
System.Net.Http.HttpClientHandler.GetResponseCallback(IAsyncResult ar) +64

[HttpRequestException: An error occurred while sending the request.]
System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +92
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +58
System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() +28
Reports.General_Classes.d__36.MoveNext() in ...\User.cs:49
System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +92
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +58
System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() +24
Report_Retriever.Controllers.d__0.MoveNext() in ...\UserController.cs:17
System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +92
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +58
System.Web.Mvc.Async.TaskAsyncActionDescriptor.EndExecute(IAsyncResult asyncResult) +97
System.Web.Mvc.Async.c__DisplayClass37.b__36(IAsyncResult asyncResult) +17
System.Web.Mvc.Async.WrappedAsyncResult`1.CallEndDelegate(IAsyncResult asyncResult) +10
System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +48
System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod(IAsyncResult asyncResult) +32
System.Web.Mvc.Async.AsyncInvocationWithFilters.b__3d() +50
System.Web.Mvc.Async.c__DisplayClass46.b__3f() +225
System.Web.Mvc.Async.c__DisplayClass33.b__32(IAsyncResult asyncResult) +10
System.Web.Mvc.Async.WrappedAsyncResult`1.CallEndDelegate(IAsyncResult asyncResult) +10
System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +48
System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethodWithFilters(IAsyncResult asyncResult) +34
System.Web.Mvc.Async.c__DisplayClass2b.b__1c() +26
System.Web.Mvc.Async.c__DisplayClass21.b__1e(IAsyncResult asyncResult) +100
System.Web.Mvc.Async.WrappedAsyncResult`1.CallEndDelegate(IAsyncResult asyncResult) +10
System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +48
System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResult asyncResult) +27
System.Web.Mvc.Controller.b__1d(IAsyncResult asyncResult, ExecuteCoreState innerState) +13
System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +29
System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +48
System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult) +36
System.Web.Mvc.Controller.b__15(IAsyncResult asyncResult, Controller controller) +12
System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +22
System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +48
System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult) +26
System.Web.Mvc.Controller.System.Web.Mvc.Async.IAsyncController.EndExecute(IAsyncResult asyncResult) +10
System.Web.Mvc.MvcHandler.b__5(IAsyncResult asyncResult, ProcessRequestState innerState) +21
System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +29
System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +48
System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) +28
System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult result) +9
System.Web.CallHandlerExecutionStep.OnAsyncHandlerCompletion(IAsyncResult ar) +129
< /code>

и вот рабочий код из моего DLL и модульного теста: < /p>

[TestMethod]
public async Task GetActiveUserTests()
{
double percent = await User.GetActiveUsers();

Assert.IsTrue(percent >= 0 && percent

и вот метод GetactiveUsers < /code> из моего приложения консоли DLL (который по существу идентичен методу, который я использую выше): < /p>

public static async Task GetActiveUsers()
{
string json;

using (var client = UtilityMethods.GetHttpClient(false))
{
HttpResponseMessage message = await client.GetAsync("users");

json = await message.Content.ReadAsStringAsync();
}

UserCollection collection = JsonConvert.DeserializeObject(json);

int numActive = collection.content.Count(usr => usr.active);

double average = (double)((double)numActive / (double)collection.content.Count);

return average;
}
< /code>

Как часть моего исследования, я прочитал следующие посты переполнения стека: < /p>


li> asp.net Исключение: удаленное имя не может быть разрешено: 'apiconnector.com' < /li>
/> < /ul>

В обоих этих случаях они могут получить доступ к удаленному месту из браузера, но не программно. Однако мой случай несколько отличается: я могу выполнять вызовы против API из модульного теста, но не из приложения ASP.NET MVC. Опять же, однако, это не точно применимо к моему случаю, потому что оба локально работают в визуальной студии. Кодовая работа в модульном тесте, но практически идентичный код не работает в ASP.NET MVC?

Подробнее здесь: https://stackoverflow.com/questions/463 ... ice-in-asp
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»