Неверный запрос - неверное имя хоста с проектом WebPI Asp.net в Visual Studio 2013

Я запускаю очень простой проект webAPI в Visual Studio Pro 2013. Он отлично работает на localhost на моей машине. Затем я пытаюсь перейти в браузер с другой машины и перейти: 57571, подобно тому, как я могу указать на приложения rails, поставив сервер ipapdress, а затем номер порта. Я тогда получаю Неверный запрос - неверное имя хоста Ошибка HTTP 400. Недопустимое имя хоста запроса.

Я также воспроизвел это, поставив две машины Windows в лазурь. Один работает visual studio pro 2013. Я запускаю одно и то же приложение, и оно отлично работает локально. Затем, если я попытаюсь указать на нее с другой виртуальной машины (в той же виртуальной сети, я также могу ping сервер vm), я все равно получаю Плохой запрос - неверное имя хоста HTTP-ошибка 400. Имя хоста запроса недействительно.

Имейте в виду, что я не забочусь о пользовательском domian. Мне просто нужно иметь возможность запускать это приложение с другого компьютера, используя IP-адрес. Это возможно? (если такие идеи о том, что я делаю неправильно?) Вот что я пробовал Не работает для меня Это также не помогло работать

Как я могу сказать, что visual studio работает как администратор?

(Я использую Windows Server 2012 R2, где работает Visual Studio. Я отключил брандмауэр на обеих машинах)

Ответы

Ответ 1

Вот как я заработал.

goto C:\users\yourusername\Documents\IISExpress\config\applicationhost.config в Visual Studio 2013

Добавьте следующую строку в applicationhost.config, чтобы она работала

<binding protocol="http" bindingInformation="*:53676:*" />

где это не сработало

<binding protocol="http" bindingInformation="<clientsIPaddress>:53676:*" />

Vs2015 Update и точное местоположение для этого изменения application.config описаны ниже.

Путь к файлу следующий для VS 2015.

C:\Users\\{YourUsername}\Documents\Visual Studio 2015\Projects\\{ThisSolutionName}\\.vs\config\applicationhost.config , как упоминал Даниил.

Где я могу поместить это в свой файл application.config?

Ниже приведены родительские разделы в файле XML, где вы найдете привязки.

 <system.applicationHost>
           <sites>
              <site name="WebSite1" id="1" serverAutoStart="true">
                 <bindings>
                      <binding protocol="http" bindingInformation=":8080:localhost" />
               </bindings>
           </site>
      </sites>
 </system.applicationHost>

Это была примерно строка 161 для нового проекта, который ничего не менял в приложении application.config.

То, что я не понимал, - это то, что я думал, что IP-адрес клиентов был, на самом деле неправдой. Причина в том, что у меня было подключение VNet к VNet в Azure, а шлюз, соединяющий два IP-адреса, переназначает IP-адрес клиентов в сети, в которой выполнялось мое приложение. Таким образом, мне пришлось искать новый IP-адрес, для которого он был сопоставлен, чтобы не использовать стратегию *:port:*

Ответ 2

Я не могу комментировать, но хотел ответить @EthanKeiser

В Visual Studio 2015 имеется отдельный файл конфигурации для каждого решения, которое необходимо обновить в соответствии с принятым ответом. Этот файл находится по адресу:

C:\Users\\{UserName}\Documents\Visual Studio 2015\Projects\\{SolutionName}\\.vs\config\applicationhost.config

Ответ 3

Еще одна вещь, которая помогла мне, это добавить 127.0.0.1 к привязке.

Таким образом, результат applicationhost.config выглядит следующим образом:

<bindings>
  <binding protocol="http"  bindingInformation="*:28066:" />
  <binding protocol="http"  bindingInformation="*:28066:localhost" />
  <binding protocol="http"  bindingInformation="*:28066:127.0.0.1" />
  <binding protocol="http"  bindingInformation="*:28066:sitename.com" />

  <binding protocol="https" bindingInformation="*:44302:" />
  <binding protocol="https" bindingInformation="*:44302:localhost" />
  <binding protocol="https" bindingInformation="*:44302:127.0.0.1" />
  <binding protocol="https" bindingInformation="*:44302:sitename.com" />
</bindings>

И файл hosts выглядит так:

127.0.0.1   localhost
127.0.0.1   sitename.com

Перед добавлением 127.0.0.1 в браузере было нормально перемещаться как https://localhost:44302, но https://sitename.com:44302 приводил к Bad Request.

Кроме того, если вы выполняете "горячую замену -r", убедитесь, что вы сбрасываете IIS. Вы можете сделать это, щелкнув правой кнопкой мыши по проекту в Visual Studio, выбрав " Unload project, затем измените applicationhost.config, сохраните его и Reload project в VS.

Кстати, не забудьте сгенерировать SSL-сертификат для вашего проекта. Я не уверен, что Visual Studio сделает это за вас.

Порт должен находиться в диапазоне от 44300 до 44399.

Вот как вы можете генерировать SSL:

  1. Откройте Инструменты разработчика Visual Studio от имени администратора
  2. makecert -r -pe -n CN="dev.helpme.transwestern.com" -eku 1.3.6.1.5.5.7.3.1 -ss my -sr localmachine -sky exchange -sp "Microsoft RSA SChannel Cryptographic Provider" -sy 12
  3. netsh http show sslcert ipport=0.0.0.0:44302 44302 (на этом этапе вам нужно будет получить appid)
  4. netsh http delete sslcert ipport=0.0.0.0:44302

Теперь откройте "Управление сертификатами компьютера", перейдите в личный кабинет и выберите вновь созданный. Вам понадобится "Детали/Отпечаток пальца".

  1. netsh http add sslcert ipport=0.0.0.0:44302 certhash=<thumbprint> appid={id from step 3} (включая скобки {})

Надеюсь, это поможет.