Share via


Control de errores y excepciones del servicio

En este artículo se describen detalles sobre el control de errores y la solución de problemas de la aplicación.

Sugerencia

Al crear un mensaje de solicitud SOAP, asegúrese de que los elementos están en el mismo orden que se define en el lenguaje de descripción de servicios web (WSDL). Si los elementos necesarios están fuera de orden, se producirá un error en la llamada. Si los elementos opcionales están fuera de orden, se puede producir un error en la llamada o se omitirán los elementos. Para obtener más información, vea Soap XML Element Order.

Errores comunes de API

Estas son algunas sugerencias para controlar los errores comunes de servicio que puede encontrar. Para obtener una lista completa de los códigos de error de la API de Bing Ads, consulte Códigos de error de operación.

Código 105

Normalmente indica el uso de un token de acceso incorrecto (elemento de encabezado AuthenticationToken) o un token de desarrollador para el entorno de destino. Por ejemplo, las credenciales pueden ser válidas en producción; sin embargo, al dirigirse al espacio aislado observaría el código 105.

Código 106

Normalmente indica que, aunque las credenciales son correctas para el entorno de destino, el usuario no tiene acceso a una de las entidades especificadas en la solicitud. Por ejemplo, observaría este error llamando a SubmitGenerateReportRequest si el usuario no tiene permisos para la cuenta especificada.

Código 117

Si supera el límite de llamadas de servicio, verá el siguiente error:

  • Código de error numérico: 117
  • Código de error simbólico: CallRateExceeded
  • Mensaje: Ha superado el número de llamadas que puede realizar en un minuto. Reduzca el número de llamadas que realiza por minuto.

Cuando observe este error, puede volver a enviar la solicitud bajo el límite después de esperar 60 segundos.

Error interno

En ocasiones, el servicio podría devolver un error interno como se indica a continuación:

<OperationError>
  <Code>0</Code>
  <Details i:nil="true"/>
  <ErrorCode>InternalError</ErrorCode>
  <Message>An internal error has occurred.</Message>
</OperationError>

Estos son algunos posibles escenarios de error internos:

  • Se trata de un problema temporal del sistema y no hay nada accionable que pueda hacer. Si la misma llamada ha funcionado antes, inténtelo de nuevo más tarde en caso de que hayamos resuelto el problema en el lado servidor.
  • La operación no se asignó correctamente a un código de error accionable. Idealmente, si hay algo que los clientes puedan hacer para resolver el problema, la API de Bing Ads debe devolver un código de error accionable. Si observa de forma coherente el error interno, póngase en contacto con el soporte técnico con detalles.

HTTP 500

Todas las operaciones del servicio api de Bing Ads se ajustan a la especificación simple del protocolo de acceso a objetos (SOAP) 1.1, por la que los errores se devuelven con un código HTTP 500. Por ejemplo, consulte lo siguiente.

HTTP/1.1 500 Internal Server Error

Esto no es en y por sí mismo representativo de un código accionable, y debe inspeccionar los detalles del error para obtener más información sobre el error específico.

No se puede crear una clase abstracta

No se puede crear una instancia de una clase base como Ad. Debe crear una instancia de una de las clases derivadas, por ejemplo, ExpandedTextAd.

¿Por qué recibo una dirección URL vacía de la llamada a reporting API?

Incluso cuando el estado del informe se establece en Correcto, el elemento ReportDownloadUrl puede ser nulo si no hay datos disponibles para los parámetros de informe enviados. Si ve datos de rendimiento en la aplicación web de Microsoft Advertising para el mismo intervalo de fechas y criterios de filtro, póngase en contacto con el soporte técnico con detalles.

Errores comunes de OAuth

Estas son algunas sugerencias para controlar los errores comunes de autorización que puede encontrar.

Errores de AADSTS

Los códigos de error y los mensajes de AADSTS están sujetos a cambios. Para obtener la información más reciente, eche un vistazo a la https://login.microsoftonline.com/error página para encontrar descripciones de errores de AADSTS, correcciones y algunas soluciones alternativas sugeridas.

Busque en la parte numérica del código de error devuelto. Por ejemplo, si ha recibido el código de error "AADSTS650052", realice una búsqueda en https://login.microsoftonline.com/error "650052". También puede vincular directamente a un error específico agregando el número de código de error a la dirección URL: https://login.microsoftonline.com/error?code=650052.

A continuación se describen con más detalle algunos de los errores de AADSTS más comunes, por ejemplo, AADSTS50011, AADSTS650052 y AADSTS700016.

AADSTS50011

El error de AADSTS50011 podría devolverse dentro de una cadena JSON al solicitar tokens de acceso con el punto de conexión de Plataforma de identidad de Microsoft como se indica a continuación.

