missing - start iis express service




Usando domínios personalizados com o IIS Express (8)

A resposta votada é válida ... e essa informação me ajudou um pouco. Eu sei que este tópico foi discutido antes, mas eu queria adicionar alguma entrada adicional. As pessoas estão dizendo que você deve "editar manualmente" o arquivo application.config no diretório Users IISExpress / Config. Este foi um grande problema para mim, porque eu queria distribuir a configuração via controle de origem para vários desenvolvedores.

O que eu descobri é que você pode automatizar a atualização deste arquivo usando o programa "C: \ Arquivos de programas \ IIS Express \ appcmd.exe". Demorou um pouco para descobrir os parâmetros de controle, mas vou compartilhar minhas descobertas aqui. Essencialmente, você pode criar um arquivo .bat que execute tanto o comando NETSH quanto o APPCMD.EXE (e talvez troque um arquivo host se desejar) para facilitar a configuração do cabeçalho do host com o IIS Express.

Seu arquivo bat de instalação seria algo como isto:

netsh http add urlacl url=http://yourcustomdomain.com:80/ user=everyone 

"C:\Program Files\IIS Express\appcmd.exe" set site "MyApp.Web" /+bindings.[protocol='http',bindingInformation='*:80:yourcustomdomain.com']

Eu também farei um arquivo bat de "Desinstalação" que limpará estas ligações .. (porque muitas vezes eu estou apenas falsificando DNS para que eu possa trabalhar em código que é sensível ao nome do host)

netsh http delete urlacl url=http://yourcustomdomain.com:80/

"C:\Program Files\IIS Express\appcmd.exe" set site "MyApp.Web" /-bindings.[protocol='http',bindingInformation='*:80:yourcustomdomain.com']

Espero que esta informação seja útil para alguém .. Demorei um pouco para descobrir.

Tradicionalmente, uso domínios personalizados com meu servidor de desenvolvimento localhost. Algo ao longo das linhas de:

dev.example.com
dev.api.example.com

Isso me proporcionou muita flexibilidade ao trabalhar com APIs externas, como o Facebook. Isso funcionou muito bem no passado com o construído em Visual Studio Development Server, porque tudo que eu precisava fazer era adicionar um CNAME aos registros DNS apontando para 127.0.0.1 .

No entanto, não consegui fazer isso funcionar com o IIS Express. Tudo o que tentei parece ter falhado. Inclusive, adicionei a configuração XML correta ao arquivo applicationHost.config para o IIS Express, mas não parece reconhecer as entradas como válidas como seria uma verdadeira instalação do IIS.

<binding protocol="http" bindingInformation="*:1288:dev.example.com" />

Sempre que eu entrar nessa linha e tentar solicitar http://dev.example.com:1288 , recebo a seguinte mensagem:

Solicitação incorreta - nome de host inválido

Alguém sabe se estou faltando alguma coisa óbvia? Ou a equipe do IIS Express realmente carece de previsão para ver esse tipo de uso?


