Problemas ao mover um site do IIS de w2k para w2k3

3

O servidor antigo é o Windows 2000 e a resposta do responsável pela configuração original para quase tudo era C: \ - > Todos - > Controlo total. No entanto, havia um documento de configuração, que parecia funcionar até certo ponto.

  • Criado um usuário com admin local
  • Aplicativos COM + criados referenciando esse usuário e algumas DLLs fornecidas com o site
  • Versões 1.0, 1.1, 2.0 instaladas do .net (tentei executar em cada versão, sem alteração no erro)

Server object error 'ASP 0178 : 80070005' Server.CreateObject Access Error /Include/fnLookups.asp, line 10 The call to Server.CreateObject failed while checking permissions. Access is denied to this object.

A linha 10 parece ser:

set objClient = Server.CreateObject("fooUser.CfooUser")

Eu troco para o log do sistema e tenho:

The application-specific permission settings do not grant Local Activation permission for the COM Server application with CLSID {280D5CF7-80A4-40AC-844C-FE3653F02FF1} to the user mydomain\myusername SID (mySID). This security permission can be modified using the Component Services administrative tool.

Isso é um progresso, está pegando o aplicativo COM e meu ID. Eu adicionei-me às "Permissões de Acesso" e "Ativar & Ativar Permissões" do objeto Meu Computador em dcomdnfg - mas meu latido parece estar direcionado para a árvore errada.

Corri o mskb198432 da melhor forma que pude, embora pareça direcionado a uma versão anterior, mas não há alegria também.

Todas as ideias são bem-vindas.

Editar - lista de sugestões testadas

  • Exclui a diferença x64, sendo executada em x32 com o mesmo problema.
  • permissões de arquivo descartadas
  • "conceda permissões de ativação e lançamento local a todos para ter certeza de que é um problema de permissões de COM" - pronto, sem alegria
  • Modo de isolamento do IIS5 ativado

Edit - Há algo que eu possa investigar no antigo servidor do windows 2k que possa dar uma ideia?

    
por Kara Marfia 14.05.2009 / 20:29

14 respostas

5

Já tentou adicionar o usuário relevante ao grupo de usuários do DCOM local?

link

    
por 20.05.2009 / 17:40
4

Este erro é a pista:

As configurações de permissão específicas do aplicativo não concedem permissão de Ativação Local para o aplicativo COM Server com o CLSID {280D5CF7-80A4-40AC-844C-FE3653F02FF1} para o usuário mydomain \ myusername SID (mySID).

O objeto COM não deve estar sendo executado como você, ele deve estar em execução como o usuário IUSR_MachineName ou Network Service, o usuário que está executando o IIS. Você não quer que todo usuário que acessa o site esteja executando a DLL como eles - idéia ruim.

Certifique-se de que a permissão do diretório físico para o qual seu diretório virtual aponta para o usuário que está executando o IIS (IUSR_machinename) tenha as permissões corretas e a DLL registrada em COM tenha as permissões corretas para o usuário do IIS.

As permissões são difíceis de depurar no IIS, pois os eventos de segurança nem sempre são registrados no log de eventos de segurança. A autenticação & A ferramenta Access Control Diagnostics 1.0 é uma ótima ferramenta para investigar problemas de permissões.

link

    
por 21.05.2009 / 18:48
2

Para ser completo, existe uma diferença entre a execução de um site como ASP.Net 1.0 e ASP.Net 2.0. Embora o framework seja compatível com versões anteriores, sugiro tentar executar o site como um site do Framework 1.1. Isso pode exigir o carregamento do Framework 1.1.

No entanto, o exemplo de código sugere que este é um ASP clássico. Portanto, o problema está relacionado à segurança no objeto COM. Certifique-se de que a DLL foi registrada e também existe a possibilidade de que o objeto para o qual você concedeu permissão dependa de outra DLL à qual você não concedeu acesso.

Além disso, reinicie o IIS e também o próprio Componente no servidor de componentes ao alterar a segurança ou quaisquer alterações para esse assunto. Ele geralmente precisa ser iniciado, devido ao cache de memória e outras razões estendidas.

    
por 14.05.2009 / 23:23
2

De acordo com o blog da Tecnologia da Web da Microsoft, esse bug é causado pela segurança aprimorada do DCOM que foi introduzida no SP1 ou SP2 para Windows 2003.

Este blog tem um resumo detalhado deste problema e como resolvê-lo.

link

    
por 26.05.2009 / 08:07
1

Como alguns usuários reclamaram, você não sabe se isso é asp clássico ou asp.net. Dito isto, indo com sua linha de assunto e mensagem de erro, aqui está meus 2 centavos

