Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Pode aceder a toda a funcionalidade do servidor de relatórios através da API SOAP do Reporting Services. Por ser um serviço Web, a API SOAP pode ser facilmente acedida para fornecer funcionalidades de relatórios empresariais às suas aplicações empresariais personalizadas. Acede ao serviço Web do Servidor de Relatórios a partir de uma aplicação Web de forma muito semelhante a como acede à API SOAP a partir de uma aplicação Microsoft Windows. Ao utilizar o Microsoft .NET Framework, pode gerar uma classe proxy que expõe as propriedades e métodos do serviço Web do Servidor de Relatórios. Depois, pode usar uma infraestrutura e ferramentas familiares para construir aplicações empresariais com tecnologia Reporting Services.
A funcionalidade de gestão de relatórios do Reporting Services é facilmente acedida a partir de uma aplicação Web ou de uma aplicação Windows. A partir de uma aplicação Web, pode adicionar e remover itens da base de dados do servidor de relatórios, definir a segurança dos itens, modificar itens da base de dados do servidor de relatórios, gerir o agendamento e a entrega, entre outros.
Permitir a personificação
O primeiro passo na configuração da sua aplicação Web é permitir a personificação a partir do cliente do serviço Web. Com a personificação, as aplicações ASP.NET podem ser executadas com a identidade do cliente em nome do qual estão a operar. O ASP.NET depende do Serviços de Informação Internet da Microsoft (IIS) para autenticar o utilizador e passar um token autenticado para a aplicação ASP.NET ou, se não conseguir autenticar o utilizador, passar um token não autenticado. Em qualquer dos casos, a aplicação ASP.NET personifica-se no token recebido se a personificação estiver ativada. Pode ativar a personificação no cliente, modificando o ficheiro de Web.config da aplicação cliente da seguinte forma:
<!-- Web.config file. -->
<identity impersonate="true"/>
Note
A personificação está desativada por defeito.
Para mais informações sobre ASP.NET personificação, consulte a documentação do SDK do Microsoft .NET Framework.
Gerir o Servidor de Relatórios usando a API SOAP
Também pode usar a sua aplicação Web para gerir um servidor de relatórios e o seu conteúdo. O portal web, incluído com o Reporting Services, é um exemplo de aplicação Web que gere a maioria das tarefas que normalmente realizaria através do Reporting Services. Pode adicionar a funcionalidade de gestão de relatórios do portal web às suas aplicações Web personalizadas. Por exemplo, pode querer devolver uma lista de relatórios disponíveis na base de dados do servidor de relatórios e exibi-los num controlo ASP.NET Listbox para os seus utilizadores escolherem. O código seguinte liga-se à base de dados do servidor de relatórios e devolve uma lista de itens na base de dados do servidor de relatórios. Os relatórios disponíveis são então adicionados a um controlo Listbox, que mostra o caminho de cada relatório.
Private Sub Page_Load(sender As Object, e As System.EventArgs)
' Create a Web service proxy object and set credentials
Dim rs As New ReportingService2005()
rs.Credentials = System.Net.CredentialCache.DefaultCredentials
' Return a list of catalog items in the report server database
Dim items As CatalogItem() = rs.ListChildren("/", True)
' For each report, display the path of the report in a Listbox
Dim ci As CatalogItem
For Each ci In items
If ci.Type = ItemTypeEnum.Report Then
catalogListBox.Items.Add(ci.Path)
End If
Next ci
End Sub ' Page_Load
private void Page_Load(object sender, System.EventArgs e)
{
// Create a Web service proxy object and set credentials
ReportingService2005 rs = new ReportingService2005();
rs.Credentials = System.Net.CredentialCache.DefaultCredentials;
// Return a list of catalog items in the report server database
CatalogItem[] items = rs.ListChildren("/", true);
// For each report, display the path of the report in a Listbox
foreach(CatalogItem ci in items)
{
if (ci.Type == ItemTypeEnum.Report)
catalogListBox.Items.Add(ci.Path);
}
}