Skip to content

Commit 56f36a8

Browse files
Posts
1 parent 8a96c37 commit 56f36a8

File tree

118 files changed

+5398
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

118 files changed

+5398
-0
lines changed
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
---
2+
title: 'Criando um Web Service seguro com SoapHeader'
3+
date: Sat, 16 Aug 2008 00:00:05 +0000
4+
draft: false
5+
tags: ['ASP.NET', 'ASP.NET', 'C#', 'C#', 'SoapHeader', 'SqlAdapter', 'SqlClient', 'SqlCommand', 'SqlConnection', 'Visual Studio', 'Visual Studio', 'WebMethod', 'WebService']
6+
---
7+
8+
Olá pessoa, como meu primeiro artigo vou iniciar uma breve explicação de como criar um WebService seguro utilizando o SoapHeader e como acessar os seus métodos utilizando o ObjectDataSource com GridView. Apesar de o artigo estar com exemplos em C-Sharp, você poderá tranquilamente aplicá-lo em VB.NET, basta um pouco de vontade.
9+
10+
Não irei entrar em detalhes de como criar uma conexão passo a passo, vou levar em consideração que você já sabe como fazer e esta a procura de como adicionar mais segurança a seu Web Service, mais prometo criar um artigo especialmente com esse assunto.
11+
12+
**1- Criando o WebService**
13+
Crie um novo Web Service, onde inicialmente seu código será como esse:
14+
15+
\[sourcecode language='csharp'\] /// /// Summary description for MeuWebService /// \[WebService(Namespace = "http://tempuri.org/")\] \[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1\_1)\] public class MeuWebService : System.Web.Services.WebService { public MeuWebService() { //Uncomment the following line if using designed components //InitializeComponent(); } \[WebMethod\] public string HelloWorld() { return "Hello World"; } } \[/sourcecode\]
16+
17+
**2- Adicionando um novo método**
18+
Crie um método onde esse retorne um DataSet para mais tarde ser consumido por uma aplicação, que no nosso caso será um WebForm:
19+
20+
\[sourcecode language='csharp'\] \[WebMethod(Description = "Retorna todos os clientes cadastrados")\] public DataSet getClientes() { DataSet dsClientes = null; string connectionString = "Data Source=seu\_servidor\_sql;User Id=seu\_usuario;Password=sua\_senha;Initial Catalog=seu\_bd;"; StringBuilder sqlString = new StringBuilder(); sqlString.Append(" SELECT \* FROM CLIENTES "); using (System.Data.SqlClient.SqlConnection connection = new System.Data.SqlClient.SqlConnection(connectionString)) { connection.Open(); using (System.Data.SqlClient.SqlCommand command = new System.Data.SqlClient.SqlCommand()) { command.Connection = connection; command.CommandText = sqlString.ToString(); using (System.Data.SqlClient.SqlDataAdapter adapter = new System.Data.SqlClient.SqlDataAdapter(command)) { adapter.Fill(dsClientes); } } } return dsClientes; } \[/sourcecode\]
21+
22+
Pronto, já possuímos um Web Service capaz de retornar um DataSet contendo as informações que desejamos, porem esse poderá ser consumido por qualquer aplicação uma vez que for publicada na internet. Então imagine o seguinte cenário, seu Web Service possui tambem um método capaz de excluir todos os seu cliente cadastrado. Isso seria catastrófico. Com essa dica abaixo será possível proteger facilmente o Web Service impedindo que outras aplicações, por mais que estejam acessando o Web Service, não sejam capaz de executar os métodos sem autenticação.
23+
24+
**3- Criando a classe de segurança**
25+
Crie uma nova classe herdando a classe SoapHeader como no exemplo abaixo:
26+
27+
\[sourcecode language='csharp'\] public class SegurancaClientes : SoapHeader { public string Usuario; public string Senha; } \[/sourcecode\]
28+
29+
Você poderá adiciona-lo logo abaixo da declaração dos Namespaces ou criar um novo arquivo de Classe.
30+
Agora dentro do Web Service você deverá estanciar essa nova classe:
31+
32+
\[sourcecode language='csharp'\] public SegurancaClientes Credencial = new SegurancaClientes(); \[/sourcecode\]
33+
34+
Agora atribua o seguinte código antes da declaração do WebMethod.
35+
36+
\[sourcecode language='csharp'\] \[SoapHeader("Credencial")\] \[WebMethod(... \[/sourcecode\]
37+
38+
Apesar de termos criado o Cabeçalho de autenticação do nosso Web Service utilizando o SoapHeader, não quer dizer que ele está protegido.
39+
40+
**4- Como autenticar o WebService**
41+
Será necessário criar um novo método, só que esse não irá conter a declaração de \[WebMethod\], será do tipo private e não precisaremos passar nenhum argumento. Crie um método simples que retorne o Tipo Boolean ou bool e dentro dele crie seu esquema de autenticação utilizando os parâmetros do SoapHeader como no exemplo abaixo.
42+
43+
\[sourcecode language='csharp'\] private Boolean Autenticou() { Boolean Autenticou = false; string Usuario = "admin"; string Senha = "123456"; if (Credencial.Usuario == Usuario && Credencial.Senha == Senha) { Autenticou = true; } return Autenticou; } \[/sourcecode\]
44+
45+
A Credencial.Usuario e Credencial.Senha são as informação que virão de fora do Web Service pela classe de segurança.
46+
47+
Feito tudo isso nosso método de retorno de clientes ficara assim:
48+
49+
\[sourcecode language='csharp'\] \[SoapHeader("Credencial")\] \[WebMethod(Description = "Retorna todos os clientes cadastrados")\] public DataSet getClientes() { if (!Autenticou()) { throw new Exception("Erro: Usuário não autenticado."); } DataSet dsClientes = null; string connectionString = "sua\_connection\_string"; StringBuilder sqlString = new StringBuilder(); sqlString.Append(" SELECT \* FROM CLIENTES "); using (System.Data.SqlClient.SqlConnection connection = new System.Data.SqlClient.SqlConnection(connectionString)) { connection.Open(); using (System.Data.SqlClient.SqlCommand command = new System.Data.SqlClient.SqlCommand()) { command.Connection = connection; command.CommandText = sqlString.ToString(); using (System.Data.SqlClient.SqlDataAdapter adapter = new System.Data.SqlClient.SqlDataAdapter(command)) { adapter.Fill(dsClientes); } } } return dsClientes; } \[/sourcecode\]
50+
51+
Quando nosso método for invocado de uma aplicação e ele não tiver passado antes a autenticação, ou seja se retornar false, será gerando um Exception para a aplicação e a chamada será interrompida. Abaixo o retorno do erro:
52+
53+
[![](https://raphaelcardoso.com.br/wp-content/uploads/2008/09/soapheader01-1.jpg "soapheader01")](https://raphaelcardoso.com.br/wp-content/uploads/2008/09/soapheader01-1.jpg)
54+
55+
**5- Consumindo o Web Service e Autenticando um ObjectDataSource**
56+
57+
Adicione em seu WebForm um GridView, um ObjectDataSource e faça as devidas configurações para que ele acesse o WebService e o método desejado.
58+
Feito isso, atribua o evento ObjectCreating ao ObjectDataSource que será onde passaremos nossa autenticação da aplicação como no exemplo abaixo:
59+
60+
\[sourcecode language='csharp'\] protected void objClientes\_ObjectCreating(object sender, ObjectDataSourceEventArgs e) { SegurancaClientes Credencial = new SegurancaClientes(); Credencial.Usuario = "admin"; Credencial.Senha = "123456"; Clientes clientes = new Clientes(); clientes.SegurancaClientesValue = Credencial; e.ObjectInstance = clientes; } \[/sourcecode\]
61+
62+
O que ocorrerá acima? Quando o ObjectDataSource for criado no momento que a pagina for carregada (no caso dos WebForms) será realizado a criação do Cabeçalho com a autenticação e enviado para o ObjectDataSource para que ele possa utilizá-lo para autenticar quando os nossos outros métodos forem invocados. Se falhar a autenticação, será gerado um Exception com a mensagem de erro.
63+
64+
[![](https://raphaelcardoso.com.br/wp-content/uploads/2008/09/soapheader01-1.jpg "soapheader01")](https://raphaelcardoso.com.br/wp-content/uploads/2008/09/soapheader01-1.jpg)
65+
66+
Basicamente é isso. Mesmo que você não utilize o ObjectDataSource para consumir seus métodos do Web Service, você poderá chamar seu método informando qual a classe de segurança.
67+
Espero que esse artigo tenha sido de grande utilidade e caso tenham duvida deixem seus comentários.
68+
69+
Abraço e sucesso!!!
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
---
2+
title: 'Enviando anexo em e-mail com ASP.NET'
3+
date: Fri, 05 Sep 2008 00:59:39 +0000
4+
draft: false
5+
tags: ['ASP.NET', 'ASP.NET', 'C#', 'C#', 'SMTP', 'Visual Studio', 'Visual Studio', 'WebForm', 'WinForm']
6+
---
7+
8+
Olá pessoa, a pedido de um amigo que recentemente começou programar em ASP.NET com C-Sharp, vou fazer um passo a passo de como enviar e-mail com anexo.
9+
10+
Estou utilizando o Visual Studio 2005, mais quem não tiver poderá usar o Visual Web Developer Express 2005 ou 2008.
11+
12+
13+
14+
1- Crie um novo projeto ASP.NET Web Site
15+
16+
[![](https://raphaelcardoso.com.br/wp-content/uploads/2008/09/emailcomanexo01-1.jpg "emailcomanexo01")](https://raphaelcardoso.com.br/wp-content/uploads/2008/09/emailcomanexo01-1.jpg)
17+
18+
2- Na página inicial que será criada automaticamente nesse novo projeto, adicione 4 Labels, 3 TextBox, 1 FileUpload e 1 Button.
19+
20+
[![](https://raphaelcardoso.com.br/wp-content/uploads/2008/09/emailcomanexo02-1-300x228.jpg "emailcomanexo02")](https://raphaelcardoso.com.br/wp-content/uploads/2008/09/emailcomanexo02-1.jpg)
21+
22+
3- De um duplo clique no botão e vamos implementar as opções de envio. Declare as seguintes Namespaces: System.Net.Mail, System.Net e System.IO
23+
24+
\[sourcecode language='csharp'\] using System.Net.Mail; using System.Net; using System.IO; \[/sourcecode\]
25+
26+
4- No método do botão vamos atribuir o código abaixo.
27+
28+
\[sourcecode language='csharp'\] protected void btnEnviar\_Click(object sender, EventArgs e) { // Estancia da Classe de Mensagem MailMessage \_mailMessage = new MailMessage(); // Remetente \_mailMessage.From = new MailAddress("[email protected]"); // Destinatario \_mailMessage.CC.Add(txtEmail.Text); // Assunto \_mailMessage.Subject = "Email com Anexo"; // A mensagem é do tipo HTML ou Texto Puro? \_mailMessage.IsBodyHtml = true; // Corpo da Mensagem \_mailMessage.Body = txtNome.Text + " " + txtMensagem.Text; // Recupera o binario enviado pelo FileUpload MemoryStream MS = new MemoryStream(fileAnexo.FileBytes); // Anexa o Stream do arquivo Attachment anexo = new Attachment(MS, fileAnexo.FileName); \_mailMessage.Attachments.Add(anexo); // Estancia a Classe de Envio SmtpClient \_smtpClient = new SmtpClient("smtp.meuservidor.com"); // Credencial para envio por SMTP Seguro (Quando o servidor exige autenticação) \_smtpClient.Credentials = new NetworkCredential("[email protected]", "123minhasenha"); // Envia a mensagem \_smtpClient.Send(\_mailMessage); } \[/sourcecode\]
29+
30+
Pronto, se executarmos o nosso código iremos receber o e-mail com as informações e anexo informado.
31+
32+
[![](https://raphaelcardoso.com.br/wp-content/uploads/2008/09/emailcomanexo04-1-300x228.jpg "emailcomanexo04")](https://raphaelcardoso.com.br/wp-content/uploads/2008/09/emailcomanexo04-1.jpg)
33+
34+
Revisão: A mesma técnica utilizada para envio de e-mail no webform, segue para o winform.
35+
Quem tiver idéias de artigos, deixe seu comentário que irei providenciar para as próximas postagens.
36+
37+
Abraço a todos.
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
---
2+
title: 'Criando e consumindo Web Service em C-Sharp - Parte 1'
3+
date: Sun, 07 Sep 2008 15:48:52 +0000
4+
draft: false
5+
tags: ['ASP.NET', 'ASP.NET', 'C#', 'C#', 'consumir webservice', 'Visual Studio', 'Visual Studio', 'WebService']
6+
---
7+
8+
Em mais um artigo, vou explicar como criar nosso primeiro Web service e ainda consumi-lo tanto em uma aplicação Windows Form quanto em um Web Form. Como primeira parte dessa publicação iremos criar nosso Web service.
9+
10+
**Mais o que vem a ser o Web service?**
11+
12+
13+
_**Web service** é uma solução utilizada na integração de sistemas e na comunicação entre aplicações diferentes. Com esta tecnologia é possível que novas aplicações possam interagir com aquelas que já existem e que sistemas desenvolvidos em plataformas diferentes sejam compatíveis. Os Web services são componentes que permitem às aplicações enviar e receber dados em formato XML. Cada aplicação pode ter a sua própria "linguagem", que é traduzida para uma linguagem universal, o formato XML. (fonte: [Wikipédia](http://pt.wikipedia.org/wiki/Web_service))_
14+
15+
Um Web service nada mais é que uma Classe seja ela em C-Sharp quanto VB.NET. Essa classe ou Web service pode ser consumido por uma aplicação Web Form, Windows Form ou até mesmo outros Web service e detalhe, independente da linguagem que eles foram criados.
16+
Suponhamos que você tenha criado um Web service em VB.NET com todas as regras de negocio da sua empresa onde suas aplicações Web Form irá consumi-lo, e se futuramente você pretende disponibiliza-lo para parceiros ou clientes isso não será problema, mesmo que seus parceiros possuam aplicações em C-Sharp, Java, Delphi ou qualquer outra linguagem que venha a surgir e tenha a capacidade de consumir um Web Service.
17+
18+
Então agora vamos ao que interessa.
19+
20+
1- Abra o Visual Studio.
21+
2- Crie um novo _ASP.NET Web Service_ em _File > New > Web Site..._
22+
23+
[![](https://raphaelcardoso.com.br/wp-content/uploads/2008/09/criandowebservice01-1.jpg "criandowebservice01")](https://raphaelcardoso.com.br/wp-content/uploads/2008/09/criandowebservice01-1.jpg)
24+
25+
Seu código inicialmente será igual ao código abaixo.
26+
27+
\[sourcecode language='csharp'\] using System; using System.Web; using System.Web.Services; using System.Web.Services.Protocols; \[WebService(Namespace = "http://tempuri.org/")\] \[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1\_1)\] public class Service : System.Web.Services.WebService { public Service() { //Uncomment the following line if using designed components //InitializeComponent(); } \[WebMethod\] public string HelloWorld() { return "Hello World"; } } \[/sourcecode\]
28+
29+
Iremos criar um WebMetodo que possibilita a uma aplicação realizar as 4 Operações Básicas da Matemática, mais o detalhe é que daremos a possibilidade de se escolher qual delas usar no mesmo WebMetodo.
30+
31+
Para isso crie uma nova classe do tipo Enum e nosso código ficará como o exemplo abaixo:
32+
33+
\[sourcecode language='csharp'\] using System; using System.Web; using System.Web.Services; using System.Web.Services.Protocols; \[WebService(Namespace = "http://tempuri.org/")\] \[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1\_1)\] public class Service : System.Web.Services.WebService { public Service() { //Uncomment the following line if using designed components //InitializeComponent(); } \[WebMethod\] public string HelloWorld() { return "Hello World"; } } public enum OperacoesBasicas { Adicao = 0, Divisao = 1, Multiplicacao = 2, Subtracao = 3 } \[/sourcecode\]
34+
35+
Feito isso iremos criar então um novo WebMetodo chamado _Calculadora_ onde iremos informar 2 valores do Tipo _Decimal_, a Tipo da _Operação_ e será retornado um outro valor do tipo _Decimal_. Veja o código abaixo:
36+
37+
\[sourcecode language='csharp'\] \[WebMethod\] public decimal Calculadora(decimal ValorA, decimal ValorB, OperacoesBasicas TipoOperacao) { decimal ResultadoAB = 0; switch (TipoOperacao) { case OperacoesBasicas.Adicao: { ResultadoAB = decimal.Add(ValorA, ValorB); break; } case OperacoesBasicas.Divisao: { ResultadoAB = decimal.Divide(ValorA, ValorB); break; } case OperacoesBasicas.Multiplicacao: { ResultadoAB = decimal.Multiply(ValorA, ValorB); break; } case OperacoesBasicas.Subtracao: { ResultadoAB = decimal.Subtract(ValorA, ValorB); break; } } return ResultadoAB; } \[/sourcecode\]
38+
39+
Pronto, nosso básico Web Service está pronto. Agora execute o Web Service e será aberto uma página com a lista de WebMetodos do seu Web Service. Clique no link _Calculadora_ e será aberto outra página para entrada dos valores.
40+
41+
[![](https://raphaelcardoso.com.br/wp-content/uploads/2008/09/criandowebservice02-1.jpg "criandowebservice02")](https://raphaelcardoso.com.br/wp-content/uploads/2008/09/criandowebservice02-1.jpg)
42+
43+
Para realizar as operações você deverá informar o _TipoOperacao_.
44+
45+
* Adicao ou 0
46+
* Divisao ou 1
47+
* Multiplicacao ou 2
48+
* Subtracao ou 3
49+
50+
Será aberto uma outra página com o resultado.
51+
[![](https://raphaelcardoso.com.br/wp-content/uploads/2008/09/criandowebservice03-1.jpg "criandowebservice03")](https://raphaelcardoso.com.br/wp-content/uploads/2008/09/criandowebservice03-1.jpg)
52+
53+
Viu como é simples?
54+
55+
Fonte do projeto: [Github](https://github.com/csharpbrasil/Criando-Consumindo-WebService).
56+
57+
Espero que tenham entendido e no próximo artigo irei explicar como consumir esse mesmo Web Service em Windows Form.
58+
59+
Abraço e sucesso!!!

0 commit comments

Comments
 (0)