Pergunta

Qual é a melhor maneira de fazer com que a hospedagem de um aplicativo ASP.NET MVC funcione no IIS 5 (6 ou 7).Quando tentei publicar meu aplicativo ASP.NET MVC, tudo o que consegui foram erros 404.Pesquisei um pouco no Google e encontrei algumas soluções, mas nenhuma delas parece super elegante, e me preocupo se elas ficarão inutilizáveis ​​​​quando eu usar um ambiente de hospedagem compartilhada para o aplicativo.

Solução 1

  1. Clique com o botão direito no diretório virtual do aplicativo em inetmgr.exe.
  2. Propriedades-> Guia Diretório Virtual-> Configuração.
  3. Adicione uma nova extensão de mapeamento.A extensão deve ser. .aspx arquivos).No mapeamento desmarque "Verifique se o arquivo existe".
  4. 3 X OK e você está pronto para ir.
  5. Se desejar, você pode aplicar essa configuração a todos os seus sites.Na etapa1, clique no nó "Site padrão" em vez do seu próprio diretório virtual e, na etapa 2, vá para a guia "Diretório da casa".O resto é o mesmo.

Parece um pouco hacky rotear tudo através do ASP.NET.

Soluções 2

Edite o roteamento MVC para conter .mvc na URL e siga as etapas da solução 1 com base nesta extensão. Editar:O link da imagem original foi perdido, mas aqui está ele no Cache do Google:

alt text

Foi útil?

Solução

A resposta é aqui

Se *.mvc A extensão não estiver registrada na hospedagem, ela dará 404 exceção.A maneira de funcionar de hospedar aplicativos MVC nesse caso é modificar o caluse de roteamento global.ASAX da seguinte maneira.

rotas.add (nova rota ("{controlador} .mvc.aspx/{action}", new mvcrouteHandler ()) {defaults = new RouteValedictionary (new {controller = "yourcontroller"})});

Dessa forma, toda a sua solicitação de controlador terminará em *.mvc.aspx, que é reconhecido pela sua hospedagem.E como as DLLs do MVC são copiadas em sua lixeira local, não precisam ser feitas para isso.

Outras dicas

Eu penso de qualquer forma você terá que fazer a Solução 1.

Considere o pipeline de solicitação HTTP.

  1. Uma solicitação chega ao IIS.
  2. O IIS verifica o cabeçalho da porta/host para ver se possui um site configurado para capturar solicitações para esse cabeçalho/porta do host.
  3. O IIS investiga a extensão do arquivo da solicitação (.php, .asp, .aspx) e a transfere para uma ISAPI que pode lidar com esse tipo de solicitação.

Somente neste ponto o ASP.NET (ou um tempo de execução PHP) entra em ação. Se o IIS não tiver esse mapeamento, ele nunca entregará a solicitação ao tempo de execução do ASP.NET e a solicitação nunca chegará ao seu código.É por isso que você precisa desse mapeamento glob (*) para o ISAPI do ASP.NET.

Os URLs da estrutura ASP.NET MVC geralmente terminam sem nenhuma extensão de arquivo.Se você quiser que essas solicitações sejam tratadas pelo ASP.NET (ou algum outro tempo de execução), será necessário mapear todas as solicitações, independentemente da extensão do arquivo, para esse ISAPI (ou seja,.aspnet_isapi.dll).

Muitas vezes, isso também é feito para HttpHandlers que precisam veicular mídias como .jpg, .gif.Para que o manipulador seja atingido, ele precisa ser mapeado para o seu código, mesmo que .jpg não seja uma extensão de arquivo ASP.NET "normal".

HTH,
Tyler

Correr:C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll -i

Isso redefinirá as configurações de registro do IIS para o usuário aspnet.

Crie o diretório virtual:1.Clique com o botão direito no diretório que deseja converter

  • selecione Propriedades
    1. em Diretório, selecione Criar.
    2. em Configuração, selecione Adicionar.
    3. para inserção executável:

C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll

para inserção de extensão:.*

  • desmarque “Verificar se o arquivo existe”

  • em Documentos, adicione o arquivo de ponto de entrada, ou seja:Padrão.htm, index.htm, Global.asax

  • em Configurações de diretório

    1. selecione Editar...
    2. selecione Acesso anônimo
    3. desmarque Permitir que o IIS controle a senha
    4. desmarque Autenticação básica
    5. desmarque Autenticação integrada do Windows
    6. no ASP.NET, certifique-se de que version = v4.0.30319

ATENÇÃO ao nome de usuário, ou seja:IUSR_AVSJ82S

Defina a permissão de compartilhamento do diretório físico:

  • No Windows Explorer, vá para o diretório físico que foi convertido em um diretório virtual.Clique com o botão direito no nome do diretório
  • selecione propriedades
  • na guia segurança, selecione Adicionar
  • insira o nome de usuário do IIS, ou seja:IUSR_AVSJ82S clique em verificar nome.
  • Clique OK
  • defina permissões para leitura e gravação.

FYI: No servidor 2003 (desenvolvendo um aplicativo que teve que se conectar ao RPS), não me permitiu adicionar a extensão.*, Usei a solução alternativa modificando a cláusula de rota e funcionou.

Você já tentou adicionar .aspx ao final do nome do controlador?

Funcionou para a pergunta Stack Overflow Onde posso obter hospedagem ASP.NET MVC?.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top