{"error":"invalid_client","error_description":"AADSTS50011: The reply url specified in the request
does not match the reply urls configured for the application: 'foo'.\r\nTrace ID:
x\r\nCorrelation ID: x\r\nTimestamp: 2019-05-10
17:18:23Z","error_codes":[50011],"timestamp":"2019-05-10
17:18:23Z","trace_id":"x","correlation_id":"x"}

También se podría devolver un error de URI de redireccionamiento no válido como texto en la ventana del explorador cuando se solicita el consentimiento del usuario como se indica a continuación.

invalid_request: el valor proporcionado para el parámetro de entrada "redirect_uri" no es válido. El valor esperado es un URI que coincide con un URI de redireccionamiento registrado para esta aplicación cliente.

Si observa este error, el URI de redireccionamiento no está registrado correctamente o la aplicación no usa el URI de redireccionamiento registrado.

AADSTS650052

El código de error 650052 se puede devolver con el mensaje "La aplicación necesita acceso a un servicio ("https://ads.microsoft.com") que su organización "{organization}" no se ha suscrito o habilitado".

Si observa este error, asegúrese de que tiene al menos uno de los usuarios administradores del inquilino de Azure AAD agregado y habilitado para cuentas profesionales en la aplicación web de Microsoft Advertising. Póngase en contacto con el soporte técnico para obtener más ayuda.

AADSTS700016

El código de error 700016 se puede devolver con el mensaje "No se encontró la aplicación con el identificador '{appIdentifier}' en el directorio '{tenantName}'".

Si tiene un identificador de aplicación anterior (también conocido como id. de cliente) con formato hexadecimal, por ejemplo, 0000000012345A67, debe registrar una nueva aplicación. Los identificadores de aplicación válidos para su uso con el Plataforma de identidad de Microsoft tienen el formato de GUID con guiones, por ejemplo, ab01c23d-4e56-7f8a-90bc-1d23efabc45d. Si no ve una aplicación existente en el Azure Portal Registros de aplicaciones, es otra indicación de que debe reemplazarla por una nueva aplicación.

URI de redireccionamiento no válido

Se podría devolver un error de URI de redireccionamiento no válido dentro de una cadena JSON al solicitar tokens de acceso con el punto de conexión de Live Connect como se indica a continuación.

{"error":"invalid_grant","error_description":"The provided value for the 'redirect_uri' is not
valid. The value must exactly match the redirect URI used to obtain the authorization code."}

También se podría devolver un error de URI de redireccionamiento no válido como texto en la ventana del explorador cuando se solicita el consentimiento del usuario como se indica a continuación.

invalid_request: el valor proporcionado para el parámetro de entrada "redirect_uri" no es válido. El valor esperado es un URI que coincide con un URI de redireccionamiento registrado para esta aplicación cliente.

Si observa este error, el URI de redireccionamiento no está registrado correctamente o la aplicación no usa el URI de redireccionamiento registrado.

Concesión no válida

Se podría devolver un error invalid_grant si intenta actualizar el token mediante un ámbito al que el usuario no da su consentimiento.

{
    "error":"invalid_grant",
    "error_description":"AADSTS70000: The request was denied because one or more scopes requested are unauthorized or expired. The user must first sign in and grant the client application access to the requested scope."
}

También se podría devolver un error invalid_grant si el URI de redireccionamiento no es válido, el token de actualización expiró, el usuario cambió su contraseña o, de lo contrario, se revocó el token.

{"error":"invalid_grant","error_description":"The user could not be authenticated or the grant is expired. The user must first sign in and if needed grant the client application access to the requested scope."}

En cualquier momento sin previo aviso, Microsoft puede determinar que se debe conceder de nuevo el consentimiento del usuario; sin embargo, algunos escenarios están dentro del control. Los clientes que ejecutan aplicaciones en servicios que abarcan regiones y dispositivos como Microsoft Azure deben registrar una aplicación web con el secreto de cliente. Puede obtener un token de actualización en un dispositivo y actualizarlo en otro siempre que tenga el mismo identificador de cliente y secreto de cliente. Si registra una aplicación pública sin un secreto de cliente, no puede usar un token de actualización entre dispositivos. Un token confidencial está enlazado al secreto de cliente. Si hubiera usado un identificador de aplicación cliente público sin secreto de cliente para obtener un token de actualización en EE. UU. y, después, intentara actualizar el token en la región de la UE, observaría el invalid_grant error.

Aplicación no encontrada o cliente no autorizado

Si observa un error como "unauthorized_client: El cliente no existe" o "No se encontró la aplicación con el identificador 'foo' en el directorio 'bar'", asegúrese de que la aplicación sigue existiendo para el entorno de destino correcto, es decir, producción o espacio aislado.

Si llama al punto de conexión de Plataforma de identidad de Microsoft mediante un identificador de aplicación SDK de Live con el formato hexadecimal corto, por ejemplo, 000000012345A67, se podría devolver un error de aplicación no encontrado. En ese caso, debe registrar una nueva aplicación. Los identificadores de aplicación de Plataforma de identidad de Microsoft válidos tienen el formato de GUID con guiones, por ejemplo, ab01c23d-4e56-7f8a-90bc-1d23efabc45d. 

Si registró la aplicación en el Azure Portal, en la sección Tipos de cuenta admitidos, asegúrese de seleccionar Cuentas en cualquier directorio organizativo y cuentas personales de Microsoft. (Consulte Registro de una aplicación) Si no ha elegido esta opción durante la configuración inicial, es posible que el Azure Portal requiera que registre una nueva aplicación.

Aplicación no configurada como aplicación multiinquilino

Puede observar el siguiente error si la aplicación registrada está limitada a un inquilino específico.

Application 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxxx' is not configured as a multi-tenant application. Usage of the /common endpoint is not supported for such applications created after '10/15/2018'. Use a tenant-specific endpoint or configure the application to be multi-tenant.

Si registró la aplicación en el Azure Portal, en la sección Tipos de cuenta admitidos, asegúrese de seleccionar Cuentas en cualquier directorio organizativo y cuentas personales de Microsoft. (Consulte Registro de una aplicación) Si no ha elegido esta opción durante la configuración inicial, es posible que el Azure Portal requiera que registre una nueva aplicación.

Contacte al soporte técnico

El foro microsoft Q&A está disponible para que la comunidad de desarrolladores formule y responda preguntas sobre las API de Bing Ads y los scripts de Microsoft Advertising. Microsoft supervisa los foros y las respuestas a las preguntas que la comunidad aún no ha respondido.

Importante

Para asegurarse de que vemos su pregunta, etiquete esta opción con "advertising-api".

Si la investigación implica información confidencial de la cuenta o los datos personales, o si no encuentra la información que necesita para resolver el problema a través de Microsoft Q&A, póngase en contacto con el Soporte técnico de Microsoft Advertising.

Sugerencia

Para acelerar la investigación, proporcione soporte técnico con detalles como el entorno de desarrollo, la frecuencia de error y los pasos para reproducir el error.

Para obtener ayuda con las llamadas a los servicios de api de Bing Ads, consulte esta lista de comprobación y proporcione los resultados al equipo de soporte técnico.

  • ¿Quién es el usuario que intenta llamar al servicio, por ejemplo, cuál es la dirección de correo electrónico de inicio de sesión?
  • ¿Cuál es el identificador de cuenta o el número de cuenta al que intenta acceder el usuario?
  • ¿Cuáles son los pasos necesarios para reproducir el error? Incluya la solicitud completa, la respuesta y la marca de tiempo, excepto las credenciales privadas, por ejemplo, el token de acceso.
  • ¿Tiene como destino el entorno de producción o espacio aislado? Asegúrese de que usa los puntos de conexión de autorización y registro de aplicaciones correctos para producción frente a espacio aislado. Del mismo modo, asegúrese de usar las direcciones de servicio web correctas para el mismo entorno.
  • Indique si la misma solicitud ha funcionado para usted en el pasado, es decir, el rendimiento histórico.
  • Indique si ahora puede reproducir el problema cada vez o de forma intermitente.
  • Para los problemas relacionados con el servicio de generación de informes o masivos, incluya el seguimiento de las operaciones de sondeo de solicitud y estado.
  • Para un problema de autenticación relacionado con el código de error 105 o 106, incluya también el identificador del sistema para las credenciales de inicio de sesión del usuario de Microsoft Advertising. Para obtener el identificador de usuario del usuario actual, consulte la Guía de inicio rápido .

Para obtener ayuda para obtener tokens de acceso y actualización para la autenticación con OAuth, consulte esta lista de comprobación y proporcione los resultados al equipo de soporte técnico.

  • ¿Quién es el usuario que intenta autenticarse, por ejemplo, cuál es la dirección de correo electrónico de inicio de sesión?
  • ¿Cuál es el identificador de cuenta o el número de cuenta al que intenta acceder el usuario?
  • ¿Cuáles son los pasos necesarios para reproducir el error? Incluya la solicitud completa, la respuesta y la marca de tiempo, excepto las credenciales privadas, por ejemplo, el token de acceso y el secreto de cliente.
  • ¿Tiene como destino el entorno de producción o espacio aislado? Asegúrese de que usa los puntos de conexión de autorización y registro de aplicaciones correctos para producción frente a espacio aislado. Del mismo modo, asegúrese de usar las direcciones de servicio web correctas para el mismo entorno.
  • ¿Ha registrado una aplicación nativa o web? Los clientes que ejecutan aplicaciones en servicios que abarcan regiones y dispositivos como Microsoft Azure deben registrar una aplicación web con el secreto de cliente.
  • ¿Cuál es el identificador de aplicación registrado (client_id)? Si también tiene un secreto de aplicación (client_secret), confirme que lo está estableciendo cuando solicite tokens de acceso desde el punto de conexión de autorización, pero no lo comparta con nadie.
  • Ejecute una comprobación de estado de diagnóstico de OAuth. ¿Puede obtener correctamente un token de acceso y completar la guía de inicio rápido para producción o espacio aislado? Si no es así, ¿dónde se produce un error de autenticación y cuál es el error?

Información general sobre el modelo de error

Cuando se produce un error en una operación de servicio de API de Bing Ads, devolverá un error de servicio, por ejemplo, el servicio customer management puede devolver ApiFault. Las excepciones de error incluyen uno o varios objetos de error. Los objetos de error contienen los detalles de por qué se produjo un error en la operación de servicio y un código que identifica de forma única el error. Para obtener una lista de códigos de error, consulte Códigos de error de la operación de api de Bing Ads.

Los objetos de datos y errores disponibles varían según el servicio. En esta tabla se describe el modelo de error y los vínculos a los objetos de datos de error de cada servicio.

Servicio Descripción
Información de anuncios Todas las operaciones de información de anuncios pueden producir AdApiFaultDetail y ApiFaultDetail.
Masivo Todas las operaciones masivas pueden producir AdApiFaultDetail y ApiFaultDetail.
Administración de campañas Todas las operaciones de administración de campañas pueden producir AdApiFaultDetail.

Algunas operaciones de administración de campañas también pueden producir ApiFaultDetail o EditorialApiFaultDetail.

Para obtener más información, consulte Objetos de datos de administración de campañas.
Facturación del cliente Todas las operaciones de facturación de clientes pueden producir AdApiFaultDetail y ApiFault.

Algunas operaciones de facturación de clientes también pueden producir ApiBatchFault.
Administración de clientes Todas las operaciones de administración de clientes pueden producir AdApiFaultDetail y ApiFault.
Reporting Todas las operaciones de informes pueden producir AdApiFaultDetail y ApiFaultDetail.

Nota:

Todos los objetos de error se derivan del objeto ApplicationFault . El objeto ApplicationFault define el elemento TrackingId , que identifica de forma única la entrada de registro que contiene los detalles de la llamada API. Si necesita ponerse en contacto con el soporte técnico, proporcione el identificador de seguimiento con la fecha y hora en que llamó a la operación de servicio.

Éxito parcial

El éxito parcial significa que al agregar, actualizar o eliminar entidades en lotes de uno o más, la operación puede realizarse correctamente para algunos y producir un error en parte del lote.

Éxito parcial con el servicio masivo

Al cargar registros en un archivo masivo, la carga puede realizarse correctamente para algunos registros y producir un error para otros en el lote. Al llamar a GetBulkUploadUrl , puede elegir si desea recibir o no errores en el archivo de resultados de carga.

Nota:

Microsoft Advertising no admite el comportamiento de control de errores "todo o nada". Tendrá que controlarlo en el lado cliente.

Éxito parcial con el servicio de administración de campañas

En la mayoría de las entidades, se admite el éxito parcial al llamar a las operaciones del servicio Administración de campañas. Para cada índice de lista en el que no se agregó una entidad, el elemento correspondiente será NULL. El elemento PartialErrors representa una matriz de objetos BatchError que contienen detalles de las entidades que no se agregaron, actualizaron o eliminaron correctamente. La lista solo incluye un BatchError para los intentos incorrectos y no incluye elementos NULL en el índice de cada entidad agregada correctamente. De forma similar, algunas operaciones devuelven NestedPartialErrors como una lista de BatchErrorCollection o un BatchError bidimensional.

Nota:

La operación ApplyProductPartitionActions incluye PartialErrors en la respuesta; sin embargo, no se admite el éxito parcial. Todo el conjunto de acciones solicitadas se realiza correctamente y la lista de respuestas AdGroupCriterionIds está completamente rellenada, o bien se produce un error en todas ellas y la lista de respuestas PartialErrors se rellena por completo.

Excepciones de .NET

Si usa el SDK de .NET de Bing Ads, la aplicación debe estar preparada para controlar las excepciones de nivel de servicio de la API de Bing Ads, las excepciones WCF y las excepciones del SDK de .NET de Bing Ads que se describen a continuación.

Para solucionar problemas de aplicaciones .NET, consulte Solución de problemas del SDK de .NET.

Excepciones de WCF

También se pueden producir errores SOAP genéricos que no son específicos de Bing Ads API y que la aplicación debe detectar. Por ejemplo, las aplicaciones .NET pueden producir excepciones de Windows Communication Foundation (WCF), como Exception, TimeoutException y CommunicationException. Para obtener información sobre las excepciones que debe esperar de WCF, vea Excepciones esperadas.

No debe llamar al método Close del bloque finally para liberar el objeto de servicio. La objeción es que el método Close puede producir excepciones. Si Close produce una excepción, debe llamar al método Abort para asegurarse de que se liberan todos los recursos; De lo contrario, podría estar filtrando recursos en el servidor. El procedimiento recomendado consiste en llamar a Close dentro del bloque try y llamar a Abort desde las excepciones detectadas.

Por el mismo motivo, no se recomienda el uso de la instrucción using . Para obtener más información, vea Evitar problemas con la instrucción Using.

Excepciones del SDK de .NET

Las excepciones del SDK de .NET de Bing Ads abstraen algunas de las excepciones de nivel de servicio. Para evitar la mayoría de las excepciones, puede intentarlo de nuevo y no dude en ponerse en contacto con el soporte técnico si el problema persiste después de varios reintentos.

Excepción Espacios de nombres Descripción
CouldNotDownloadResultFileException Microsoft.BingAds HttpService del SDK interno inicia esta excepción después de un error al intentar descargar un archivo de resultados masivo o de informes.
CouldNotUploadFileException Microsoft.BingAds Esta excepción la produce httpservice interno del SDK después de un error al intentar cargar un archivo masivo.
OAuthTokenRequestException Microsoft.BingAds Esta excepción se produce si se devuelve un error desde el servidor de autorización de la cuenta de Microsft. Para resolver esta excepción, primero puede comprobar el seguimiento de la pila para ver los detalles del error, en caso de que haya alguna acción que pueda realizar para resolver el problema. Por ejemplo, es posible que haya especificado un identificador de cliente no válido.
BulkOperationCouldNotBeCompletedException Microsoft.BingAds.V13.Bulk Esta excepción se produce si se ha intentado sondear un archivo de resultados masivos completado y el servicio masivo devuelve un estado con error.
BulkOperationInProgressException Microsoft.BingAds.V13.Bulk Esta excepción se produce si se ha intentado descargar un archivo de resultados masivos que aún no está disponible.
CouldNotGetBulkOperationStatusException Microsoft.BingAds.V13.Bulk Esta excepción se produce si BulkServiceManager no pudo obtener el estado de la operación de carga o descarga después de varios reintentos.
CouldNotSubmitBulkDownloadException Microsoft.BingAds.V13.Bulk BulkServiceManager inicia esta excepción cuando la operación de servicio DownloadCampaignsByAccountIds a la que llamó no devuelve una respuesta válida.
CouldNotSubmitBulkUploadException Microsoft.BingAds.V13.Bulk BulkServiceManager inicia esta excepción cuando la operación de servicio GetBulkUploadUrl a la que llamó no devuelve una respuesta válida.
EntityReadException Microsoft.BingAds.V13.Bulk Esta excepción se produce al intentar leer entidades de un archivo masivo mediante BulkFileReader. Para resolver esta excepción, primero puede comprobar el seguimiento de la pila para ver los detalles del error, en caso de que haya alguna acción que pueda realizar para resolver el problema. Por ejemplo, el archivo masivo del que intenta leer puede tener un valor no válido en uno de los campos.
EntityWriteException Microsoft.BingAds.V13.Bulk Esta excepción se produce al intentar escribir entidades en un archivo masivo mediante BulkFileWriter. Para resolver esta excepción, primero puede comprobar el seguimiento de la pila para ver los detalles del error, en caso de que haya alguna acción que pueda realizar para resolver el problema. Por ejemplo, podría haber especificado un valor no válido para una de las entidades de carga.
CouldNotGetReportingDownloadStatusException Microsoft.BingAds.V13.Reporting Esta excepción se produce si ReportingServiceManager no pudo obtener el estado de la operación de descarga después de varios reintentos.
CouldNotSubmitReportingDownloadException Microsoft.BingAds.V13.Reporting Esta excepción la produce ReportingServiceManager cuando la operación de servicio SubmitGenerateReport a la que llamó no devuelve una respuesta válida.
ReportingOperationCouldNotBeCompletedException Microsoft.BingAds.V13.Reporting Esta excepción se produce si se ha intentado sondear un archivo de resultados de informes completado y el servicio de informes devuelve un estado de error.
ReportingOperationInProgressException Microsoft.BingAds.V13.Reporting Esta excepción se produce si se ha intentado descargar un archivo de resultados de informes que aún no está disponible.

Solución de problemas del SDK de .NET

A menos que haya un problema de servicio conocido, normalmente cuando se produce un error en una llamada es porque los elementos SOAP no son válidos, no están en orden o ha especificado las credenciales incorrectas. Para comprobar ambos casos, debe capturar el sobre SOAP de la solicitud. Puede ponerse en contacto con el soporte técnico o comparar la captura con el ejemplo SOAP correspondiente documentado para cada operación de servicio.

Seguimiento del SDK

Puede usar traceBehavior del SDK de .NET de Bing Ads para registrar la solicitud y la respuesta soap.

Nota:

TraceBehavior está disponible con el SDK de .NET para Bing Ads, versión 12.13.5 y posteriores.

using (StreamWriter streamWriter = new StreamWriter(@"tracelog.txt"))
{
    streamWriter.AutoFlush = true;

    // For console output instead of file output, use new TextWriterTraceListener(Console.Out).
    // If you only need debug output, you can remove the StreamWriter, TraceListener, and AddTraceSource.
    TraceListener traceListener = new TextWriterTraceListener(streamWriter.BaseStream);

    IServiceCollection serviceCollection = new ServiceCollection();
    serviceCollection.AddLogging(builder => builder
        .AddTraceSource(new SourceSwitch("ProgramSourceSwitch", "verbose"), traceListener)
        .AddDebug()
        .AddFilter(level => level >= LogLevel.Debug)
    );
    var iLoggerFactory = serviceCollection.BuildServiceProvider().GetService<ILoggerFactory>();
    TraceBehavior.Instance.AddMessageInspector(
        new LogMessageInspector(
            iLoggerFactory.CreateLogger<Program>(),
            LogLevel.Information)
    );

    Authentication authentication = AuthenticateWithOAuth();

    // This utiltiy operation sets the global authorization data instance 
    // to the first account that the current authenticated user can access. 

    SetAuthorizationDataAsync(authentication).Wait();

    // Run all of the examples that are included above.

    foreach (var example in _examples)
    {
        example.RunAsync(_authorizationData).Wait();
    }

    streamWriter.Flush();
    traceListener.Flush();
}

El fragmento de código anterior de Program.cs se ejecutó con la versión 13.0.5 del SDK de .NET de Bing Ads con los siguientes paquetes NuGet. La implementación variará.

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="Microsoft.Extensions.Configuration" version="2.2.0" targetFramework="net471" />
  <package id="Microsoft.Extensions.Configuration.Abstractions" version="2.2.0" targetFramework="net471" />
  <package id="Microsoft.Extensions.Configuration.Binder" version="2.2.0" targetFramework="net471" />
  <package id="Microsoft.Extensions.DependencyInjection" version="2.2.0" targetFramework="net471" />
  <package id="Microsoft.Extensions.DependencyInjection.Abstractions" version="2.2.0" targetFramework="net471" />
  <package id="Microsoft.Extensions.Logging" version="2.2.0" targetFramework="net471" />
  <package id="Microsoft.Extensions.Logging.Abstractions" version="2.2.0" targetFramework="net471" />
  <package id="Microsoft.Extensions.Logging.Debug" version="2.2.0" targetFramework="net471" />
  <package id="Microsoft.Extensions.Logging.TraceSource" version="2.2.0" targetFramework="net471" />
  <package id="Microsoft.Extensions.Options" version="2.2.0" targetFramework="net471" />
  <package id="Microsoft.Extensions.Primitives" version="2.2.0" targetFramework="net471" />
  <package id="Newtonsoft.Json" version="12.0.2" targetFramework="net471" />
  <package id="System.Buffers" version="4.4.0" targetFramework="net471" />
  <package id="System.ComponentModel.Annotations" version="4.5.0" targetFramework="net471" />
  <package id="System.Configuration.ConfigurationManager" version="4.5.0" targetFramework="net471" />
  <package id="System.Memory" version="4.5.1" targetFramework="net471" />
  <package id="System.Numerics.Vectors" version="4.4.0" targetFramework="net471" />
  <package id="System.Runtime.CompilerServices.Unsafe" version="4.5.1" targetFramework="net471" />
  <package id="System.Security.AccessControl" version="4.5.0" targetFramework="net471" />
  <package id="System.Security.Permissions" version="4.5.0" targetFramework="net471" />
  <package id="System.Security.Principal.Windows" version="4.5.0" targetFramework="net471" />
  <package id="System.ServiceModel.Http" version="4.5.3" targetFramework="net471" />
  <package id="System.ServiceModel.Primitives" version="4.5.3" targetFramework="net471" />
</packages>

Opciones de Fiddler

Puede seguir estos pasos para capturar los sobres SOAP de una aplicación .NET mediante una herramienta de terceros, como Fiddler.

  • Después de instalar Fiddler, exporte el certificado fiddler desde el almacén de certificados raíz.
  • Haga clic en Herramientas>Opciones de Fiddler.
  • Seleccione la pestaña HTTPS y haga clic en la casilla Descifrar tráfico HTTPS .
  • Haga clic en Aceptar y, a continuación, siga las indicaciones para exportar el certificado de Fiddler.

Excepciones de Java

Si usa el SDK de Java de Bing Ads, la aplicación debe estar preparada para controlar las excepciones de nivel de servicio de la API de Bing Ads y las excepciones del SDK de Java de Bing Ads que se describen a continuación.

Para solucionar problemas de aplicaciones Java, consulte Solución de problemas del SDK de Java.

Excepciones del SDK de Java

Las excepciones del SDK de Java de Bing Ads abstraen algunas de las excepciones de nivel de servicio. Para evitar la mayoría de las excepciones, puede intentarlo de nuevo y no dude en ponerse en contacto con el soporte técnico si el problema persiste después de varios reintentos.

Excepción Espacios de nombres Descripción
CouldNotDownloadResultFileException com.microsoft.bingads HttpService del SDK interno inicia esta excepción después de un error al intentar descargar un archivo de resultados masivo o de informes.
CouldNotUploadFileException com.microsoft.bingads Esta excepción la produce httpservice interno del SDK después de un error al intentar cargar un archivo masivo.
OAuthTokenRequestException com.microsoft.bingads Esta excepción se produce si se devuelve un error desde el servidor de autorización de la cuenta de Microsft. Para resolver esta excepción, primero puede comprobar el seguimiento de la pila para ver los detalles del error, en caso de que haya alguna acción que pueda realizar para resolver el problema. Por ejemplo, es posible que haya especificado un identificador de cliente no válido.
BulkDownloadCouldNotBeCompletedException com.microsoft.bingads.V13.bulk Esta excepción se produce si se ha intentado sondear un archivo de resultados de descarga masiva completado y el servicio masivo devuelve un estado de error.
BulkOperationInProgressException com.microsoft.bingads.V13.bulk Esta excepción se produce si se ha intentado descargar un archivo de resultados masivos que aún no está disponible.
BulkUploadCouldNotBeCompletedException com.microsoft.bingads.V13.bulk Esta excepción se produce si se ha intentado sondear un archivo de resultados de carga masiva completado y el servicio masivo devuelve un estado con errores.
CouldNotGetBulkOperationStatusException com.microsoft.bingads.V13.bulk Esta excepción se produce si BulkServiceManager no pudo obtener el estado de la operación de carga o descarga después de varios reintentos.
CouldNotSubmitBulkDownloadException com.microsoft.bingads.V13.bulk BulkServiceManager inicia esta excepción cuando la operación de servicio DownloadCampaignsByAccountIds a la que llamó no devuelve una respuesta válida.
CouldNotSubmitBulkUploadException com.microsoft.bingads.V13.bulk BulkServiceManager inicia esta excepción cuando la operación de servicio GetBulkUploadUrl a la que llamó no devuelve una respuesta válida.
EntityReadException com.microsoft.bingads.V13.bulk Esta excepción se produce al intentar leer entidades de un archivo masivo mediante BulkFileReader. Para resolver esta excepción, primero puede comprobar el seguimiento de la pila para ver los detalles del error, en caso de que haya alguna acción que pueda realizar para resolver el problema. Por ejemplo, el archivo masivo del que intenta leer puede tener un valor no válido en uno de los campos.
EntityWriteException com.microsoft.bingads.V13.bulk Esta excepción se produce al intentar escribir entidades en un archivo masivo mediante BulkFileWriter. Para resolver esta excepción, primero puede comprobar el seguimiento de la pila para ver los detalles del error, en caso de que haya alguna acción que pueda realizar para resolver el problema. Por ejemplo, podría haber especificado un valor no válido para una de las entidades de carga.
CouldNotGetReportingDownloadStatusException com.microsoft.bingads.V13.reporting Esta excepción se produce si ReportingServiceManager no pudo obtener el estado de la operación de descarga después de varios reintentos.
CouldNotSubmitReportingDownloadException com.microsoft.bingads.V13.reporting Esta excepción la produce ReportingServiceManager cuando la operación de servicio SubmitGenerateReport a la que llamó no devuelve una respuesta válida.
ReportingOperationCouldNotBeCompletedException com.microsoft.bingads.V13.reporting Esta excepción se produce si se ha intentado sondear un archivo de resultados de informes completado y el servicio de informes devuelve un estado de error.
ReportingOperationInProgressException com.microsoft.bingads.V13.reporting Esta excepción se produce si se ha intentado descargar un archivo de resultados de informes que aún no está disponible.

Solución de problemas del SDK de Java

A menos que haya un problema de servicio conocido, normalmente cuando se produce un error en una llamada es porque los elementos SOAP no son válidos, no están en orden o ha especificado las credenciales incorrectas. Para comprobar en cualquier caso, debe capturar el sobre SOAP de la solicitud. Puede ponerse en contacto con el soporte técnico o comparar la captura con el ejemplo SOAP correspondiente documentado para cada operación de servicio.

Opciones de JAX WS y Apache CXF

Puede usar JAX WS y Apache CXF para capturar los sobres SOAP, por ejemplo, si ejecuta una aplicación maven.

  1. Edite pom.xml para incluir las siguientes dependencias.

    <dependency>
        <groupId>com.sun.xml.ws</groupId>
        <artifactId>jaxws-rt</artifactId>
        <version>2.3.2</version>
        <type>pom</type>
    </dependency>
    <dependency>
        <groupId>com.sun.xml.ws</groupId>
        <artifactId>jaxws-ri</artifactId>
        <version>2.3.2</version>
        <type>pom</type>
    </dependency>
    <dependency>
        <groupId>com.sun.xml.ws</groupId>
        <artifactId>rt</artifactId>
        <version>2.3.2</version>
    </dependency>
    <dependency>
        <groupId>org.apache.cxf</groupId>
        <artifactId>cxf-rt-frontend-jaxws</artifactId>
        <version>3.3.2</version>
    </dependency>
    <dependency>
        <groupId>org.apache.cxf</groupId>
        <artifactId>cxf-rt-transports-http</artifactId>
        <version>3.3.2</version>
    </dependency>  
    
    
  2. Agregue las siguientes líneas a la aplicación Java.

    System.setProperty("com.sun.xml.ws.transport.http.client.HttpTransportPipe.dump", "true");
    System.setProperty("com.sun.xml.internal.ws.transport.http.HttpAdapter.dump", "true");
    

Opciones de Fiddler

Puede seguir estos pasos para capturar los sobres SOAP de una aplicación java mediante una herramienta de terceros, como Fiddler.

  1. Después de instalar Fiddler, exporte el certificado fiddler desde el almacén de certificados raíz. Haga clic en Herramientas>Opciones de Fiddler. Seleccione la pestaña HTTPS y haga clic en la casilla Descifrar tráfico HTTPS . Haga clic en Aceptar y, a continuación, siga las indicaciones para exportar el certificado de Fiddler.

  2. Use el siguiente comando para importar el certificado en el almacén cacert usado por Java, por ejemplo, ejecutar desde PowerShell como administrador.

    PS C:\Program Files\Java\jre1.8.0_201\bin> .\keytool.exe -importcert -v -alias "Fiddler cert" -trustcacerts -keystore "C:\Program Files\Java\jre1.8.0_201\lib\security\cacerts" -storepass changeit -file <PathToFiddlerRootGoesHere>\FiddlerRoot.cer
    
  3. Agregue las siguientes líneas a la aplicación Java.

    System.setProperty("https.proxyHost", "127.0.0.1");
    System.setProperty("https.proxyPort", "8888");
    

Excepciones de PHP

Si usa el SDK de PHP de Bing Ads, la aplicación debe estar preparada para controlar las excepciones de nivel de servicio de api de Bing Ads y las excepciones del SDK de PHP de Bing Ads que se describen a continuación.

Para solucionar problemas de aplicaciones PHP, consulte Solución de problemas del SDK de PHP.

Solución de problemas del SDK de PHP

A menos que haya un problema de servicio conocido, normalmente cuando se produce un error en una llamada es porque los elementos SOAP no son válidos, no están en orden o ha especificado las credenciales incorrectas. Para comprobar ambos casos, debe capturar el sobre SOAP de la solicitud. Puede ponerse en contacto con el soporte técnico o comparar la captura con el ejemplo SOAP correspondiente documentado para cada operación de servicio.

Imprimir SOAP

En PHP, puede usar los métodos siguientes para imprimir los sobres SOAP. Cada uno de los ejemplos de código PHP incluye estas instrucciones para imprimir los errores en la consola.

print $proxy->GetService()->__getLastRequest()."\n";
print $proxy->GetService()->__getLastResponse()."\n";

Excepciones del SDK de PHP

Las excepciones del SDK de PHP de Bing Ads abstraen algunas de las excepciones de nivel de servicio. Para evitar la mayoría de las excepciones, puede intentarlo de nuevo y no dude en ponerse en contacto con el soporte técnico si el problema persiste después de varios reintentos.

También debe controlar la excepción OAuthTokenRequestException, que se produce si se devuelve un error desde el servidor de autorización de la cuenta de Microsft. Para resolver esta excepción, primero puede comprobar el seguimiento de la pila para ver los detalles del error, en caso de que haya alguna acción que pueda realizar para resolver el problema. Por ejemplo, es posible que haya especificado un identificador de cliente no válido.

Excepciones de Python

Si usa el SDK de Python de Bing Ads, la aplicación debe estar preparada para controlar las excepciones de nivel de servicio de la API de Bing Ads y las excepciones del SDK de Python de Bing Ads que se describen a continuación.

Para solucionar problemas de aplicaciones de Python, consulte Solución de problemas del SDK de Python.

Excepciones del SDK de Python

Las excepciones del SDK de Python de Bing Ads abstraen algunas de las excepciones de nivel de servicio. Para evitar la mayoría de las excepciones, puede intentarlo de nuevo y no dude en ponerse en contacto con el soporte técnico si el problema persiste después de varios reintentos.

Excepción Espacios de nombres Descripción
BulkException BingAds.V13.Bulk Esta excepción se produce si se ha intentado sondear un archivo de resultados masivos completado y el servicio masivo devuelve un estado con error.
BulkDownloadException BingAds.V13.Bulk Esta excepción se produce si se produce el tiempo de espera al intentar descargar un archivo masivo.
BulkUploadException BingAds.V13.Bulk Esta excepción se produce si se produce el tiempo de espera al intentar descargar un archivo de resultados de carga masiva.
EntityReadException BingAds.V13.Bulk Esta excepción se produce al intentar leer entidades de un archivo masivo mediante BulkFileReader. Para resolver esta excepción, primero puede comprobar el seguimiento de la pila para ver los detalles del error, en caso de que haya alguna acción que pueda realizar para resolver el problema. Por ejemplo, el archivo masivo del que intenta leer puede tener un valor no válido en uno de los campos.
EntityWriteException BingAds.V13.Bulk Esta excepción se produce al intentar escribir entidades en un archivo masivo mediante BulkFileWriter. Para resolver esta excepción, primero puede comprobar el seguimiento de la pila para ver los detalles del error, en caso de que haya alguna acción que pueda realizar para resolver el problema. Por ejemplo, podría haber especificado un valor no válido para una de las entidades de carga.
FileDownloadException BingAds Esta excepción se produce si se produce el tiempo de espera al intentar descargar un archivo de resultados de carga masiva.
FileUploadException BingAds Esta excepción se produce si se produce el tiempo de espera al intentar cargar un archivo masivo.
OAuthTokenRequestException BingAds Esta excepción se produce si se devuelve un error desde el servidor de autorización de la cuenta de Microsft. Para resolver esta excepción, primero puede comprobar el seguimiento de la pila para ver los detalles del error, en caso de que haya alguna acción que pueda realizar para resolver el problema. Por ejemplo, es posible que haya especificado un identificador de cliente no válido.
ReportingException BingAds.V13.Reporting Esta excepción se produce si se ha intentado sondear un archivo de resultados de informes completado y el servicio de informes devuelve un estado de error.
ReportingDownloadException BingAds.V13.Reporting Esta excepción se produce si se produce el tiempo de espera al intentar descargar un archivo de resultados de informes.
SdkException BingAds Clase de excepción base para el SDK de Python de Bing Ads. Esta excepción nunca se genera.
TimeoutException BingAds Esta excepción se produce si se produce el tiempo de espera.

Solución de problemas del SDK de Python

A menos que haya un problema de servicio conocido, normalmente cuando se produce un error en una llamada es porque los elementos SOAP no son válidos, no están en orden o ha especificado las credenciales incorrectas. Para comprobar ambos casos, debe capturar el sobre SOAP de la solicitud. Puede ponerse en contacto con el soporte técnico o comparar la captura con el ejemplo SOAP correspondiente documentado para cada operación de servicio.

Registro

Si usa el SDK de Python de Bing Ads, puede incluir el registro para generar tráfico, por ejemplo, la solicitud y respuesta SOAP. Cada uno de los ejemplos de código de Python incluye estas instrucciones para imprimir la salida de todo el tráfico SOAP en la consola. Asegúrese de descomprimirlos si desea ver el tráfico.

import logging
logging.basicConfig(level=logging.INFO)
logging.getLogger('suds.client').setLevel(logging.DEBUG)
logging.getLogger('suds.transport.http').setLevel(logging.DEBUG) 

Consulta también

Códigos de error de operación de la API de Bing Ads
Direcciones del servicio web de la API de Bing Ads