Tentando executar o IIS no VM e no Visual Studio em execução nativa, com arquivos no sistema de arquivos nativo

1

aqui está a configuração que estou tentando fazer.

  1. Windows 7, com arquivos para um "aplicativo da Web ASP.NET" (um novo criado pelo assistente para este teste) instalado em c: \ tfsprojects \ test \ test este projeto abre e constrói no Visual Studio 2010 muito bem.

  2. Windows Server 2003, executado dentro do VMWare Workstation 8.

  3. O VMWare tem um mapeamento para que o sistema de arquivos nativo c: \ tfsprojects aparece como \ vmware-host \ Pastas compartilhadas \ tfsprojects dentro da VM

  4. IIS dentro da VM, configurado para executar um site padrão em 80 de \ vmware-host \ Pastas compartilhadas \ tfsprojects \ test

O problema é que quando eu acesso o link (dentro da VM) recebo o seguinte erro:

[HttpException (0x80070001): Failed to start monitoring changes to '\vmware-host\Shared Folders\tfsprojects\test\'.]
   System.Web.DirMonCompletion..ctor(DirectoryMonitor dirMon, String dir, Boolean watchSubtree, UInt32 notifyFilter) +139
   System.Web.DirectoryMonitor.StartMonitoring() +42
   System.Web.DirectoryMonitor.StartMonitoringFile(String file, FileChangeEventHandler <snip>

[HttpException (0x80004005): ASP.NET Initialization Error] System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +982 System.Web.HttpRuntime.ProcessRequestInternal(HttpWorkerRequest wr) +128

-

Configurei o diretório c: \ tfsprojects para ter permissões completas para 'todos', além de adicionar explicitamente permissões para um usuário anônimo de domínio (e configurar o IIS para usar esse nome de usuário para permissões anônimas na guia de segurança de diretório).

-

Alguma ideia? Este me deixou completamente perplexo. Por várias razões, não consigo fazer isso de outra maneira. Muito agradecido por qualquer ajuda.

    
por utunga 01.05.2012 / 03:37

2 respostas

1

Parece que o que esta configuração usa (SMB? Não é um usuário WS8 ...) para mapear a unidade no VMware está implementando algumas APIs do sistema de arquivos muito incompletamente para que o IIS possa trabalhar com ela. Sugiro que você mantenha o sistema de arquivos ao vivo na VM e SMB montá-lo no host.

    
por 06.05.2012 / 16:30
1

Um truque pode ser desativar os recursos de monitoramento de arquivos do servidor da web de desenvolvimento. Normalmente, o ASP.NET monitora alterações e reinicia o pool de aplicativos se algo mudar. Existe uma configuração de registro para desabilitar isso. Isso pode resultar em um erro mais descritivo no processo de inicialização.

Você pode definir a chave do Registro FCNMode como 1 para desativar o monitoramento:

link

HKLM \ Software \ Microsoft \ ASP.NET \ FCNMode

ou aqui se estiver executando um pool de aplicativos de 32 bits no Windows de 64 bits:

HKLM \ SOFTWARE \ Wow6432Node \ Microsoft \ ASP.NET \ FCNMode

Você pode querer executar o Process Monitor do SysInternal para determinar quais arquivos / pastas estão sendo acessados que estão resultando no erro. Por exemplo, pode estar tentando acessar os arquivos ASP.NET C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \, e sua identidade de aplicativo precisaria de permissões para essa pasta.

Se não forem permissões do sistema de arquivos, pode ser devido aos recursos de segurança de acesso ao código (CAS) do .NET. Provavelmente não sabe o que fazer com os recursos mapeados do VMWare. Você pode tentar inserir uma exceção para os locais. Se isso não funcionar, talvez você queira tentar usar uma unidade mapeada SMB para o endereço de rede do host em vez de usar a rede VMWare.

CD /D C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727  
caspol.exe -m -ag 1 -url "file://\vmware-host\*" FullTrust -exclusive on
caspol.exe -m -ag 1 -url "file://L:/TFSProjects" FullTrust -exclusive on
caspol.exe -m -ag 1 -url "http://localhost/*" FullTrust -exclusive on  

CD /D C:\WINDOWS\Microsoft.NET\Framework64\v2.0.50727 
caspol.exe -m -ag 1 -url "file://\vmware-host\*" FullTrust -exclusive on 
caspol.exe -m -ag 1 -url "file://L:/TFSProjects" FullTrust -exclusive on
caspol.exe -m -ag 1 -url "http://localhost/*" FullTrust -exclusive on  

CD /D C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319   
caspol.exe -m -ag 1 -url "file://\vmware-host\*" FullTrust -exclusive on
caspol.exe -m -ag 1 -url "file://L:/TFSProjects" FullTrust -exclusive on
caspol.exe -m -ag 1 -url "http://localhost/*" FullTrust -exclusive on  

CD /D C:\WINDOWS\Microsoft.NET\Framework64\v4.0.30319   
caspol.exe -m -ag 1 -url "file://\vmware-host\*" FullTrust -exclusive on
caspol.exe -m -ag 1 -url "file://L:/TFSProjects" FullTrust -exclusive on
caspol.exe -m -ag 1 -url "http://localhost/*" FullTrust -exclusive on  


REM display the exceptions
caspol -lf 
    
por 06.05.2012 / 18:58