Определите, работает ли веб-приложение ASP.Net Core на локальном хосте.C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Определите, работает ли веб-приложение ASP.Net Core на локальном хосте.

Сообщение Anonymous »

В моей компании машины разработчиков находятся за прокси-сервером. У меня есть сценарий, в котором мне нужно предоставить свои учетные данные, и я выполняю это через HttpClient.DefaultProxy. Однако на промежуточных и производственных серверах прокси отсутствует. Я хотел бы определить, работает ли приложение на локальном хосте, и установить только прокси-сервер по умолчанию в этом сценарии. Раньше я просматривал HttpRequest, чтобы определить эту информацию. Для этого мне нужно применить логику в файле запуска.

Пока единственное решение, которое я придумал и которое является достаточно чистым, — это проверка подключенного отладчика. Однако это не идеальный вариант, поскольку мы также запускаем эти приложения локально без подключенного отладчика.
Другой вариант — использовать промежуточное программное обеспечение, а затем проверить URL-адрес на «localhost», но это кажется чрезмерным.

Любые идеи будут оценены!

public void ConfigureServices(IServiceCollection services)
{
if (/*Some clean way to determine IsLocal*/)
{
//Need to provide proxy credentials for local development only
var proxyCredentials = new NetworkCredential(Configuration["ProxyCredentials:Username"], Configuration["ProxyCredentials:Password"]);
HttpClient.DefaultProxy = new WebProxy("http://proxy.company.com:80", false, null, proxyCredentials);
}
}


Чтобы уточнить, чтобы предотвратить удаление вопроса: я хотел бы определить, существует ли localhost перед httprequest.


Обновление Я решил использовать lauchSetting.json, который тоже не идеален, но лучше всего подходит для моего случая. . Я подробно обрисую все варианты и их плюсы и минусы для любого будущего разработчика, занимающего ту же должность.

Вариант 1: Добавить локальную среду

Проблемы: Если у вас уже есть конфигурации для конкретной среды, вам придется потратить время на копирование и вставку конфигурации, если вы хотите настроить «промежуточную» настройку из своего «локального» файла конфигурации. .

Код

public void ConfigureServices(IServiceCollection services)
{
if (HostingEnvironment.IsEnvironment("Local"))
{
//Need to provide proxy credentials for local development only
var proxyCredentials = new NetworkCredential(Configuration["ProxyCredentials:Username"], Configuration["ProxyCredentials:Password"]);
HttpClient.DefaultProxy = new WebProxy("http://proxy.company.com:80", false, null, proxyCredentials);
}
}




Вариант 2. Создайте промежуточное ПО для проверки localhost в URL-адресе запроса

Проблемы: В зависимости от того, как он реализован, он может запускаться слишком часто. Это также не работает, если ваша локальная версия не использует localhost в URL-адресе.


Вариант 3. Используйте launchSettings.json для размещения переменной среды

Проблемы: В зависимости от вашей IDE это может не работать. Предполагается, что вы зафиксировали файл launchSettings.json.

Код

{
"profiles": {
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development",
"IsLocal": "True"
}
}
}
}



public void ConfigureServices(IServiceCollection services)
{
if (Environment.GetEnvironmentVariable("IsLocal") == "True")
{
//Need to provide proxy credentials for local development only
var proxyCredentials = new NetworkCredential(Configuration["ProxyCredentials:Username"], Configuration["ProxyCredentials:Password"]);
HttpClient.DefaultProxy = new WebProxy("http://proxy.company.com:80", false, null, proxyCredentials);
}
}


Вариант 3.5: Используйте реальную переменную среды

Проблемы: Требуется дополнительная настройка разработчика помимо проверки кода и запуска


Вариант 4: Используйте имена компьютеров, чтобы определить, является ли разработчик или сервер

Проблемы. Предполагается, что все машины разработчиков используют какой-то тип стандарт.

Код

public void ConfigureServices(IServiceCollection services)
{
if (Environment.MachineName.StartsWith("DEV", StringComparison.OrdinalIgnoreCase))
{
//Need to provide proxy credentials for local development only
var proxyCredentials = new NetworkCredential(Configuration["ProxyCredentials:Username"], Configuration["ProxyCredentials:Password"]);
HttpClient.DefaultProxy = new WebProxy("http://proxy.company.com:80", false, null, proxyCredentials);
}
}


Вариант 5. Проверьте наличие подключенного отладчика.

Проблемы: Отладчик не работает. Он всегда подключается при локальном запуске

Кода

public void ConfigureServices(IServiceCollection services)
{
if (Debugger.IsAttached)
{
//Need to provide proxy credentials for local development only
var proxyCredentials = new NetworkCredential(Configuration["ProxyCredentials:Username"], Configuration["ProxyCredentials:Password"]);
HttpClient.DefaultProxy = new WebProxy("http://proxy.company.com:80", false, null, proxyCredentials);
}
}


Вариант 6: Используйте проверку отладки во время компиляции

Проблемы: Может не потребоваться для компиляции отладки в каждом сценарии

Код

#if(DEBUG)
//Need to provide proxy credentials for local development only
var proxyCredentials = new NetworkCredential(Configuration["ProxyCredentials:Username"], Configuration["ProxyCredentials:Password"]);
HttpClient.DefaultProxy = new WebProxy("http://proxy.company.com:80", false, null, proxyCredentials);
#endif


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

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Веб-API ASP.NET Core 8 с Swagger, который не работает как веб-приложение на локальном хосте
    Anonymous » » в форуме C#
    0 Ответы
    62 Просмотры
    Последнее сообщение Anonymous
  • Как очистить кэш для файлов бритвы при работе с веб -приложением ASP.NET на локальном хосте
    Anonymous » » в форуме C#
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous
  • Ошибка Bad Gateway (502) при вызове API Core Core .NET .NET из другого API Core .NET .NET .NET .NET
    Anonymous » » в форуме C#
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • Ошибка Bad Gateway (502) при вызове API Core Core .NET .NET из другого API Core .NET .NET .NET .NET
    Anonymous » » в форуме C#
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • Ошибка http 404 визуальной студии ASP.NET MVC на локальном хосте. Ресурс не найден.
    Anonymous » » в форуме C#
    0 Ответы
    48 Просмотры
    Последнее сообщение Anonymous

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