Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.
Este artigo passo a passo mostra como criar um serviço Web e um cliente de serviço Web para enviar e receber documentos binários utilizando o Microsoft ASP.NET e Microsoft Visual C# .NET. Pode utilizar o ASP.NET e Visual C# .NET para criar um serviço Web que os guarda documentos binários para uma pasta num servidor Web e obtém documentos binários a partir de uma pasta num servidor Web. Pode utilizar este serviço como um sistema de gestão simples de documentos na Web.
No menu ficheiro do Microsoft Visual Studio. NET, clique em Novo e, em seguida, clique em projecto .
No Visual C# Projects , seleccione o Serviço Web do ASP.NET . Escreva ou cole http://localhost/DocumentManagementService para a localização e, em seguida, clique em OK . Por predefinição, Service1.asmx é criado e é apresentado na vista de estrutura.
No menu Ver , clique em código para apresentar a vista de código para Service1.asmx.
Adicione o seguinte código WebMethods à classe Service1 :
[WebMethod]
public bool SaveDocument( Byte[] docbinaryarray, string docname)
{
string strdocPath;
strdocPath = "C:\\DocumentDirectory\\" + docname;
FileStream objfilestream =new FileStream(strdocPath,FileMode.Create,FileAccess.ReadWrite);
objfilestream.Write(docbinaryarray,0,docbinaryarray.Length);
objfilestream.Close();
return true;
}
[WebMethod]
public int GetDocumentLen(string DocumentName)
{
string strdocPath;
strdocPath = "C:\\DocumentDirectory\\" + DocumentName;
FileStream objfilestream = new FileStream(strdocPath,FileMode.Open,FileAccess.Read);
int len = (int)objfilestream.Length;
objfilestream.Close();
return len;
}
[WebMethod]
public Byte[] GetDocument(string DocumentName)
{
string strdocPath;
strdocPath = "C:\\DocumentDirectory\\" + DocumentName;
FileStream objfilestream = new FileStream(strdocPath,FileMode.Open,FileAccess.Read);
int len = (int)objfilestream.Length;
Byte[] documentcontents = new Byte[len];
objfilestream.Read(documentcontents,0,len);
objfilestream.Close();
return documentcontents;
}
NOTA: <root>O código guarda os documentos para o <raiz>: \\DocumentDirectory\\ caminho do directório no servidor. Altere este para a pasta no servidor Web onde pretende guardar os documentos.
Adicione o espaço de nomes seguinte no início do Service1.asmx:
using System.IO;
Teste o serviço Web:
No menu Debug , clique em Iniciar para iniciar o serviço Web. Este procedimento inicia o browser e aparece a página da descrição do serviço de ajuda.
Certifique-se de que os métodos SaveDocument GetDocument e GetDocumentLen aparecem.
Feche a janela do browser Web para parar a depuração.
No menu ficheiro do Visual Studio. NET, clique em Adicionar projecto e, em seguida, clique em Novo projecto .
Na lista Visual C# Projects , seleccione a Aplicação do Windows e, em seguida, clique em OK . Por predefinição, é criado o Form1.
Adicione uma referência Web para o serviço Web, da seguinte forma:
No Solution Explorer, clique com o botão direito do rato no item de projecto de cliente. Em seguida, seleccione Adicionar referência Web no menu de contexto .
Na caixa de diálogo Adicionar referência Web , escreva o URL para o ficheiro WSDL (Web Services Description Language) para o serviço Web e, em seguida, prima ENTER.
NOTA: A localização predefinida para o ficheiro WSDL é http://localhost/DocumentManagementService/Service1.asmx?WSDL.
Na caixa de diálogo Adicionar referência Web , clique em Add Reference .
Adicione dois botões ao Form1. Defina a propriedade texto de button1 ao Documento de arquivo no servidor . Defina a propriedade texto de button2 para Obter o documento a partir do servidor .
Faça duplo clique em button1 e button2 para criar predefinidos, clique em processadores de eventos para os botões.
Substitua os processadores o seguinte código:
string sFile = "<file path>";
private void button1_Click(object sender, System.EventArgs e)
{
FileStream objfilestream = new FileStream(sFile,FileMode.Open,FileAccess.Read);
int len = (int)objfilestream.Length;
Byte[] mybytearray = new Byte[len];
objfilestream.Read(mybytearray,0,len);
localhost.Service1 myservice = new localhost.Service1();
myservice.SaveDocument(mybytearray,sFile.Remove(0,sFile.LastIndexOf("\\")+1));
objfilestream.Close();
}
private void button2_Click(object sender, System.EventArgs e)
{
MemoryStream objstreaminput = new MemoryStream();
FileStream objfilestream = new FileStream(sFile.Insert(sFile.LastIndexOf("."),"2"), FileMode.Create,FileAccess.ReadWrite);
localhost.Service1 myservice = new localhost.Service1();
int len = (int)myservice.GetDocumentLen(sFile.Remove(0,sFile.LastIndexOf("\\")+1));
Byte[] mybytearray = new Byte[len];
mybytearray = myservice.GetDocument(sFile.Remove(0,sFile.LastIndexOf("\\")+1));
objfilestream.Write(mybytearray,0,len);
objfilestream.Close();
}
NOTA: a variável sFile tem de conter o caminho de ficheiro local para um documento que será enviado para o servidor. Quando o documento é transferido, é colocada na mesma pasta e um valor de 2 é anexado ao nome do ficheiro.
Adicione o espaço de nomes seguinte no início do ficheiro:
using System.IO;
No Solution Explorer, clique com o botão direito do rato no item de projecto de cliente. Em seguida, seleccione Definir como projecto de arranque no menu de contexto .
No menu Debug , clique em Iniciar . É apresentado o Form1.
Clique no botão denominado Documentos de arquivo no servidor . Isto irá chamar o método de Web SaveDocument . <root>Este método Web guarda o documento local in a <raiz>: \DocumentDirectory\ pasta no servidor. Depois de ter transferido o documento, verifique se o ficheiro existe na pasta de destino.
Clique no botão com o rótulo Obter documento a partir do servidor . Isto irá chamar o método de Web GetDocument . <root>Este método Web copia o documento a <raiz>: \DocumentDirectory\ pasta no servidor. O documento é guardado na unidade local especificado no código.
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 318425
(http://support.microsoft.com/kb/318425/en-us/
)
Quanto esforço foi necessário para seguir os procedimentos deste artigo?
Muito baixo
Baixo
Moderado
Alto
Muito alto
O que podemos fazer para melhor estas informações?
Para proteger a sua privacidade, não inclua as informações de contacto nos comentários.
Obrigado! Os seus comentários serão utilizados para nos ajudar a melhorar o conteúdo do suporte. Para obter mais opções de assistência, visite a Home Page da Ajuda e Suporte.