IInternetSecurityManager personalizado não está sendo chamado com caixas de diálogo

Olá e obrigado por olhar.

Descrição do Problema:

Eu implementei um aplicativo c # WinForm com o controle do navegador incorporado e o IInternetSecurityManager para executar as tarefas necessárias para permitir o acesso entre domínios em iframes com nossas páginas da Web localmente instaladas.

Tudo está funcionando conforme o esperado com IInternetSecurityManager, IOleClientSite, IDocHostShowUI e IDocHostUIHandler. Em outras palavras, estamos sendo chamados pelo controle do navegador para todas as nossas implementações.

O problema é quando a página da Web carregada no controle do navegador possui um script que chama window.showModalDialog (): a instância de controle do navegador que está sendo usada não se comunica mais com o site do cliente. Absolutamente nenhuma chamada QueryInterface ou qualquer outro método é chamado em qualquer uma das interfaces mencionadas acima.

O documento na caixa de diálogo não está usando nossa implementação do gerenciador de segurança, suponho que o controle do navegador da Web na caixa de diálogo exibida pelo IE não seja o mesmo em que chamamos SetClientSite ().

Pergunta, questão:

Como falamos com esse novo controle de navegador? Precisamos dar ao navegador o controle na caixa de diálogo mostrada pelo IE, nossa implementação IInternetSecurityManager. Mas nunca temos a oportunidade de contar sobre o site do cliente para fazer a ligação, por assim dizer. Em outras palavras, não há comunicação do IE que nos diga por meio de uma interface que diz: "Sou um novo controle de navegador criado pelo IE e aqui está minha interface IUnknown. Essa é sua chance de configurar meu site de cliente etc." Ficaríamos dourados se houvesse uma notificação desse tipo vinda do IE.

O resultado é que dois contextos de segurança diferentes estão sendo usados e nosso aplicativo falha sempre que estamos em um diálogo usando um iframe, porque nossa implementação IInternetSecurityManager não está em uso.

Exemplo de código-fonte:

Afastei o código-fonte para proteger os inocentes :) e reduzi-me a algo com o qual acho que você pode trabalhar em sua própria solução do Visual Studio 2010.

Leia o arquivo ReadMe.txt para obter informações sobre o problema, etapas de reprodução, etc.

As páginas da web de teste que escrevi exibem informações e etapas para orientá-lo no uso da amostra.

Informe-me se você tiver dúvidas sobre o que estou tentando realizar ou se a amostra não estiver clara o suficiente.

Por favor informar. Obrigado.

http://home.comcast.net/~lowrider2112/bin/TestIEHost.rar

questionAnswers(2)

yourAnswerToTheQuestion