Традиционно я использую собственные домены с моим сервером разработки localhost. Что-то вроде:
dev.example.com
dev.api.example.com
Это дало мне большую гибкость при работе с внешними API, такими как Facebook. В прошлом это прекрасно работало со встроенным Visual Studio Development Server, потому что все, что мне нужно было сделать, это добавить CNAME к указанным DNS-записям 127.0.0.1
.
Однако я не смог заставить это работать с IIS Express. Кажется, все, что я пробовал, провалилось. Я даже добавил правильную конфигурацию XML в applicationHost.config
файл для IIS Express, но, похоже, он не распознает записи как действительные, как при истинной установке IIS.
<binding protocol="http" bindingInformation="*:1288:dev.example.com" />
Всякий раз, когда я вхожу в эту строку и пытаюсь запросить, http://dev.example.com:1288
я получаю следующее сообщение:
Неверный запрос - неверное имя хоста
Кто-нибудь знает, если я что-то упускаю очевидное? Или команде IIS Express действительно не хватило предвидения, чтобы увидеть этот тип использования?
источник
Ответы:
Это то, что сработало для меня (Обновлено для VS 2013, см. Историю изменений за 2010 год, для VS 2015 см .: https://stackoverflow.com/a/32744234/218971 ):
Properties
▶Web
, затем настройтеServers
раздел следующим образом:http://localhost
http://dev.example.com
Default Site
на что угодно, кроме порта:80
, убедитесь, что Skype не использует порт 80 и т. Д.)Start URL
вhttp://dev.example.com
Откройте
%USERPROFILE%\My Documents\IISExpress\config\applicationhost.config
(Windows XP, Vista и 7) и измените определение сайта в<sites>
блоке конфигурации так, чтобы оно соответствовало следующему:Если запущен MVC: убедитесь, что для
applicationPool
него установлен один из «встроенных» параметров (например, «Clr2IntegratedAppPool»).hosts
файл и добавьте строку127.0.0.1 dev.example.com
.Несколько замечательных советов из комментариев:
источник
Для Visual Studio 2015 применимы действия, описанные выше, но
applicationhost.config
файл находится в новом месте. В вашей папке «Solution» следуйте по пути, это сбивает с толку, если вы обновились, иapplicationhost.config
на вашем компьютере будет две версии .В этой папке вы увидите ваш файл applicationhost.config
В качестве альтернативы вы можете просто найти в папке вашего решения файл .config и найти его таким образом.
Я лично использовал следующую конфигурацию:
Со следующим в моем файле hosts:
И следующее в моем файле applicationhost.config:
Не забудьте запустить свой экземпляр Visual Studio 2015 в качестве администратора! Если вы не хотите делать это каждый раз, я рекомендую это:
Как запустить Visual Studio от имени администратора по умолчанию
Надеюсь, это кому-нибудь поможет, у меня возникли проблемы при обновлении до visual studio 2015, и я понял, что ни одна из моих конфигураций не была перенесена.
источник
*:49707:
привязки вместо замены по умолчанию,*:49707:localhost
как предлагается во многих других ответах. И вы должны запускать VS как администратор, действительно (так!). Спасибо.http://jam.127.0.0.1.xip.io/
если вы не хотите изменять свой файл hosts. Кроме того, никакие соавторы не должны будут изменять своих. См xip.io .При использовании Visual Studio 2012 с IIS Express изменение существующей привязки не работает постоянно. (Это может работать до тех пор, пока вы не закроете VS, но после этого все будет действительно запутано.)
Ключом является сохранение существующей привязки localhost и добавление новой привязки после нее.
Если вы не работаете в качестве администратора, вам также нужно будет запускать
netsh add urlacl
(чтобы дать себе разрешение на запуск сайта, не являющегося локальным хостом, как обычного пользователя).Если вы хотите разрешить любое имя хоста, полный процесс выглядит следующим образом:
В командной строке администратора выполните следующие команды (заменив номер порта номером порта, который вы определили в # 1):
Вы также можете использовать свое имя пользователя (ДОМЕН \ ПОЛЬЗОВАТЕЛЬ) вместо всех для повышения безопасности.
Добавьте еще одну привязку с нужным именем хоста (в данном случае *). Например:
Обратите внимание, что если вы хотите открыть все имена хостов (*), вам понадобятся две команды netsh (одна для * и одна для localhost). Если вы хотите открыть только определенное имя хоста, вам не нужна вторая команда netsh (localhost); достаточно только одного с вашим конкретным именем хоста.
источник
*
решенным «Сервисом недоступно» это для меня.Неверное имя хоста указывает, что фактический сайт, настроенный вами в файле конфигурации IIS Express, (скорее всего) не работает. IIS Express не имеет такой модели процессов, как IIS.
Чтобы ваш сайт работал, он должен быть запущен явно (либо путем открытия и доступа из веб-матрицы, либо из командной строки, вызывая iisexpress.exe (из каталога установки) с параметром / site.
В общем, шаги, позволяющие использовать полные DNS-имена для локального доступа: Давайте воспользуемся вашим примером DNS-имени dev.example.com.
Настройте привязку IIS Express для своего сайта (например, Site1), включив в него dev.example.com. Административная привилегия будет необходима для использования привязки. В качестве альтернативы, одноразовое резервирование URL может быть выполнено с помощью http.sys с использованием
netsh http add urlacl url=http://dev.example.com:<port>/ user=<user_name>
запустить
iisexpress /site:Site1
или открыть Site1 в WebMatrixисточник
Bad Request - Invalid Hostname
означает, что имя хоста, которое я пытаюсь использовать, не может быть разрешено, потому что команда IIS Express в своей бесконечной мудрости решила специально назвать localhost как единственный заголовок хоста, который будет работать. И VS не позволит вам запустить его любым другим способом, кроме "*: 1234: localhost"На моей установке WebMatrix IIS Express изменение с
"*:80:localhost"
на"*:80:custom.hostname"
не сработало («Плохое имя хоста», даже при правильном отображении etc \ hosts), но сработало - и ни один из дополнительных шагов, требуемых другими ответами здесь ,"*:80:"
не выполнялся . Обратите внимание, что"*:80:*"
это не будет делать; оставь вторую звездочку.источник
"*:80:*"
у меня так получилось, но потом я перезапустил свой компьютер, и он внезапно не заработал, пока я не сменил его,"*:80:"
и все было хорошо! Спасибо.Я пытался интегрировать общедоступный IP-адрес в свой рабочий процесс, и эти ответы не помогли (мне нравится использовать IDE в качестве IDE). Но вышесказанное привело меня к решению (примерно через 2 часа удара головой об стену, чтобы интегрировать его с Visual Studio 2012 / Windows 8) вот что в итоге сработало для меня.
applicationhost.config, сгенерированный VisualStudio под
C:\Users\usr\Documents\IISExpress\config
Administrator
так, чтобы он мог связываться с внешними адресами (не локальным хостом)Administrator
чтобы он мог запустить процесс как администратор, разрешив привязку.В результате вы можете просмотреть
192.168.2.102
в моем случае и проверить (например, в эмуляторе Android). Я действительно надеюсь, что это поможет кому-то еще, поскольку это определенно было раздражающим процессом для меня.Очевидно, это функция безопасности, которую я бы хотел отключить.
источник
Как и Джесса Флинт выше , я не хотел вручную редактировать .vs \ config \ applicationhost.config, потому что я хотел, чтобы изменения сохранялись в системе контроля версий . Я также не хотел иметь отдельный пакетный файл. Я использую VS 2015 .
Свойства проекта → События сборки → Командная строка события перед сборкой:
Просто убедитесь, что вы изменили номер порта на желаемый порт.
источник
Голос с положительным голосом действителен ... и эта информация мне очень помогла. Я знаю, что эта тема обсуждалась ранее, но я хотел добавить некоторые дополнительные материалы. Люди говорят, что вы должны «вручную отредактировать» файл application.config в каталоге Users IISExpress / Config. Это было большой проблемой для меня, потому что я хотел распространить конфигурацию через систему управления исходным кодом среди различных разработчиков.
Я обнаружил, что вы можете автоматизировать обновление этого файла с помощью программы «C: \ Program Files \ IIS Express \ appcmd.exe». Потребовалось время, чтобы выяснить параметры контроля, но я поделюсь своими выводами здесь. По сути, вы можете создать файл .bat, который запускает как команду NETSH, так и APPCMD.EXE (и, возможно, выгрузить файл хоста, если хотите), чтобы упростить настройку заголовка хоста с помощью IIS Express.
Ваш установочный файл bat будет выглядеть примерно так:
Я также сделаю "bat" файл "Uninstall", который очистит эти привязки .. (потому что часто я просто фальсифицирую DNS, чтобы я мог работать с кодом, чувствительным к имени хоста)
Я надеюсь, что эта информация будет полезна для кого-то .. Мне потребовалось немного, чтобы раскрыть.
источник
Следуя совету Jaro, я смог заставить это работать под Windows XP и IIS Express (установленными через Web Matrix) с небольшой модификацией и не ограничивался только localhost. Это просто вопрос правильной установки привязок.
%USERPROFILE%\My Documents\IISExpress\config\applicationhost.config
(пути Windows XP. Vista и 7 будут похожими) и отредактируйте определение сайта в<sites>
блоке конфигурации так, чтобы оно соответствовало следующему:Если запущен MVC, оставьте для applicationPool один из «Интегрированных» параметров.
источник
Решение Дэвида хорошо. Но я обнаружил, что
<script>alert(document.domain);</script>
на странице все еще выводится предупреждение «localhost», поскольку URL-адрес проекта по-прежнему является localhost, даже если он был переопределенhttp://dev.example.com
. Другая проблема, с которой я сталкиваюсь, заключается в том, что она предупреждает меня, что порт 80 уже используется, даже если я отключил Skype, используя номер порта 80, как это рекомендовал Дэвид Мердок. Итак, я нашел другое решение, которое намного проще:http://localhost:33333/
), затем измените его сhttp://localhost:33333/
вhttp://mydomain:333333/
Примечание: После этого изменения, вы не должны ни нажать кнопку «Создать виртуальный каталог» справа от окна проекта Url ни нажмите на кнопку Сохранить в Visual Studio , поскольку они не будут успешно. Вы можете сохранить настройки после следующего шага 3.http://mydomain:333333/
, и<script>alert(document.domain);</script>
на странице появится предупреждение «mydomain».Примечание: Предполагается, что номер порта, указанный выше, равен 33333. Вам необходимо изменить его на номер порта, установленный вашей Visual Studio.
Сообщение отредактировано: сегодня я попытался с другим доменным именем и получил следующую ошибку: Невозможно запустить веб-сервер IIS Express. Не удалось зарегистрировать URL ... Доступ запрещен. (0x80070005) . Я выхожу из IIS Express, щелкнув правой кнопкой мыши значок IIS Express в правом углу на панели задач Windows, а затем перезапустите Visual Studio в качестве администратора, и проблема исчезнет.
источник
Я перепробовал все выше, ничего не получалось. Проблема была решена путем добавления привязок IPv6 в файл hosts. На шаге 5 ответа @David Murdochs добавьте две строки вместо одной, то есть:
Я понял это, проверив
$ ping localhost
из командной строки, которая использовалась для возврата:Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
Вместо этого теперь возвращается:
Reply from ::1: time<1ms
Я не знаю почему, но по какой-то причине IIS Express начал использовать IPv6 вместо IPv4.
источник
Я использовал iisexpress-прокси (от npm) для этого.
https://github.com/icflorescu/iisexpress-proxy
источник
Оставив это здесь на всякий случай ...
Мне нужно было иметь собственные домены для настройки Wordpress Multisite в IIS Express, но ничего не работало, пока я не запустил Webmatrix / Visual Studio в качестве администратора. Тогда я смог привязать поддомен к тому же приложению.
Затем перейдите по адресу http: //whwhat.localhost: 12345 / .
источник