ID do artigo: 936993 - Última revisão: sexta-feira, 1 de junho de 2007 - Revisão: 1.2

Mensagem de erro quando você acessa uma página da Web que executa um programa de ASP.NET 2.0 habilitado 1.0 do AJAX: "Ocorreu um erro de tempo de execução"

Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.

Nesta página

Expandir tudo | Recolher tudo

Sintomas

Você receber a seguinte mensagem de erro quando você acessa uma página da Web que executa um programa do Microsoft ASP.NET 2.0 habilitado 1.0 AJAX:
Erro de tempo de execução.
Você deseja depurar?
Linha: 5
Erro: Acesso negado
Essa mensagem de erro ocorre se as seguintes condições forem verdadeiras:
  • Você usa um elemento <iframe> em uma página da Web que aponta para outra página da Web de um domínio diferente.
  • A página da Web de um domínio diferente usa controles de servidor do ASP.NET AJAX.
  • Executar uma ação no elemento <iframe> que aciona uma operação de postback assíncrona.
  • No Microsoft Internet Explorer, você clique para selecionar as caixas de seleção seguintes em Navegação na guia Avançado em Opções da Internet :
    • desativar o script de depuração (Internet Explorer)
    • desativar o script de depuração (outros)

Causa

Esse problema ocorre porque a página da Web que contém o elemento <iframe> e página da Web à qual os pontos de elemento <iframe> estão em domínios diferentes. O AJAX habilitados para 1.0 ASP.NET script falha ao tentar determinar o deslocamento do conteúdo.

Resolução

Para resolver esse problema, use um dos seguintes métodos.

Método 1

Certifique-se que a página da Web que contém o elemento <iframe> e página da Web à qual os pontos de elemento <iframe> são no mesmo domínio.

Método 2

Atualize os arquivos JavaScript para evitar a mensagem de erro. Use os arquivos script externo que consta o pacote de biblioteca AJAX em vez da arquivos baseados em recursos que existem no pacote de extensão de AJAX. Para fazer isso, siga estas etapas.

