5

Ho impostato SSRS sul mio localhost e utilizzato BIDS per creare un paio di rapporti su di essi. Accedono ai dati dallo stesso SQL Server in cui è distribuito SSRS e, quando li visualizzo in anteprima, funzionano correttamente. Poi li ho distribuiti sul mio SSRS localhost e li ho acceduti tramite l'interfaccia web di ReportManager, ancora una volta hanno funzionato bene. Alla fine li ho distribuiti su SSRS del mio hosting provider. Stesso affare; buona connettività dati e sembra ottimo nel ReportManager.Utilizzo di SSRS con ASP.Net ReportViewer

La prima volta che accedo a questi tramite il ReportManager su entrambi i sistemi, richiede il mio nome utente e la password, che sul mio laptop sono solo l'accesso e la password del mio account. Per il mio provider di hosting è il mio account di accesso per loro.

Il mio problema si verifica quando si tenta di visualizzare un report utilizzando il controllo ReportViewer in ASP.Net. Molto spesso, quando tenta di eseguire il rendering, ottengo un "Accesso errato" o "401: Non autorizzato" invece del mio rapporto. Dopo molte letture e riflessioni, credo che il problema sia che devo accedere non a SQL Server, ma al sito web (servizio web?) Dove sono esposti i miei report. In questo momento, se non fornisco alcuna credenziale, posso ottenere i miei rapporti locali nel ReportViewer (di solito). Tuttavia, quando distribuisco i report su un server remoto, questo non funziona più.

Dopo alcune ricerche ho creato una classe che implementa IReportServerCredentials e ho provato ad usarlo per passare il nome utente e la password, ma questo non sembra funzionare. E mi stava confondendo se queste credenziali dovessero essere per la fonte dei dati o per il servizio web.

Se qualcuno potrebbe indurmi a capire come ottenere il ReportViewer per accedere al servizio Web SSRS, lo apprezzerei molto.

risposta

4

Supponendo di aver impostato ProcessingMode = "Remote" attirbute sul visualizzatore, probabilmente si è verificato un problema di autenticazione. Quando si utilizza il visualizzatore di report in modalità remota, il report viene eseguito su SSRS dall'account ASP.Net in esecuzione. Questo account deve avere accesso al server di report e al report che si desidera eseguire. Quello che probabilmente sta accadendo è che ASP.Net è in esecuzione con un account che non ha accesso a SSRS.

Se si desidera essere in grado di impostare le credenziali per il visualizzatore di report, dare un'occhiata a this thread per una soluzione e codice di esempio.

+0

In effetti, ho ricevuto un errore proprio come quello quando sono stato distribuito in un'altra posizione di staging, dicendo che l'account NT che stavo usando non aveva i privilegi per eseguire quell'azione. Comprendere la rappresentazione e l'account in cui vengono eseguite le mie applicazioni è qualcosa su cui devo concentrarmi maggiormente. Alla fine, oggi, sono riuscito a far funzionare questa cosa aggiungendo un ruolo per "BUILTIN \ Users" di "Browser". Funziona, ma non ne sono pazzo perché penso che fondamentalmente significhi che il rapporto non è stato bloccato affatto. Continuerò a perseguire le risposte che ottengo qui. –

+0

Alla fine, ho finalmente capito esaminando la classe di credenziali che ho creato più attentamente, confrontandola con un codice di esempio che sapevo funzionasse. È risultato che stavo restituendo "True" dal mio metodo GetFormsCredentials(). Dal momento che non ho mai avuto intenzione di utilizzare l'autenticazione basata su form, avrei dovuto restituire "False."Tutti i parametri" out "di quel metodo venivano impostati su NULL, quindi l'autenticazione non veniva eseguita correttamente e non me ne ero reso conto. –

+0

Impressionante. Abbiamo incontrato gli stessi problemi quando stavamo cercando di integrare SSRS con i nostri app Web. Alla fine siamo riusciti a ottenere i permessi giusti, ma è stato doloroso. – jvilalta

1

È sempre difficile eseguire il debug dei problemi di autenticazione in remoto, ma è possibile risolvere il problema attivando la rappresentazione su AppPool. In questo modo, quando un utente è connesso, IIS potrebbe connettersi a SQL Server come utente.

Un altro approccio potrebbe essere l'utilizzo dell'autenticazione SQL; sfortunatamente, i dettagli dipendono dal modo in cui hai collegato le cose.

+0

Definitivamente preferirei utilizzare l'autenticazione SQL; principalmente perché non ho mai capito in che modo l'autenticazione di Windows fa quello che fa. E poiché nell'app Web non è coinvolto un accesso di rete. Ho intenzione di leggere sull'impersonificazione. –