A solução de David é boa. Mas eu encontrei o <script>alert(document.domain);</script> na página ainda alerta "localhost" porque o URL do projeto ainda é localhost mesmo que tenha sido substituído por http://dev.example.com . Outro problema que enfrento é que ele me alerta que a porta 80 já estava em uso, mesmo que eu tenha desabilitado o Skype usando o número da porta 80, como recomendado por David Murdoch. Então eu descobri outra solução que é muito mais fácil:

  1. Execute o Bloco de Notas como administrador e abra o C: \ Windows \ System32 \ drivers \ etc \ hosts, adicione 127.0.0.1 mydomain e salve o arquivo;
  2. Abra o projeto da Web com o Visual Studio 2013 (Observação: também deve ser executado como administrador), clique com o botão direito do mouse no projeto -> Propriedades -> Web (suponha que o URL do projeto na opção "IIS Express" seja http://localhost:33333/ ), em seguida, altere-o de http://localhost:33333/ para http://mydomain:333333/ Observação: após essa alteração, você não deve clicar no botão "Criar diretório virtual" à direita da caixa URL do projeto nem clique no botão Salvar do Visual Studio, pois eles não serão bem-sucedidos. Você pode salvar suas configurações após a próxima etapa 3.
  3. Abra% USERPROFILE% \ Meus Documentos \ IISExpress \ config \ applicationhost.config, procure "33333: localhost" e atualize-o para "33333: mydomain" e salve o arquivo.
  4. Salve sua configuração como mencionado na etapa 2.
  5. Clique com o botão direito do mouse em uma página da web em seu estúdio visual e clique em "Visualizar no navegador". Agora a página será aberta em http://mydomain:333333/ e <script>alert(document.domain);</script> na página alertará "mydomain".

Nota: O número da porta listado acima é assumido como 33333. Você precisa alterá-lo para o número da porta definido pelo seu visual studio.

Post editado: Hoje eu tentei com outro nome de domínio e recebi o seguinte erro: Não é possível iniciar o servidor da Web do IIS Express. Falha ao registrar o URL ... O acesso foi negado. (0x80070005) . Eu saio do IIS Express clicando com o botão direito do mouse no ícone IIS Express, no canto direito da barra de tarefas do Windows, e reinicio meu visual studio como administrador, e o problema desaparece.


Como o Jessa Flint acima, eu não queria editar manualmente o .vs \ config \ applicationhost.config porque queria que as alterações persistissem no controle de origem. Eu também não queria ter um arquivo em lote separado. Estou usando o VS 2015 .

Propriedades do projeto → Construir eventos → Pré-criar linha de comando do evento:


::The following configures IIS Express to bind to any address at the specified port

::remove binding if it already exists
"%programfiles%\IIS Express\appcmd.exe" set site "MySolution.Web" /-bindings.[protocol='http',bindingInformation='*:1167:'] /apphostconfig:"$(SolutionDir).vs\config\applicationhost.config"

::add the binding
"%programfiles%\IIS Express\appcmd.exe" set site "MySolution.Web" /+bindings.[protocol='http',bindingInformation='*:1167:'] /apphostconfig:"$(SolutionDir).vs\config\applicationhost.config"

Apenas certifique-se de alterar o número da porta para a porta desejada.


Deixando isso aqui apenas no caso de alguém precisar ...

Eu precisava ter domínios personalizados para uma configuração do Wordpress Multisite no IIS Express, mas nada funcionou até que eu executei o Webmatrix / Visual Studio como um administrador. Então eu consegui vincular subdomínios ao mesmo aplicativo.

<bindings> 
    <binding protocol="http" bindingInformation="*:12345:localhost" />
    <binding protocol="http" bindingInformation="*:12345:whatever.localhost" />
</bindings>

Em seguida, vai para http://whatever.localhost:12345/ será executado.



Isso é o que funcionou para mim (Atualizado para o VS 2013, veja o histórico de revisões para 2010, para o VS 2015, veja isto: https://.com/a/32744234/218971 ):

  1. Clique com o botão direito do mouse em seu Projeto de Aplicativo da Web ▶ PropertiesWeb e configure a seção Servers seguinte maneira:
    • Selecione o IIS Express ▼ na lista suspensa
    • URL do projeto: http://localhost
    • Substituir o URL raiz do aplicativo: http://dev.example.com
    • Clique em Criar Diretório Virtual (se você receber um erro aqui, talvez seja necessário desativar o IIS 5/6/7/8, alterar o Default Site do IIS para qualquer coisa, exceto para porta :80 , certifique-se de que o Skype não esteja usando a porta 80 etc.)
  2. Opcionalmente: defina o Start URL como http://dev.example.com
  3. Abra %USERPROFILE%\My Documents\IISExpress\config\applicationhost.config (Windows XP, Vista e 7) e edite a definição do site no bloco <sites> config para seguir as linhas do seguinte:

    <site name="DevExample" id="997005936">
        <application path="/" applicationPool="Clr2IntegratedAppPool">
            <virtualDirectory
                path="/"
                physicalPath="C:\path\to\application\root" />
        </application>
        <bindings>
            <binding
                protocol="http"
                bindingInformation=":80:dev.example.com" />
        </bindings>
        <applicationDefaults applicationPool="Clr2IntegratedAppPool" />
    </site>
    
  4. Se estiver executando o MVC: verifique se o applicationPool está configurado para uma das opções "Integradas" (como "Clr2IntegratedAppPool").

  5. Abra seu arquivo de hosts e inclua a linha 127.0.0.1 dev.example.com .
  6. ► Inicie sua inscrição!

Alguns ótimos conselhos dos comentários:

  • Talvez seja necessário executar o Visual Studio como administrador.
  • Se você quiser fazer outros desenvolvedores verem o seu IIS rodando netsh http add urlacl url=http://dev.example.com:80/ user=everyone
  • Se você quiser que o site resolva para todos os hosts, configure bindingInformation="*:80:" . Use qualquer porta que você quiser, 80 é apenas conveniente.

O nome do host inválido indica que o site real que você configurou no arquivo de configuração do IIS Express (provavelmente) não está em execução. O IIS Express não possui um modelo de processo como o IIS.

Para que seu site seja executado, ele precisaria ser iniciado explicitamente (abrindo e acessando a partir do webmatrix ou da linha de comando chamando iisexpress.exe (do seu diretório de instalação) com o parâmetro / site.

Em geral, as etapas para permitir que nomes DNS totalmente qualificados sejam usados ​​para acesso local são Vamos usar seu exemplo do nome DNS dev.example.com

  1. edite o arquivo% windows% \ system32 \ drivers \ etc \ hosts para mapear dev.example.com para 127.0.0.1 (privilégio administrativo requerido). Se você controlar o servidor DNS (como no caso de Nick), a entrada DNS é suficiente, pois essa etapa não é necessária.
  2. Se você acessar a Internet através do proxy, certifique-se de que o dev.example.com não será encaminhado para o proxy (você tem que colocar na lista de exceções em seu navegador (para IE seria Ferramentas / Opções da Internet / Conexões / Configurações do Lan, em seguida, vá para Proxy Server / Advanced e coloque dev.example.com na lista de exceções.
  3. Configure a ligação do IIS Express para seu site (por exemplo: Site1) para incluir dev.example.com. Privilégio administrativo será necessário para usar a ligação. Como alternativa, uma reserva de URL única pode ser feita com http.sys usando

    netsh http add urlacl url=http://dev.example.com:<port>/ user=<user_name>

  4. iniciar iisexpress /site:Site1 ou abrir Site1 na WebMatrix


Para o Visual Studio 2015, as etapas nas respostas acima se aplicam, mas o arquivo applicationhost.config está em um novo local. Na sua pasta "solução", siga o caminho, isso é confuso se você atualizou e teria DOIS versões do applicationhost.config em sua máquina.

\.vs\config

Dentro dessa pasta você verá seu arquivo applicationhost.config

Alternativamente, você poderia apenas procurar em sua pasta de solução pelo arquivo .config e encontrá-lo dessa maneira.

Eu pessoalmente usei a seguinte configuração:

Com o seguinte no meu arquivo hosts:

127.0.0.1       jam.net
127.0.0.1       www.jam.net

E o seguinte no meu arquivo applicationhost.config:

<site name="JBN.Site" id="2">
    <application path="/" applicationPool="Clr4IntegratedAppPool">
        <virtualDirectory path="/" physicalPath="C:\Dev\Jam\shoppingcart\src\Web\JBN.Site" />
    </application>
    <bindings>
        <binding protocol="http" bindingInformation="*:49707:" />
            <binding protocol="http" bindingInformation="*:49707:localhost" /> 
    </bindings>
</site>

Lembre-se de executar sua instância do visual studio 2015 como administrador! Se você não quer fazer isso toda vez que eu recomendo isso:

Como executar o Visual Studio como administrador por padrão

Espero que isso ajude alguém, eu tive problemas ao tentar atualizar para o visual studio 2015 e percebi que nenhuma das minhas configurações estava sendo transportada.





iis-express