Walkthrough: criando um serviço da Web personalizada
Esta tarefa programação fornece um visão geral de como criar um personalizado serviço da Web que opera dentro de contexto de Windows SharePoint Services 3.0. Ele percorre o processo de criar um serviço da Web "Hello World" simples e, em seguida, mostra como modificar o serviço de modo que ele implementa o modelo server-side object Windows SharePoint Services 3.0 wssversion3short para retornar dados site e lista.
As etapas básicas para criar um serviço da Web
Crie um serviço da Web ASP.NET em Microsoft Visual Studio 2005.
Crie um biblioteca de classes dentro de serviço da Web que define a lógica de programação para o serviço da Web.
Gerar e editar um arquivo estático descoberta e um arquivo WSDL (Web Services Description Language) (WSDL).
Implante os arquivos serviço da Web o Diretório _vti_bin.
Criar um aplicativo cliente para consumir a serviço da Web.
Criando um serviço da Web ASP.NET em Visual Studio
A primeira etapa é criar um site serviço da Web ASP.NET em Visual Studio 2005.
Para criar um serviço da Web ASP.NET
Visual Studio, clique em arquivo , apontar para nova e, em seguida, selecione de sites da Web .
In the Templates box of the New Web Site dialog box, select ASP.NET Web Service, select File System in the Location box, select a programming language and location for the project, and then click OK.
Dentro de nova solução serviço da Web, crie um separar projeto de biblioteca de classes para conter a lógica serviço da Web. Para criar o projeto, clique arquivo , apontar para nova e, em seguida, selecione Project .
In the New Project dialog box, select a language in the Project types box, select Class Library in the Templates box, provide a name and location for the project, select Add to Solution in the Solution box, and then click OK.
Adicione uma referência ao espaço para nome System.Web.Services System.Web.Services na projeto de biblioteca de classes. Right-click the project in Solution Explorer, click Add Reference, select System.Web.Services in the Add Reference dialog box, and then click OK.
Substitua o arquivo classe usar como padrão na projeto de biblioteca de classes o arquivo classe serviço usar como padrão que Visual Studio fornece na pasta App_Code da serviço da Web.
Para substituir o arquivo classe com o arquivo classe serviço
Em Gerenciador de Soluções , arrastar Service.cs ou Service.vb para o parte superior nó na projeto de biblioteca de classes.
Excluir o arquivo Class1.cs ou Class1.vb e também excluir o arquivo Service.cs ou Service.VB que permanece na pasta a App_Code.
Crie um nome forte para o biblioteca de classes:
Gerenciador de Soluções , clique com o botão direito do mouse o projeto de biblioteca de classes e, em seguida, clique propriedades .
In the Properties dialog box, click Signing, select Sign the assembly, and then select <New> in the Choose a strong name key file list.
A caixa diálogo Create Strong Name Key, forneça um nome arquivo para a chave, Clear o proteger minha chave arquivo com uma senha caixa de seleção e, em seguida, clique OK .
Para compilar somente o projeto de biblioteca de classes, clique com o botão direito do mouse o projeto em Gerenciador de Soluções e, em seguida, clique criar .
Para adicionar o assembly para o cache global de assemblies (GAC), você pode arrastar o assembly para o Diretório
%windows%\assembly
%Windows%\assembly usando 2 instâncias de Windows Explorer, ou usar o gacutil.exe utilitário de linha de comando que é instalado com o Microsoft .NET Framework SDK 2.0.Para usar Gacutil.exe para copiar o biblioteca de classes DLL para o GAC
To open the Visual Studio command prompt, click Start, point to All Programs, point to Microsoft Visual Studio 2005, point to Visual Studio Tools, and click Visual Studio 2005 Command Prompt.
Em tipo de prompt de comando um comando o seguinte forma e pressionar ENTER:
gacutil.exe -if "<Full file system path to DLL>"
.
Agora você está pronto para modificar as informações assembly no arquivo Service.asmx usar como padrão do serviço da Web com informações para o DLL a partir de GAC. Para informações get a partir de GAC, aberto o Diretório
%windows%\assembly
%Windows%\assembly em Windows Explorer, clique com o botão direito do mouse o assembly e clique propriedades .Para aberto Service.asmx em Gerenciador de Soluções , clique com o botão direito do mouse o arquivo e clique abrir .
Remover o atributo CodeBehind CodeBehind da diretiva de página em Service.asmx e modificar o conteúdo do atributo Class classe para que a diretiva coincide com o seguinte formato, onde o nome assembly "MyServiceAssembly" e o símbolo de chave pública são valores especificados no caixa de diálogo propriedades que você abriu na etapa 10:
<%@ WebService Language="C#" Class="Service, MyServiceAssembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=8f2dca3c0f2d0131" %>
In Visual Basic include the namespace to identify the class, for example,
Class="MyServiceNamespace.Service, MyServiceAssembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=8f2dca3c0f2d0131"
.Renomeie seu arquivo .asmx adequadamente e em seguida, salvar suas alterações.
Gerar e modificando descoberta estática e arquivos WSDL
Para fornecer descoberta e descrição para seu personalizado serviço da Web, você deve criar um arquivo .Disco e um arquivo .WSDL. Porque Windows SharePoint Services virtualizes suas URLs (de exemplo, http://MyServer/MySite/MySubsite
torna-se http://MyServer
), você não é possível usar os arquivos gerado automaticamente .Disco e .WSDL gerados pelo ASP.NET. Em vez disso, você deve criar uma página .disco e uma página ASPX .WSDL que fornecem o redirecionamento necessário e manter virtualização.
Você pode usar ASP.NET para gerar os arquivos .WSDL e .Disco por temporariamente que hospeda o serviço da Web em um diretório virtual, such as /_layouts
e em seguida, usando a ferramenta Web Service Discovery .NET Framework (Disco.exe) para obter os arquivos gerados.
Para gerar a descoberta estática e arquivos WSDL
Em Windows Explorer, copiar o arquivo .asmx da sua serviço da Web para
\\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\LAYOUTS
.Execute DISCO.exe na prompt de comando de Diretório o LAYOUTS para gerar arquivos .WSDL e .Disco. Executar um comando no seguinte formato para gerar os arquivos em \LAYOUTS:
disco http://MyServer/_layouts/MyCustomWebService.asmx
To register namespaces of the Windows SharePoint Services object model, open both the .disco and .wsdl files and replace the opening XML processing instruction --
<?xml version="1.0" encoding="utf-8"?>
-- with instructions such as the following:<%@ Page Language="C#" Inherits="System.Web.UI.Page" %> <%@ Assembly name="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %> <%@ Import Namespace="Microsoft.SharePoint.Utilities" %> <%@ Import Namespace="Microsoft.SharePoint" %> <% Response.ContentType = "text/xml"; %>
No arquivo .disco, modifique a referência contrato e marcas endereço SOAP para ser como o seguinte exemplo, que substitui literais caminhos com caminhos codificar gerado através do uso do Microsoft.SharePoint.Utilities.SPHttpUtility T:Microsoft.SharePoint.Utilities.SPHttpUtility classe e que substitui o nome método que está especificado no binding atributo:
<contractRef ref=<% SPHttpUtility.AddQuote(SPHttpUtility.HtmlEncode(SPWeb.OriginalBaseUrl(Request) + "?wsdl"),Response.Output); %> docRef=<% SPHttpUtility.AddQuote(SPHttpUtility.HtmlEncode(SPWeb.OriginalBaseUrl(Request)),Response.Output); %> xmlns="https://schemas.xmlsoap.org/disco/scl/" /> <soap address=<% SPHttpUtility.AddQuote(SPHttpUtility.HtmlEncode(SPWeb.OriginalBaseUrl(Request)),Response.Output); %> xmlns:q1="http://tempuri.org/" binding="q1:HelloWorld" xmlns="https://schemas.xmlsoap.org/disco/soap/" /> <soap address=<% SPHttpUtility.AddQuote(SPHttpUtility.HtmlEncode(SPWeb.OriginalBaseUrl(Request)),Response.Output); %> xmlns:q2="http://tempuri.org/" binding="q2:ServiceSoap12" xmlns="https://schemas.xmlsoap.org/disco/soap/" />
No arquivo de .WSDL, faça o seguinte substituição semelhante para o endereço SOAP que está especificado:
<soap:address location=<% SPHttpUtility.AddQuote(SPHttpUtility.HtmlEncode(SPWeb.OriginalBaseUrl(Request)),Response.Output); %> />
Renomeie ambos os arquivos nos respectivos formatos MyCustomWebServicedisco.aspx e MyCustomWebServicewsdl.ASPX para que seu serviço seja descoberto através de Windows SharePoint Services.
Copiando os arquivos de serviços da Web para o _vti_bin Diretório
O diretório virtual _vti_bin fisicamente mapeia para o Local_Drive : \ARQUIVOS DE Shared\Extensões Server Extensions\12\ISAPI Diretório, que contém os arquivos serviço da Web usar como padrão usados em Windows SharePoint Services. Copie os arquivos novos MyCustomWebServicewsdl.aspx e MyCustomWebServicedisco.aspx e também o arquivo MyCustomWebService.asmx, para a pasta ISAPI.
A partir de Diretório _vti_bin, um serviço da Web oferece sua funcionalidade para o site que está especificado ao adicionar um referência da Web para o serviço.
Para verificar que seu personalizado serviço da Web é descoberto, navegar para http://MyServer/_vti_bin/MyCustomWebService.asmx
.
Lista o novo serviço da Web em spdisco.aspx
Para tornar seu serviço da Web localizável em Visual Studio como uma serviço da Web juntamente com os serviços da Web usar como padrão wssnoversshort Windows SharePoint Services, aberto o arquivo spdisco.aspx localizado em \Arquivos de Shared\Extensões Server Extensions\12\ISAPI e adicionar o seguinte codificar, especificando o arquivo .asmx para o serviço da Web.
<contractRef ref=<% SPHttpUtility.AddQuote(SPHttpUtility.HtmlEncode(spWeb.Url + "/_vti_bin/MyCustomWebService.asmx?wsdl"), Response.Output); %>
docRef=<% SPHttpUtility.AddQuote(SPHttpUtility.HtmlEncode(spWeb.Url + "/_vti_bin/MyCustomWebService.asmx"), Response.Output); %>
xmlns=" https://schemas.xmlsoap.org/disco/scl/ " />
<discoveryRef ref=<% SPHttpUtility.AddQuote(SPHttpUtility.HtmlEncode(spWeb.Url + "/_vti_bin/MyCustomWebService.asmx?disco"),Response.Output); %>
xmlns="https://schemas.xmlsoap.org/disco/" />
Criando um aplicativo Windows Para Consume o serviço da Web
Após copiar da serviços arquivos para o Diretório _vti_bin, o próximo etapa é criar um aplicativo Windows para consumir a serviço da Web.
Para criar um aplicativo Windows que consome o serviço da Web
Abrir Visual Studio 2005 e sobre o arquivo menu, em seguida, clique e apontar para nova Project .
Em caixa de diálogo o New Project, selecione Visual C# ou Visual Basic e em seguida, selecione o modelo Windows Application.
Digite um nome para o aplicativo nas caixa **** Nome, especificar uma localidade para arquivos de projeto o caixa Local e, em seguida, clique OK .
Gerenciador de Soluções , clique com o botão direito do mouse o projeto e, em seguida, clique Add Web Reference .
No endereço barra do navegador Add Web Reference, tipo de URL para o site para aplicar o serviço, como segue e em seguida, pressionar ENTER:
https://Server_Name/[sites/][Site_Name/]_vti_bin/MyCustomWebService.asmx
Clique em Adicionar Referência para baixar o contrato serviço para o serviço da Web.
Abrir Form1 no modo Design, exibir o a Caixa de ferramentas e, em seguida, arrastar um botão para a forma.
Clique duas vezes o controle button1 em Form1 para exibir o code-behind file no editor de códigos e adicionar o seguinte codificar que chama seu personalizado método.
Dim MyCustomService As New Web_Reference_Folder.MyServiceClass() MyCustomService.UseDefaultCredentials = True MessageBox.Show(MyCustomService.HelloWorld())
Web_Reference_Folder.MyServiceClass MyCustomService = new Web_Reference_Folder.MyServiceClass(); MyCustomService.UseDefaultCredentials = true; MessageBox.Show(MyCustomService.HelloWorld());
Pressione F5 para compilação e executar o projeto e ver uma caixa mensagem que exibe "Hello World".
Implementando o modelo de objeto de serviços SharePoint Windows
Agora você está pronto para testar tipos e membros do modelo de objeto Windows SharePoint Services wssnoversshort no biblioteca de classes do seu serviço da Web.
Para implementar o modelo de objeto Windows SharePoint Services
Adicione uma referência para o Microsoft.SharePoint assembly Microsoft.SharePoint. Right-click the class library project in Solution Explorer, click Add Reference, select Windows SharePoint Services, and then click OK.
Em seu projeto Service.cs ou Service.vb arquivo, você deve importação o apropriado espaços para nome no modelo de objeto. De exemplo, para usar tipos e membros da Microsoft.SharePoint e espaços para nome Microsoft.SharePoint.Utilities, adicionar o seguinte diretivas:
Imports Microsoft.SharePoint Imports Microsoft.SharePoint.Utilities
using Microsoft.SharePoint; using Microsoft.SharePoint.Utilities;
Renomear o método de Service.cs ou Service.vb. De exemplo, alteração de nome de HelloWorld para GetSiteListCount.
Adicione o seguinte codificar para exibir o nome do site e o número de listas que ela contém.
Dim myWebSite As SPWeb = SPContext.Current.Web Dim lists As SPListCollection = myWebSite.Lists Return myWebSite.Title + " contains " + lists.Count.ToString() + " lists."
SPWeb myWebSite = SPContext.Current.Web; SPListCollection lists = myWebSite.Lists; return (myWebSite.Title + " contains " + lists.Count.ToString() + " lists.");
Observação
Se seu codificar modifica dados Windows SharePoint Services wssnoversshort de alguma maneira, talvez você precise permitir inseguro atualizações no site, que pode ser feito pela configuração de AllowUnsafeUpdates P:Microsoft.SharePoint.SPWeb.AllowUnsafeUpdates propriedade.
Para reconstruir o biblioteca de classes DLL e copiá-lo para o GAC, repita as etapas 8 e 9 em " para criar um serviço da Web ASP.NET."
Redefinir Serviços de Informações da Internet (IIS) em busca de alterações na DLL tenham efeito.
Para gerar novas versões dos arquivos .WSDL e .disco, repita as etapas em "para gerar a descoberta estática e arquivos WSDL," mas alteração no método ligação nome o arquivo .disco como apropriado, de exemplo, para GetSiteListCount.
Copie as novas versões dos arquivos MyCustomWebServicedisco.aspx e MyCustomWebServicewsdl.aspx para a pasta ISAPI.
Abrir o aplicativo do Windows você criado anteriormente, exclua a referência serviço da Web anterior para o Hello World exemplo, alteração o nome método como apropriado e adicionar um novo referência da Web para o serviço da Web revisada.
Pressione F5 para compilação e executar o projeto e ver uma caixa mensagem que exibe o nome site e o número de listas que ela contém.