Etapa 1: Configurar a página da Web para usar os arquivos de script em vez dos arquivos de recurso

  1. Baixe e extraia a biblioteca do AJAX do Centro de download da Microsoft.

    O seguinte arquivo está disponível para download no Centro de download da Microsoft:

    Recolher esta imagemExpandir esta imagem
    Download
    Download the Microsoft AJAX Library package now. (http://ajax.asp.net/downloads/library/default.aspx?tabid=47&subtabid=471)

    Para obter mais informações sobre como baixar os arquivos de suporte da Microsoft, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
    119591  (http://support.microsoft.com/kb/119591/ ) Como obter arquivos de suporte da Microsoft de serviços on-line
    Microsoft examinou esse arquivo em busca de vírus. Microsoft utilizou o mais recente software de detecção de vírus que estava disponível na data em que o arquivo foi publicado. O arquivo é armazenado em servidores com segurança avançada que ajudam a evitar qualquer alteração não autorizada no arquivo.
  2. Na página da Web que contém o elemento <iframe>, especificar um valor para oatributo ScriptPath no elemento <scriptmanager>. O código a seguir procura os scripts em uma pasta chamada scripts no diretório raiz do aplicativo.
    <asp:ScriptManager ID="ScriptManager1" runat="server" ScriptPath="~/Scripts" />
  3. Copie a pasta System.Web.Extensions na biblioteca do AJAX para a pasta scripts.
  4. Acessa a página ASPX para confirmar que os arquivos de script são chamados da pasta scripts. Para fazer isso, clique em fonte no menu Exibir no Internet Explorer. Localize as seguintes marcas dois script.
    <script src="Scripts/System.Web.Extensions/1.0.61025.0/MicrosoftAjax.js" type="text/javascript"></script>
    <script src="Scripts/System.Web.Extensions/1.0.61025.0/MicrosoftAjaxWebForms.js" type="text/javascript"></script>
    

Etapa 2: Modificar o arquivo MicrosoftAjax.debug.js para evitar a mensagem de erro

Você deve usar o arquivo MicrosoftAjax.debug.js quando o atributo debug no elemento <compilation> é definido como True no arquivo Web.config. O arquivo MicrosoftAjax.debug.js contém quebras de linha. Para modificar o arquivo MicrosoftAjax.debug.js, siga estas etapas:
  1. Abra o arquivo MicrosoftAjax.debug.js. Esse arquivo está localizado na seguinte pasta:
    Application Root Directory/Scripts/System.Web.Extensions/1.0.61025.0
  2. Localize as duas linhas de código a seguir. (Pode haver código entre estas duas linhas.)
    switch(Sys.Browser.agent) {
        case Sys.Browser.InternetExplorer:
    

    case Sys.Browser.Safari:
    
  3. Cole o seguinte código entre as duas linhas de código que estão listados na etapa 2b. Se existir código entre as duas linhas, substitua o código.

    novo código
     Sys.UI.DomElement.getLocation = function(element) {
                if (element.self || element.nodeType === 9) return new Sys.UI.Point(0,0);
    
                var clientRect = element.getBoundingClientRect();
                if (!clientRect) {
                    return new Sys.UI.Point(0,0);
                }
    
                var ownerDocument = element.document.documentElement;
    
                var offsetX = clientRect.left - 2 + ownerDocument.scrollLeft,
                    offsetY = clientRect.top - 2 + ownerDocument.scrollTop;
                
                try {
                    var f = element.ownerDocument.parentWindow.frameElement || null;
                    if (f) {
                        var offset = 2 - (f.frameBorder || 1) * 2;
                        offsetX += offset;
                        offsetY += offset;
                    }
                }
                catch(ex) {
                }    
                
                return new Sys.UI.Point(offsetX, offsetY);
            }
            break;
    
  4. Salve o arquivo MicrosoftAjax.debug.js.
  5. Abra o arquivo Web.config no programa de ASP.NET e defina o atributo debug como True no elemento <compilation>.
  6. Salve a página da Web.

Etapa 3: Modificar o arquivo MicrosoftAjax.js para evitar a mensagem de erro

O arquivo MicrosoftAjax.js é a versão do arquivo MicrosoftAjax.debug.js. O MicrosoftAjax.js não contém quebras de linha. Para modificar o arquivo MicrosoftAjax.js, execute as seguintes etapas:
  1. Abra o arquivo MicrosoftAjax.js na pasta scripts.
  2. Localize as duas linhas de código a seguir. (Pode haver código entre estas duas linhas.)
    switch(Sys.Browser.agent){case Sys.Browser.InternetExplorer:
    

    case Sys.Browser.Safari:
  3. Cole o seguinte código entre as duas linhas de código que estão listados na etapa 3b. Se existir código entre as duas linhas, substitua o código.

    novo código
    Sys.UI.DomElement.getLocation=function(a){if(a.self||a.nodeType===9) return new Sys.UI.Point(0,0);
    var b=a.getBoundingClientRect();
    if(!b) return new Sys.UI.Point(0,0);
    var c=a.document.documentElement,d=b.left-2+c.scrollLeft,e=b.top-2+c.scrollTop;
    try{var g=a.ownerDocument.parentWindow.frameElement||null;
    if(g){var f=2-(g.frameBorder||1)*2;
    d+=f;e+=f}}catch(h){}return new Sys.UI.Point(d,e)};
    break;
  4. Salve o arquivo MicrosoftAjax.js.
  5. Abra o arquivo Web.config no programa de ASP.NET e defina o atributo debug como True no elemento <compilation>.
  6. Salve a página da Web.

Situação

Esse comportamento é por design.

Mais Informações

Para obter mais informações sobre o elemento <iframe>, visite o seguinte site da Web Microsoft Developer Network (MSDN):
http://msdn2.microsoft.com/en-us/library/ms535258.aspx (http://msdn2.microsoft.com/en-us/library/ms535258.aspx)
Para obter mais informações sobre o ASP.NET AJAX, visite o seguinte site:
http://ajax.asp.net/about/default.aspx?tabid=47 (http://ajax.asp.net/about/default.aspx?tabid=47)

A informação contida neste artigo aplica-se a:
  • Microsoft ASP.NET 2.0
Palavras-chave: 
kbmt kberrmsg kbwebbrowser kbfix kbasp kbtshoot kbprb KB936993 KbMtpt
Tradução automáticaTradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 936993  (http://support.microsoft.com/kb/936993/en-us/ )
Retired KB ArticleAviso de Isenção de Responsabilidade sobre Conteúdo do KB Aposentado
Este artigo trata de produtos para os quais a Microsoft não mais oferece suporte. Por esta razão, este artigo é oferecido "como está" e não será mais atualizado.