Esta é uma aplicação .NET

  1. Make usre O ASP.NET está instalado corretamente.
  2. Verifique se o site está configurado para o ASP.NET 2.0 no IIS.

Parece que seu aplicativo está acessando um objeto COM, portanto, certifique-se de que o processo de trabalho do IIS tenha acesso a esse componente. Você pode tentar executar FILEMON e REGMON para descobrir exatamente qual componente é o culpado. Se o componente estiver na pasta Arquivos de programas / pasta comum, verifique se as permissões corretas estão definidas nessa pasta.

Acessar componentes COM no ASP.NET ou até mesmo no Classis ASP geralmente é um B .... para solucionar problemas.

    
por 14.05.2009 / 22:45
1

Este é um aplicativo ASP clássico, não um aplicativo ASP.NET. Verifique se o pool de aplicativos do IIS que hospeda esse aplicativo está sendo executado no contexto do usuário que você criou. Além disso, certifique-se de que o aplicativo não esteja em nenhum outro pool de aplicativos que hospede aplicativos ASP.NET.

    
por 14.05.2009 / 23:32
1

Como outros já disseram, este é um problema clássico de ASP e COM - parece não ter nada a ver com o .NET.

Tudo o que posso adicionar ao que foi dito é não se esqueça de garantir que o usuário tenha acesso ao objeto COM DLL no sistema de arquivos.

    
por 20.05.2009 / 18:29
1

I added myself to the "Access Permissions" and "Launch & Activation Permissions" of the My Computer object in dcomcnfg

Existem duas configurações de segurança diferentes em Meu computador - limites e padrões. Você precisa verificar que editou os Padrões e que os Limites são pelo menos superiores aos seus Padrões (embora, IIRC, Todos possam ter Ativação Local).

Você também deve detalhar o próprio componente e verificar se está usando a segurança Padrão. Se for personalizado, você também precisará editá-lo (mantendo os limites em mente).

Para a solução de problemas, ficaria extremamente tentado a conceder permissões de ativação e inicialização local a todos para ter certeza de que é um problema de permissões COM. IIRC, os erros na inicialização do componente podem conter mensagens de erro enganosas que o manterão coçando a cabeça por algum tempo.

Editar: você também deve certificar-se de que o GUID mencionado no log de eventos seja realmente o componente que você acha que é. Use o Regedit para encontrar o GUID e verifique o AppName. É possível que não seja o componente instalado, mas uma dependência.

    
por 20.05.2009 / 18:14
1

Tente dar "Serviço de Rede" um acesso ao diretório "Temp" (C: \ WINDOWS \ Temp)

Espero que isso ajude; -)

    
por 21.05.2009 / 20:11
1

Você está executando o pool de aplicativos como sua conta (mydomain \ myusername)? Em caso afirmativo, você precisará adicionar essa conta ao IIS_WPG.

Você também pode querer adicionar IIS_WPG ao grupo "Usuários COM Distribuídos" ou localizar o item real nos Serviços de Componentes e conceder diretamente acesso ao IIS_WPG

    
por 22.05.2009 / 17:37
1

O processo de trabalho ASP.Net w3wp.exe por padrão é executado na conta NETWORK SERVICE no W2K3.

Verifique se esta conta tem o direito de acessar e instanciar o objeto em questão.

    
por 22.05.2009 / 23:20
1

Eu estava lidando com isso na semana passada. Você precisa garantir que o usuário ASPNET (sim, eu sei que é asp clássico) tem direitos para "Fazer logon como um trabalho em lotes" e "Fazer logon como um serviço".

Em Ferramentas de administração, Política de segurança local, abra Políticas locais - > Atribuição de direitos de usuário e certifique-se de que o usuário do aspnet tenha direitos sobre essas políticas.

Provavelmente não faria mal adicionar IWAM_ e IUSR_ também.

    
por 26.05.2009 / 20:26
0

Você pode querer passar pelo KB 899965 , ele tem algumas etapas bastante detalhadas e parece que pode ser um pouco mais específico para o seu problema.

Espero que ajude!

    
por 14.05.2009 / 22:23
0

Além das outras sugestões, eu também tentaria executar o site no modo de isolamento do IIS 5 para descartar as diferenças entre o IIS 5 (Server 2000) e o IIS 6 (Server 2003) mais seguro.

  1. Abra a ferramenta de administração do IIS
  2. Clique com o botão direito do mouse em 'Sites da Web' e selecione 'Propriedades' no menu de contexto.
  3. Selecione a guia "Sevice"
  4. Verifique 'Executar serviço WWW no modo de isolamento do IIS 5.0'
  5. Reinicie o IIS
por 20.05.2009 / 19:09