Gestione di errori ed eccezioni del servizio
Questo articolo descrive i dettagli sulla gestione degli errori e sulla risoluzione dei problemi dell'applicazione.
Consiglio
Quando si crea un messaggio di richiesta SOAP, assicurarsi che gli elementi siano nello stesso ordine definito nel linguaggio di descrizione dei servizi Web (WSDL). Se gli elementi necessari non sono in ordine, la chiamata avrà esito negativo. Se gli elementi facoltativi non sono in ordine, la chiamata potrebbe non riuscire o gli elementi verranno ignorati. Per altre informazioni, vedere Ordine degli elementi XML SOAP.
Errori comuni dell'API
Ecco alcuni suggerimenti per gestire gli errori comuni del servizio che potrebbero verificarsi. Per un elenco completo dei codici di errore dell'API Bing Ads, vedere Codici di errore dell'operazione.
Codice 105
In genere indica l'utilizzo di un token di accesso non corretto (elemento di intestazione AuthenticationToken) o di un token di sviluppo per l'ambiente di destinazione. Ad esempio, le credenziali potrebbero essere valide nell'ambiente di produzione; tuttavia, quando si fa riferimento alla sandbox, si osserva il codice 105.
Codice 106
In genere indica che, sebbene le credenziali siano corrette per l'ambiente di destinazione, l'utente non ha accesso a una delle entità specificate nella richiesta. Ad esempio, si osserverà questo errore durante la chiamata a SubmitGenerateReportRequest se l'utente non dispone delle autorizzazioni per l'account specificato.
Codice 117
Se si supera il limite di chiamate al servizio, verrà visualizzato l'errore seguente:
- Codice errore numerico: 117
- Codice di errore simbolico: CallRateExceeded
- Messaggio: è stato superato il numero di chiamate che è possibile effettuare in un minuto. Ridurre il numero di chiamate effettuate al minuto.
Quando si osserva questo errore, è possibile inviare di nuovo la richiesta entro il limite dopo 60 secondi di attesa.
Errore interno
In alcuni casi il servizio potrebbe restituire un errore interno come indicato di seguito:
<OperationError>
<Code>0</Code>
<Details i:nil="true"/>
<ErrorCode>InternalError</ErrorCode>
<Message>An internal error has occurred.</Message>
</OperationError>
Ecco alcuni possibili scenari di errore interni:
- Si tratta di un problema di sistema temporaneo e non è possibile eseguire alcuna operazione. Se la stessa chiamata ha funzionato in precedenza, riprovare più tardi nel caso in cui sia stato risolto il problema sul lato server.
- L'operazione non è stata mappata correttamente a un codice di errore interattivo. Idealmente, se i client possono eseguire operazioni per risolvere il problema, l'API Bing Ads deve restituire un codice di errore interattivo. Se si osserva costantemente l'errore interno, contattare il supporto tecnico con i dettagli.
HTTP 500
Tutte le operazioni del servizio API Bing Ads rispettano la specifica SOAP (Simple Object Access Protocol) 1.1 in base alla quale vengono restituiti errori con un codice HTTP 500. Vedere, ad esempio, quanto segue.
HTTP/1.1 500 Internal Server Error
Questo non è di per sé rappresentativo di un codice utilizzabile ed è consigliabile esaminare i dettagli dell'errore per altre informazioni sull'errore specifico.
Impossibile creare una classe astratta
Non è possibile creare un'istanza di una classe di base, ad esempio Ad. È necessario creare un'istanza di una delle classi derivate, ad esempio ExpandedTextAd.
Perché si riceve un URL vuoto dalla chiamata all'API reporting?
Anche quando lo stato del report è impostato su Operazione riuscita, l'elemento ReportDownloadUrl può essere null se non sono disponibili dati per i parametri del report inviati. Se vengono visualizzati i dati sulle prestazioni nell'applicazione Web Microsoft Advertising per lo stesso intervallo di date e i criteri di filtro, contattare il supporto tecnico con i dettagli.
Errori OAuth comuni
Ecco alcuni suggerimenti per gestire gli errori di autorizzazione comuni che potrebbero verificarsi.
Errori AADSTS
I messaggi e i codici di errore AADSTS sono soggetti a modifiche. Per le informazioni più aggiornate, esaminare la https://login.microsoftonline.com/error pagina per trovare descrizioni degli errori AADSTS, correzioni e alcune soluzioni alternative suggerite.
Cercare la parte numerica del codice di errore restituito. Ad esempio, se è stato ricevuto il codice di errore "AADSTS650052", eseguire una ricerca in https://login.microsoftonline.com/error "650052". È anche possibile collegarsi direttamente a un errore specifico aggiungendo il numero di codice di errore all'URL: https://login.microsoftonline.com/error?code=650052.
Di seguito sono descritti in dettaglio alcuni degli errori AADSTS più comuni, ad esempio AADSTS50011, AADSTS650052 e AADSTS700016.
AADSTS50011
L'errore AADSTS50011 può essere restituito all'interno di una stringa JSON quando si richiedono token di accesso con l'endpoint Microsoft Identity Platform come indicato di seguito.
{"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"}
Un errore URI di reindirizzamento non valido può anche essere restituito come testo nella finestra del browser quando si richiede il consenso dell'utente come indicato di seguito.
invalid_request: il valore specificato per il parametro di input 'redirect_uri' non è valido. Il valore previsto è un URI che corrisponde a un URI di reindirizzamento registrato per questa applicazione client.
Se si osserva questo errore, l'URI di reindirizzamento non è registrato correttamente o l'applicazione non usa l'URI di reindirizzamento registrato.
AADSTS650052
Il codice di errore 650052 può essere restituito con il messaggio "L'app deve accedere a un servizio ("https://ads.microsoft.com") che l'organizzazione "{organizzazione}" non ha sottoscritto o abilitato.
Se si osserva questo errore, assicurarsi di aver aggiunto e abilitato almeno uno degli utenti amministratori del tenant di Azure AAD per gli account aziendalinell'applicazione Web Microsoft Advertising. Per ulteriore assistenza , contattare il supporto tecnico.
AADSTS700016
È possibile restituire il codice di errore 700016 con il messaggio "Impossibile trovare l'applicazione con identificatore '{appIdentifier}' nella directory '{tenantName}'".
Se si dispone di un ID applicazione precedente (noto anche come ID client) formattato come valore esadecimale, ad esempio 00000000012345A67, è necessario registrare una nuova applicazione. Gli ID applicazione validi per l'uso con il Microsoft Identity Platform sono formattati come GUID con tratti, ad esempio 00001111-aaaa-2222-bbbb-3333cccc44444. Se non viene visualizzata un'app esistente nel portale di Azure- Registrazioni app, questa è un'altra indicazione che è necessario sostituirla con una nuova app.
URI di reindirizzamento non valido
Potrebbe essere restituito un errore URI di reindirizzamento non valido all'interno di una stringa JSON quando si richiedono token di accesso con l'endpoint Live Connect come indicato di seguito.
{"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."}
Un errore URI di reindirizzamento non valido può anche essere restituito come testo nella finestra del browser quando si richiede il consenso dell'utente come indicato di seguito.
invalid_request: il valore specificato per il parametro di input 'redirect_uri' non è valido. Il valore previsto è un URI che corrisponde a un URI di reindirizzamento registrato per questa applicazione client.
Se si osserva questo errore, l'URI di reindirizzamento non è registrato correttamente o l'applicazione non usa l'URI di reindirizzamento registrato.
Concessione non valida
È possibile che venga restituito un errore invalid_grant se si tenta di aggiornare il token usando un ambito a cui l'utente non fornisce il consenso.
{
"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."
}
È anche possibile restituire un errore invalid_grant se l'URI di reindirizzamento non è valido, il token di aggiornamento è scaduto, l'utente ha modificato la password o il token è stato altrimenti revocato.
{"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."}
In qualsiasi momento senza preavviso Microsoft può determinare che il consenso dell'utente deve essere nuovamente concesso; tuttavia, alcuni scenari sono all'interno del controllo dell'utente. I client che eseguono app in servizi che si estendono su aree e dispositivi, ad esempio Microsoft Azure, devono registrare un'applicazione Web con il segreto client. È possibile ottenere un token di aggiornamento in un dispositivo e aggiornarlo su un altro, purché si disponga dello stesso ID client e dello stesso segreto client. Se si registra un'applicazione pubblica senza un segreto client, non è possibile usare un token di aggiornamento tra i dispositivi. Un token riservato è associato al segreto client. Se è stato usato un ID applicazione client pubblico senza segreto client per ottenere un token di aggiornamento negli Stati Uniti e successivamente provare ad aggiornare il token nell'area DELL'UE, si osserverà l'errore invalid_grant.
Applicazione non trovata o client non autorizzato
Se si osserva un errore come "unauthorized_client: il client non esiste" o "L'applicazione con identificatore 'foo' non è stata trovata nella directory 'bar'", assicurarsi che l'applicazione esista ancora per l'ambiente di destinazione corretto, ad esempio produzione o sandbox.
È stato possibile restituire un errore di applicazione non trovato se si chiama l'endpoint Microsoft Identity Platform usando un ID applicazione Live SDK con il formato esadecimale breve, ad esempio 0000000012345A67. In tal caso è necessario registrare una nuova applicazione. Gli ID applicazione Microsoft Identity Platform validi sono formattati come GUID con tratti, ad esempio 00001111-aaaa-2222-bbbb-3333cccc44444.
Se l'app è stata registrata nel portale di Azure, nella sezione Tipi di account supportati assicurarsi di aver selezionato Account in qualsiasi directory aziendale e account Microsoft personali. (Vedere Registrare un'applicazione) Se non è stata scelta questa opzione durante l'installazione iniziale, il portale di Azure potrebbe richiedere la registrazione di una nuova applicazione.
Applicazione non configurata come applicazione multi-tenant
È possibile osservare l'errore seguente se l'applicazione registrata è limitata a un tenant specifico.
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.
Se l'app è stata registrata nel portale di Azure, nella sezione Tipi di account supportati assicurarsi di aver selezionato Account in qualsiasi directory aziendale e account Microsoft personali. (Vedere Registrare un'applicazione) Se non è stata scelta questa opzione durante l'installazione iniziale, il portale di Azure potrebbe richiedere la registrazione di una nuova applicazione.
Contattare il supporto
Il forum microsoft Q&A è disponibile per la community di sviluppatori per porre e rispondere a domande sulle API Bing Ads e sugli script di Microsoft Advertising. Microsoft monitora i forum e risponde alle domande a cui la community non ha ancora risposto.
Importante
Per assicurarsi che venga visualizzata la domanda, contrassegnarla con "advertising-api".
Se l'indagine prevede dati personali o account sensibili o se non si trovano le informazioni necessarie per risolvere il problema tramite Microsoft Q&A, contattare il supporto tecnico microsoft per la pubblicità.
Consiglio
Per accelerare l'analisi, fornire supporto con dettagli quali ambiente di sviluppo, frequenza degli errori e passaggi per riprodurre l'errore.
Per assistenza per le chiamate ai servizi API Bing Ads, esaminare questo elenco di controllo e fornire i risultati al team di supporto.
- Chi sta tentando di chiamare il servizio, ad esempio qual è l'indirizzo di posta elettronica di accesso?
- Qual è l'ID account o il numero di account a cui l'utente sta tentando di accedere?
- Quali sono i passaggi necessari per riprodurre l'errore? Includere la richiesta completa, la risposta e il timestamp, ad eccezione delle credenziali private, ad esempio il token di accesso.
- Si sta puntando all'ambiente di produzione o sandbox? Assicurarsi di usare gli endpoint di registrazione e autorizzazione dell'app corretti per produzione e sandbox. Assicurarsi anche di usare gli indirizzi del servizio Web corretti per lo stesso ambiente.
- Indica se la stessa richiesta ha funzionato per te in passato, ad esempio prestazioni storiche.
- Indicare se è ora possibile riprodurre il problema ogni volta o in modo intermittente.
- Per i problemi relativi al servizio Bulk o Reporting, includere la traccia per le operazioni di polling della richiesta e dello stato.
- Per un problema di autenticazione relativo al codice di errore 105 o 106, includere anche l'identificatore di sistema per le credenziali di accesso dell'utente di Microsoft Advertising. Per ottenere l'identificatore utente per l'utente corrente, vedere la guida introduttiva .
Per informazioni su come ottenere i token di accesso e aggiornamento per l'autenticazione con OAuth, esaminare questo elenco di controllo e fornire i risultati al team di supporto.
- Chi è l'utente che tenta di eseguire l'autenticazione, ad esempio qual è l'indirizzo di posta elettronica di accesso?
- Qual è l'ID account o il numero di account a cui l'utente sta tentando di accedere?
- Quali sono i passaggi necessari per riprodurre l'errore? Includere la richiesta completa, la risposta e il timestamp, ad eccezione delle credenziali private, ad esempio token di accesso e segreto client.
- Si sta puntando all'ambiente di produzione o sandbox? Assicurarsi di usare gli endpoint di registrazione e autorizzazione dell'app corretti per produzione e sandbox. Assicurarsi anche di usare gli indirizzi del servizio Web corretti per lo stesso ambiente.
- È stata registrata un'applicazione Web o nativa? I client che eseguono app in servizi che si estendono su aree e dispositivi, ad esempio Microsoft Azure, devono registrare un'applicazione Web con il segreto client.
- Qual è l'ID applicazione registrato (client_id)? Se si dispone anche di un segreto dell'applicazione (client_secret), verificare di impostarlo quando si richiedono token di accesso dall'endpoint di autorizzazione, ma non condividerlo con nessuno.
- Eseguire un controllo dell'integrità della diagnostica OAuth. È possibile ottenere un token di accesso e completare la guida introduttiva per la produzione o la sandbox? In caso contrario, dove ha esito negativo l'autenticazione e qual è l'errore?
Panoramica del modello di errore
Quando un'operazione del servizio API Bing Ads ha esito negativo, restituisce un errore del servizio, ad esempio il servizio Gestione clienti può restituire ApiFault. Le eccezioni di errore includono uno o più oggetti errore. Gli oggetti error contengono i dettagli sul motivo per cui l'operazione del servizio non è riuscita e un codice che identifica in modo univoco l'errore. Per un elenco dei codici di errore, vedere Bing Ads codici di errore dell'operazione API.
Gli oggetti errore e dati disponibili variano in base al servizio. Questa tabella descrive il modello di errore e i collegamenti agli oggetti dati degli errori per ogni servizio.
Servizio | Descrizione |
---|---|
Informazioni dettagliate sugli annunci | Tutte le operazioni di informazioni dettagliate sugli annunci possono generare AdApiFaultDetail e ApiFaultDetail. |
Invio in blocco | Tutte le operazioni bulk possono generare AdApiFaultDetail e ApiFaultDetail. |
Gestione campagna | Tutte le operazioni di gestione della campagna possono generare AdApiFaultDetail. Alcune operazioni di gestione della campagna possono anche generare ApiFaultDetail o EditorialApiFaultDetail. Per altre informazioni, vedere Campaign Management Data Objects. |
Fatturazione cliente | Tutte le operazioni di fatturazione dei clienti possono generare AdApiFaultDetail e ApiFault. Alcune operazioni di fatturazione dei clienti possono anche generare ApiBatchFault. |
Gestione clienti | Tutte le operazioni di gestione dei clienti possono generare AdApiFaultDetail e ApiFault. |
Creazione di report | Tutte le operazioni di creazione di report possono generare AdApiFaultDetail e ApiFaultDetail. |
Nota
Tutti gli oggetti di errore sono derivati dall'oggetto ApplicationFault . L'oggetto ApplicationFault definisce l'elemento TrackingId, che identifica in modo univoco la voce di log che contiene i dettagli della chiamata API. Se è necessario contattare il supporto tecnico, specificare l'ID di rilevamento con la data e l'ora in cui è stata chiamata l'operazione del servizio.
Esito positivo parziale
L'esito positivo parziale indica che quando si aggiungono, aggiornano o eliminano entità in batch di una o più entità, l'operazione può avere esito positivo per alcuni e non riuscire per una parte del batch.
Esito positivo parziale con il servizio bulk
Quando si caricano record in un file bulk, il caricamento potrebbe avere esito positivo per alcuni record e avere esito negativo per altri nel batch. Quando si chiama GetBulkUploadUrl , è possibile scegliere se ricevere o meno errori nel file dei risultati del caricamento.
Nota
Microsoft Advertising non supporta il comportamento di gestione degli errori "tutto o niente". Sarà necessario gestirlo sul lato client.
Esito positivo parziale con il servizio di gestione delle campagne
Per la maggior parte delle entità, l'esito positivo parziale è supportato quando si chiamano le operazioni del servizio Campaign Management . Per ogni indice elenco in cui non è stata aggiunta un'entità, l'elemento corrispondente sarà Null. L'elemento PartialErrors rappresenta una matrice di oggetti BatchError che contengono i dettagli per le entità che non sono state aggiunte, aggiornate o eliminate correttamente. L'elenco include solo un oggetto BatchError per i tentativi non riusciti e non include elementi Null nell'indice di ogni entità aggiunta correttamente. Analogamente, alcune operazioni restituiscono NestedPartialErrors come elenco di BatchErrorCollection o batchError bidimensionale.
Nota
L'operazione ApplyProductPartitionActions include PartialErrors nella risposta; tuttavia, l'esito positivo parziale non è supportato. L'intero set di azioni richieste ha esito positivo e l'elenco di risposte AdGroupCriterionIds è completamente popolato oppure tutti hanno esito negativo e l'elenco di risposte PartialErrors è completamente popolato.
Eccezioni .NET
Se si usa Bing Ads .NET SDK, l'applicazione deve essere preparata per gestire Bing Ads eccezioni a livello di servizio API, eccezioni WCF e Bing Ads eccezioni .NET SDK descritte di seguito.
Per la risoluzione dei problemi delle applicazioni .NET, vedere Risoluzione dei problemi di .NET SDK.
Eccezioni WCF
Anche gli errori SOAP generici non specifici per Bing Ads API possono essere generati e devono essere intercettati dall'applicazione. Ad esempio, le applicazioni .NET possono generare eccezioni di Windows Communication Foundation (WCF), ad esempio Exception, TimeoutException e CommunicationException. Per informazioni sulle eccezioni previste da WCF, vedere Eccezioni previste.
Non chiamare il metodo Close nel blocco finally per rilasciare l'oggetto servizio. L'obiezione è che il metodo Close può generare eccezioni. Se Close genera un'eccezione, è necessario chiamare il metodo Abort per assicurarsi che tutte le risorse vengano rilasciate. in caso contrario, è possibile che si verifichino perdite di risorse nel server. La procedura consigliata consiste nel chiamare Close all'interno del blocco try e chiamare Abort dalle eccezioni rilevate.
Per lo stesso motivo, l'uso dell'istruzione using non è consigliato. Per altre informazioni, vedere Evitare problemi con l'istruzione Using.
Eccezioni di .NET SDK
Le eccezioni di .NET SDK Bing Ads estrae alcune eccezioni a livello di servizio. Per risolvere la maggior parte delle eccezioni, è possibile riprovare e contattare il supporto tecnico se il problema persiste dopo più tentativi.
Eccezione | Spazi dei nomi | Descrizione |
---|---|---|
CouldNotDownloadResultFileException | Microsoft.BingAds | Questa eccezione viene generata dall'SDK HttpService interno dopo un tentativo non riuscito di scaricare un file di risultati bulk o di segnalazione. |
CouldNotUploadFileException | Microsoft.BingAds | Questa eccezione viene generata dall'SDK HttpService interno dopo un tentativo non riuscito di caricare un file bulk. |
OAuthTokenRequestException | Microsoft.BingAds | Questa eccezione viene generata se è stato restituito un errore dal server di autorizzazione dell'account Microsft. Per risolvere questa eccezione, è prima possibile controllare la traccia dello stack per visualizzare i dettagli dell'errore, nel caso in cui sia possibile eseguire un'azione per risolvere il problema. Ad esempio, è possibile che sia stato specificato un ID client non valido. |
BulkOperationCouldNotBeCompletedException | Microsoft.BingAds.V13.Bulk | Questa eccezione viene generata se è stato effettuato un tentativo di eseguire il polling di un file di risultati bulk completato e il servizio bulk restituisce uno stato non riuscito. |
BulkOperationInProgressException | Microsoft.BingAds.V13.Bulk | Questa eccezione viene generata se è stato effettuato un tentativo di scaricare un file di risultati in blocco non ancora disponibile. |
CouldNotGetBulkOperationStatusException | Microsoft.BingAds.V13.Bulk | Questa eccezione viene generata se BulkServiceManager non è riuscito a ottenere lo stato dell'operazione di caricamento o download dopo più tentativi. |
CouldNotSubmitBulkDownloadException | Microsoft.BingAds.V13.Bulk | Questa eccezione viene generata da BulkServiceManager quando l'operazione del servizio DownloadCampaignsByAccountIds chiamata non restituisce una risposta valida. |
CouldNotSubmitBulkUploadException | Microsoft.BingAds.V13.Bulk | Questa eccezione viene generata da BulkServiceManager quando l'operazione del servizio GetBulkUploadUrl chiamata non restituisce una risposta valida. |
EntityReadException | Microsoft.BingAds.V13.Bulk | Questa eccezione viene generata quando si tenta di leggere entità da un file bulk usando BulkFileReader. Per risolvere questa eccezione, è prima possibile controllare la traccia dello stack per visualizzare i dettagli dell'errore, nel caso in cui sia possibile eseguire un'azione per risolvere il problema. Ad esempio, il file bulk da cui si sta tentando di leggere potrebbe avere un valore non valido in uno dei campi. |
EntityWriteException | Microsoft.BingAds.V13.Bulk | Questa eccezione viene generata quando si tenta di scrivere entità in un file bulk usando BulkFileWriter. Per risolvere questa eccezione, è prima possibile controllare la traccia dello stack per visualizzare i dettagli dell'errore, nel caso in cui sia possibile eseguire un'azione per risolvere il problema. Ad esempio, è possibile che sia stato specificato un valore non valido per una delle entità di caricamento. |
CouldNotGetReportingDownloadStatusException | Microsoft.BingAds.V13.Reporting | Questa eccezione viene generata se ReportingServiceManager non è riuscito a ottenere lo stato dell'operazione di download dopo più tentativi. |
CouldNotSubmitReportingDownloadException | Microsoft.BingAds.V13.Reporting | Questa eccezione viene generata da ReportingServiceManager quando l'operazione del servizio SubmitGenerateReport chiamata non restituisce una risposta valida. |
ReportingOperationCouldNotBeCompletedException | Microsoft.BingAds.V13.Reporting | Questa eccezione viene generata se è stato effettuato un tentativo di polling per un file di risultati della segnalazione completato e il servizio di report restituisce uno stato non riuscito. |
ReportingOperationInProgressException | Microsoft.BingAds.V13.Reporting | Questa eccezione viene generata se è stato effettuato un tentativo di scaricare un file di risultati della segnalazione non ancora disponibile. |
Risoluzione dei problemi di .NET SDK
A meno che non si sia verificato un problema noto del servizio, in genere quando una chiamata ha esito negativo è perché gli elementi SOAP non sono validi, non sono in ordine oppure sono state specificate credenziali errate. Per verificare entrambi i casi, è necessario acquisire la busta SOAP della richiesta. È possibile contattare il supporto tecnico o confrontare l'acquisizione con l'esempio SOAP corrispondente documentato per ogni operazione del servizio.
Traccia SDK
È possibile usare Bing Ads TraceBehavior di .NET SDK per registrare la richiesta e la risposta SOAP.
Nota
TraceBehavior è disponibile con Bing Ads .NET SDK versione 12.13.5 e successive.
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();
}
Il programma completo che usa il frammento di codice precedente è disponibile in Program.cs.
Opzioni di Fiddler
È possibile seguire questa procedura per acquisire le buste SOAP da un'applicazione .NET usando uno strumento di terze parti, ad esempio Fiddler.
- Dopo aver installato Fiddler, esportare il certificato Fiddler dall'archivio certificati radice.
- Fare clic su Strumenti>Opzioni fiddler.
- Selezionare la scheda HTTPS e fare clic sulla casella di controllo Decrittografa traffico HTTPS .
- Fare clic su OK e quindi seguire le istruzioni per esportare il certificato Fiddler.
Eccezioni Java
Se si usa il Bing Ads Java SDK, l'applicazione deve essere preparata per gestire Bing Ads eccezioni a livello di servizio API e Bing Ads eccezioni java SDK descritte di seguito.
Per la risoluzione dei problemi delle applicazioni Java, vedere Risoluzione dei problemi di Java SDK.
Eccezioni di Java SDK
Le eccezioni java SDK Bing Ads estrae alcune eccezioni a livello di servizio. Per risolvere la maggior parte delle eccezioni, è possibile riprovare e contattare il supporto tecnico se il problema persiste dopo più tentativi.
Eccezione | Spazi dei nomi | Descrizione |
---|---|---|
CouldNotDownloadResultFileException | com.microsoft.bingads | Questa eccezione viene generata dall'SDK HttpService interno dopo un tentativo non riuscito di scaricare un file di risultati bulk o di segnalazione. |
CouldNotUploadFileException | com.microsoft.bingads | Questa eccezione viene generata dall'SDK HttpService interno dopo un tentativo non riuscito di caricare un file bulk. |
OAuthTokenRequestException | com.microsoft.bingads | Questa eccezione viene generata se è stato restituito un errore dal server di autorizzazione dell'account Microsft. Per risolvere questa eccezione, è prima possibile controllare la traccia dello stack per visualizzare i dettagli dell'errore, nel caso in cui sia possibile eseguire un'azione per risolvere il problema. Ad esempio, è possibile che sia stato specificato un ID client non valido. |
BulkDownloadCouldNotBeCompletedException | com.microsoft.bingads.V13.bulk | Questa eccezione viene generata se è stato effettuato un tentativo di eseguire il polling di un file di risultati di download bulk completato e il servizio bulk restituisce uno stato non riuscito. |
BulkOperationInProgressException | com.microsoft.bingads.V13.bulk | Questa eccezione viene generata se è stato effettuato un tentativo di scaricare un file di risultati in blocco non ancora disponibile. |
BulkUploadCouldNotBeCompletedException | com.microsoft.bingads.V13.bulk | Questa eccezione viene generata se è stato effettuato un tentativo di eseguire il polling di un file di risultati del caricamento bulk completato e il servizio bulk restituisce uno stato non riuscito. |
CouldNotGetBulkOperationStatusException | com.microsoft.bingads.V13.bulk | Questa eccezione viene generata se BulkServiceManager non è riuscito a ottenere lo stato dell'operazione di caricamento o download dopo più tentativi. |
CouldNotSubmitBulkDownloadException | com.microsoft.bingads.V13.bulk | Questa eccezione viene generata da BulkServiceManager quando l'operazione del servizio DownloadCampaignsByAccountIds chiamata non restituisce una risposta valida. |
CouldNotSubmitBulkUploadException | com.microsoft.bingads.V13.bulk | Questa eccezione viene generata da BulkServiceManager quando l'operazione del servizio GetBulkUploadUrl chiamata non restituisce una risposta valida. |
EntityReadException | com.microsoft.bingads.V13.bulk | Questa eccezione viene generata quando si tenta di leggere entità da un file bulk usando BulkFileReader. Per risolvere questa eccezione, è prima possibile controllare la traccia dello stack per visualizzare i dettagli dell'errore, nel caso in cui sia possibile eseguire un'azione per risolvere il problema. Ad esempio, il file bulk da cui si sta tentando di leggere potrebbe avere un valore non valido in uno dei campi. |
EntityWriteException | com.microsoft.bingads.V13.bulk | Questa eccezione viene generata quando si tenta di scrivere entità in un file bulk usando BulkFileWriter. Per risolvere questa eccezione, è prima possibile controllare la traccia dello stack per visualizzare i dettagli dell'errore, nel caso in cui sia possibile eseguire un'azione per risolvere il problema. Ad esempio, è possibile che sia stato specificato un valore non valido per una delle entità di caricamento. |
CouldNotGetReportingDownloadStatusException | com.microsoft.bingads.V13.reporting | Questa eccezione viene generata se ReportingServiceManager non è riuscito a ottenere lo stato dell'operazione di download dopo più tentativi. |
CouldNotSubmitReportingDownloadException | com.microsoft.bingads.V13.reporting | Questa eccezione viene generata da ReportingServiceManager quando l'operazione del servizio SubmitGenerateReport chiamata non restituisce una risposta valida. |
ReportingOperationCouldNotBeCompletedException | com.microsoft.bingads.V13.reporting | Questa eccezione viene generata se è stato effettuato un tentativo di polling per un file di risultati della segnalazione completato e il servizio di report restituisce uno stato non riuscito. |
ReportingOperationInProgressException | com.microsoft.bingads.V13.reporting | Questa eccezione viene generata se è stato effettuato un tentativo di scaricare un file di risultati della segnalazione non ancora disponibile. |
Risoluzione dei problemi di Java SDK
A meno che non si sia verificato un problema noto del servizio, in genere quando una chiamata ha esito negativo è perché gli elementi SOAP non sono validi, non sono in ordine oppure sono state specificate credenziali errate. Per verificare in ogni caso, è necessario acquisire la busta SOAP della richiesta. È possibile contattare il supporto tecnico o confrontare l'acquisizione con l'esempio SOAP corrispondente documentato per ogni operazione del servizio.
Per abilitare la registrazione a livello di codice dei messaggi di richiesta e risposta, vedere Registrazione delle chiamate al servizio.
Opzioni di Fiddler
È possibile seguire questa procedura per acquisire le buste SOAP da un'applicazione Java usando uno strumento di terze parti, ad esempio Fiddler.
Dopo aver installato Fiddler, esportare il certificato Fiddler dall'archivio certificati radice. Fare clic su Strumenti>Opzioni fiddler. Selezionare la scheda HTTPS e fare clic sulla casella di controllo Decrittografa traffico HTTPS . Fare clic su OK e quindi seguire le istruzioni per esportare il certificato Fiddler.
Usare il comando seguente per importare il certificato nell'archivio cacert usato da Java, ad esempio eseguire da PowerShell come amministratore.
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
Aggiungere le righe seguenti all'applicazione Java.
System.setProperty("https.proxyHost", "127.0.0.1"); System.setProperty("https.proxyPort", "8888");
Eccezioni PHP
Se si usa il Bing Ads PHP SDK, l'applicazione deve essere preparata per gestire Bing Ads eccezioni a livello di servizio API e Bing Ads eccezioni di PHP SDK descritte di seguito.
Per la risoluzione dei problemi delle applicazioni PHP, vedere Risoluzione dei problemi di PHP SDK.
Risoluzione dei problemi di PHP SDK
A meno che non si sia verificato un problema noto del servizio, in genere quando una chiamata ha esito negativo è perché gli elementi SOAP non sono validi, non sono in ordine oppure sono state specificate credenziali errate. Per verificare entrambi i casi, è necessario acquisire la busta SOAP della richiesta. È possibile contattare il supporto tecnico o confrontare l'acquisizione con l'esempio SOAP corrispondente documentato per ogni operazione del servizio.
Stampa SOAP
In PHP è possibile utilizzare i metodi seguenti per stampare le buste SOAP. Ognuno degli esempi di codice PHP include queste istruzioni per stampare gli errori nella console.
print $proxy->GetService()->__getLastRequest()."\n";
print $proxy->GetService()->__getLastResponse()."\n";
Eccezioni di PHP SDK
Il Bing Ads eccezioni DI PHP SDK astrae alcune eccezioni a livello di servizio. Per risolvere la maggior parte delle eccezioni, è possibile riprovare e contattare il supporto tecnico se il problema persiste dopo più tentativi.
È anche necessario gestire L'eccezione OAuthTokenRequestException, generata se è stato restituito un errore dal server di autorizzazione dell'account Microsft. Per risolvere questa eccezione, è prima possibile controllare la traccia dello stack per visualizzare i dettagli dell'errore, nel caso in cui sia possibile eseguire un'azione per risolvere il problema. Ad esempio, è possibile che sia stato specificato un ID client non valido.
Eccezioni Python
Se si usa Bing Ads Python SDK, l'applicazione deve essere preparata per gestire Bing Ads eccezioni a livello di servizio API e Bing Ads eccezioni python SDK descritte di seguito.
Per la risoluzione dei problemi delle applicazioni Python, vedere Risoluzione dei problemi di Python SDK.
Eccezioni di Python SDK
Le eccezioni Bing Ads Python SDK estrae alcune eccezioni a livello di servizio. Per risolvere la maggior parte delle eccezioni, è possibile riprovare e contattare il supporto tecnico se il problema persiste dopo più tentativi.
Eccezione | Spazi dei nomi | Descrizione |
---|---|---|
BulkException | BingAds.V13.Bulk | Questa eccezione viene generata se è stato effettuato un tentativo di eseguire il polling di un file di risultati bulk completato e il servizio bulk restituisce uno stato non riuscito. |
BulkDownloadException | BingAds.V13.Bulk | Questa eccezione viene generata se si verifica un timeout durante il tentativo di scaricare un file bulk. |
BulkUploadException | BingAds.V13.Bulk | Questa eccezione viene generata se si verifica un timeout durante il tentativo di scaricare un file di risultati del caricamento bulk. |
EntityReadException | BingAds.V13.Bulk | Questa eccezione viene generata quando si tenta di leggere entità da un file bulk usando BulkFileReader. Per risolvere questa eccezione, è prima possibile controllare la traccia dello stack per visualizzare i dettagli dell'errore, nel caso in cui sia possibile eseguire un'azione per risolvere il problema. Ad esempio, il file bulk da cui si sta tentando di leggere potrebbe avere un valore non valido in uno dei campi. |
EntityWriteException | BingAds.V13.Bulk | Questa eccezione viene generata quando si tenta di scrivere entità in un file bulk usando BulkFileWriter. Per risolvere questa eccezione, è prima possibile controllare la traccia dello stack per visualizzare i dettagli dell'errore, nel caso in cui sia possibile eseguire un'azione per risolvere il problema. Ad esempio, è possibile che sia stato specificato un valore non valido per una delle entità di caricamento. |
FileDownloadException | BingAds | Questa eccezione viene generata se si verifica un timeout durante il tentativo di scaricare un file di risultati del caricamento bulk. |
FileUploadException | BingAds | Questa eccezione viene generata se si verifica un timeout durante il tentativo di caricare un file bulk. |
OAuthTokenRequestException | BingAds | Questa eccezione viene generata se è stato restituito un errore dal server di autorizzazione dell'account Microsft. Per risolvere questa eccezione, è prima possibile controllare la traccia dello stack per visualizzare i dettagli dell'errore, nel caso in cui sia possibile eseguire un'azione per risolvere il problema. Ad esempio, è possibile che sia stato specificato un ID client non valido. |
ReportingException | BingAds.V13.Reporting | Questa eccezione viene generata se è stato effettuato un tentativo di polling per un file di risultati della segnalazione completato e il servizio di report restituisce uno stato non riuscito. |
ReportingDownloadException | BingAds.V13.Reporting | Questa eccezione viene generata se si verifica un timeout durante il tentativo di scaricare un file di risultati della segnalazione. |
SdkException | BingAds | Classe di eccezione di base per Bing Ads Python SDK. Questa eccezione non viene mai generata. |
TimeoutException | BingAds | Questa eccezione viene generata se si verifica un timeout. |
Risoluzione dei problemi di Python SDK
A meno che non si sia verificato un problema noto del servizio, in genere quando una chiamata ha esito negativo è perché gli elementi SOAP non sono validi, non sono in ordine oppure sono state specificate credenziali errate. Per verificare entrambi i casi, è necessario acquisire la busta SOAP della richiesta. È possibile contattare il supporto tecnico o confrontare l'acquisizione con l'esempio SOAP corrispondente documentato per ogni operazione del servizio.
Registrazione
Se si usa il Bing Ads Python SDK, è possibile includere la registrazione nel traffico di output, ad esempio la richiesta e la risposta SOAP. Ognuno degli esempi di codice Python include queste istruzioni per stampare l'output di tutto il traffico SOAP nella console. Assicurarsi di rimuovere il commento se si vuole visualizzare il traffico.
import logging
logging.basicConfig(level=logging.INFO)
logging.getLogger('suds.client').setLevel(logging.DEBUG)
logging.getLogger('suds.transport.http').setLevel(logging.DEBUG)
Vedere anche
codici di errore dell'operazione API Bing Ads
indirizzi del servizio Web API Bing Ads