Nenhum controlador de API da Web na instância do Amazon EC2

2

Eu tenho um aplicativo da Web em execução no IIS 7 no Windows Server 2008 R2 (edição Datacenter) e criado usando o Visual Studio 2010. Quando implantei o projeto do site em meu servidor IIS local ou no servidor IIS de produção hospedado em um VPS de serviço de hospedagem , o API Controller pode ser acessado via /api/notifications/ , que é feito por meio de uma chamada AJAX de uma página da web. O problema é que, em uma configuração idêntica na instância do Amazon EC2, nenhum dos API Controllers funciona, todos resultam em uma resposta 404 não encontrada. Verifiquei se a mesma versão do .NET framework está instalada em todos os lugares, se o IIS está executando os mesmos mapeamentos de manipulador, módulos, filtros ISAPI, filtragem de solicitações e configurações ASP são todos idênticos. Executou o rastreamento de solicitação com falha na instância do EC2 e não obteve erros relacionados ao asp. Tudo está atualizado. Eu tentei adicionar:

<modules runAllManagedModulesForAllRequests="true" />

e também tentei adicionar:

<handlers>
    <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
     <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" 
         type="System.Web.Handlers.TransferRequestHandler" resourceType="Unspecified" 
         requireAccess="Script" preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>

Para os locais apropriados no arquivo web.config e ainda sem controladores de API. Normalmente, o site é implantado na pasta "wwwroot" e todo o resto funciona, então eu também tentei implantar em um diretório virtual criando um aplicativo e acessar /Test/api/notifications/ ainda resulta em um 404 (enquanto eu posso acessar o resto do site em /Test/ ).

Eu tentei registrar novamente a estrutura por meio deste post: link

Verifiquei se "Permitir extensões de nome de arquivo não listado" estava marcada na configuração do IIS.

Alguma idéia de por que isso não está funcionando na instância do EC2?

    
por Jon Lin 03.01.2014 / 06:31

1 resposta

1

O problema é que o .NET Framework 4.5 foi instalado em todas as máquinas dev, mas não no servidor do Amazon EC2 Windows Server 2008 R2. Instalar o .NET 4.5 aparentemente também atualizou antigos assemblies 4.0 (em particular, eu suspeito que System.Net.Http e System.Web.Http) e porque o webapp foi criado contra as versões 4.5 desses assemblies 4.0 o controlador de API da Web não seria inicializar quando implantado no servidor EC2.

Solução: certifique-se de que os assemblies de estrutura sejam os mesmos no servidor EC2 e nas máquinas dev:

  1. Instale o .NET 4.5 no servidor do EC2
  2. Desinstale o .NET 4.5 nas máquinas de desenvolvimento.

Além disso, muitas informações úteis estão disponíveis em este tópico do MSDN

    
por 31.01.2014 / 21:08