Pergunta

Eu fiz o download recentemente beta 2 de VS2010 e começou a brincar com ASP.NET MVC2. desenvolvimento inicial foi feito com Casini, mas agora eu queria executar o aplicativo do IIS 7.5 (Estou executando o Windows 7). Eu instalei a compatibilidade IIS6 metabase e eu corro VS2010 como administrador para que eu possa usar o botão "Create Virtual Directory" na guia "Web" das configurações do projeto. Isso criou a entrada de aplicativo web no IIS, mas não funciona.

Quando eu ir para a página principal ( http: // localhost / MyMvcApp / ) eu recebo um erro HTTP 403 . Quando eu ir diretamente para um dos sub-páginas ( http: // localhost / MyMvcApp / Home / ) I receber um HTTP 404.

Então eu acho que por algum motivo o roteamento de URL não está funcionando. Eu já adicionou UrlRouting como um módulo e um manipulador para o web.config. Em minhas pesquisas isso é oferecido como uma solução para alguns problemas similair. Mas para mim isso ainda não funciona.

A parte interessante da minha web.config looke assim:

<system.web>
  <compilation debug="true" targetFramework="4.0">
    <assemblies>
      <add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
      <add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
      <add assembly="System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    </assemblies>
  </compilation>
  <authentication mode="Forms">
    <forms loginUrl="~/Account/LogOn" timeout="2880" />
  </authentication>
  <membership>
    <providers>
      <clear />
      <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="ApplicationServices" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/" />
    </providers>
  </membership>
  <profile>
    <providers>
      <clear />
      <add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="ApplicationServices" applicationName="/" />
    </providers>
  </profile>
  <roleManager enabled="false">
    <providers>
      <clear />
      <add name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="ApplicationServices" applicationName="/" />
      <add name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" applicationName="/" />
    </providers>
  </roleManager>
  <pages>
    <namespaces>
      <add namespace="System.Web.Mvc" />
      <add namespace="System.Web.Mvc.Ajax" />
      <add namespace="System.Web.Mvc.Html" />
      <add namespace="System.Web.Routing" />
    </namespaces>
  </pages>
  <httpHandlers>
    <add verb="*" path="*.mvc" validate="false" type="System.Web.Mvc.MvcHttpHandler" />
  </httpHandlers>
  <customErrors mode="Off" />
</system.web>
<system.webServer>
  <validation validateIntegratedModeConfiguration="false" />
  <modules runAllManagedModulesForAllRequests="true" >
    <remove name="UrlRoutingModule"/>
    <add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
  </modules>
  <handlers>
    <remove name="MvcHttpHandler" />
    <add name="MvcHttpHandler" preCondition="integratedMode" verb="*" path="*.mvc" type="System.Web.Mvc.MvcHttpHandler" />
    <add name="UrlRoutingHandler" preCondition="integratedMode" verb="*" path="UrlRouting.axd" type="System.Web.HttpForbiddenHandler, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
  </handlers>
  <httpErrors errorMode="Detailed" />
</system.webServer>
Foi útil?

Solução 2

Depois de mais verificação e tentando notei em "Ativar recursos do Windows ou off" de diálogo que "erros de HTTP" e "HTTP Redirecionamento" estavam faltando. Isso é estranho, porque, tanto quanto me lembro este foi instalado automaticamente pelo instalador de plataforma Web da Microsoft. Em qualquer caso "HTTP Redirecionamento" parecia ser uma característica necessidade de se ter quando se trabalha com MVC. Então, depois que eu instalei ele tudo parecia funcionar perfeitamente.

Outras dicas

Eu apenas tive esse problema, e, infelizmente, a correção aqui não funcionou para mim.

O que fez o trabalho estava correndo isto:

%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -ir

em uma janela de comando ... funciona como um sonho agora!

(Então, é ASP.Net não instalado em IIS por padrão quando você instala o VS2010?)

Adicione esta ao seu arquivo web.config:

<system.webServer>
    <modules runAllManagedModulesForAllRequests="true" />
    <!-- rest of config -->
</system.webServer>

É uma dor de fazer isso manualmente. Mas definitivamente factível ! Eu consegui-lo e resumiu neste guia passo a passo em adicionar um projeto MVC 2 a uma solução de formulários web exisitng aqui. Espero que isso ajude ... ele me levou idades a trabalho embora todas as definições de configuração e parece haver tão poucos recursos sobre o assunto.

Por favor note que você deve executar aspnet_regiis.exe -ir como administrador, parece óbvio, mas quando você está cansado de tentar coisas sem sucesso para resolver isso, você pode passá-lo.

Apenas de dizer um grande obrigado a todos as respostas, depois de muitas horas tentando coisas diferentes, finalmente, eu poderia começar o trabalho meu aplicativo MVC 2 no IIS.

O que ajudou para mim é usando gasoduto clássico para AppPool em vez de integrado: text alt

eu estava construindo uma aplicação MVC2 no meu laptop Windows 7, usando .net beta 2 e VS 2010 beta 2. Quando instalei todo o ambiente de desenvolvimento no Windows Server 2008, incluindo VS, construído a solução e ele correu, o encaminhamento bem trabalhado.

O próximo passo foi a criação de um servidor de produção no Windows Server 2008, no qual eu implantou o beta .NET 4.0, mas nenhuma das outras coisas que veio com a versão beta de download VS 2010. Nesta configuração a não roteamento trabalhou até que eu ativar o HTTP redirecionamento como indicado por Jeroen.

Espero que isso ajude alguém que possa estar no mesmo barco.

Apenas queria nota que eu estava tendo o mesmo problema com 403 e 404s, mas acrescentando o system.webServer e todos os elementos do nó system.web/pages/namespaces resolvido para mim.

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