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.