Introducción
Un problema que se presenta regularmente luego de terminado el desarrollo de un proyecto web esta relacionado con la publicación y puesta en marca en un ambiente productivo, la idea del articulo será la de marcar los pasos para la creación y puesta en producción de un servicio web, así como también una página aspx, como veremos tratar un servicio o una pagina requieren los mismo pasos.
Se podría considerarse un servicio web (asmx) como una paginas aspx solo que sin una interfaz visual que se desplegué al usuario, los servicio permitirán que otras aplicaciones recuperen información publicada por medio de un protocolo conocido como es el http
En esta primera parte se analizaran:
- Crea un proyecto asp.net
- Agregar un web service al desarrollo web
- Consumir web service
- Actualizar configuración servicio
El ejemplo en el cual se basara la demostración consiste solo una lista de cursos que se obtiene de una base de datos. Como la publicación de un servicio es idéntica a la de una pagina web aprovecharemos el articulo para contemplar ambos escenarios.
Crear proyecto web
El primer paso será la creación del proyecto web
Es importante usar la opción que sea un Web Application
La estructura del proyecto del ejemplo incluye una db en carpeta de datos
Al ejecutar la pagina que lista los cursos se visualizara en el browser el resultado
Como es un ejemplo simple solo se hizo uso de un gridview junto a la ayuda de Entity Framework para resolver el acceso a datos
Por supuesto hasta ahora se hace uso del Visual Studio Developer Server, el cual es muy útil cuando se esta desarrollando, pero solo en esta etapa luego debe publicarse en el IIS
El Visual Studio creara por nosotros un server virtual en el puerto indicado en la configuración
Crear Servicio web
El próximo paso involucra la creación del servicio web, para ello agregaremos un nuevo ítem al proyecto web creado en el paso anterior
En el servicio se define un webmethod que liste los cursos
[WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] [System.ComponentModel.ToolboxItem(false)] public class SchoolService : System.Web.Services.WebService { [WebMethod] public List<CurseDTO> GetCurseList() { using (SchoolEntities context = new SchoolEntities()) { return (from curse in context.Course select new CurseDTO() { CurseId = curse.CourseID, Title = curse.Title, Department = curse.Department.Name }).ToList(); } } } public class CurseDTO { public int CurseId {get; set;} public string Title { get; set; } public string Department {get; set;} }
Si queremos ver la pantalla de inicio del servicio para validar que este correcto, solo será cuestión de navegarlo en el browser
Y hasta se puede invocar desde allí mismo
Consumir servicio web
Para consumir un servicio desde una aplicación cliente se agrega una referencia que creara el proxy, el cual no es mas que código para facilitar la invocación al servicio
En este caso como el servicio esta en la misma solución se descubre de forma directa, sino será necesario definir la url donde se publico el servicio
Si bien a simple vista pareciera que la referencia al servicio no hizo mucho
Si se habilita la opción superior de la barra del solution explorer se podrá descubrir mucho
La referencia al servicio crea código por nosotros, además de definir una sección en el app.config, en el cual se podrá cambiar la url sin necesidad de recompilar luego de hacer la implementación definitiva del servicio en el IIS
Consumir el servicio desde código solo implica crear la instancia del proxy para luego hacer uso del método definido
using School.UI.SchoolSvc; . . CurseDTO[] curseList; using (SchoolServiceSoapClient svc = new SchoolServiceSoapClient()) { curseList = svc.GetCurseList(); } dgvCourse.DataSource = curseList;
Con esto alcanza para invocar al servicio que hostea el server virtual que crea el VS y cargar el grid con la misma lista que al principio mostramos en la pagina web
Algo que seguramente habrán notado en el código seguro se relaciona con la respuesta del web method, como puede ser que devuelve un array de entidades cuando el código del servicio deja bien claro que era una lista, bien eso se debe a como se configura la referencia, pero puede cambiarse si hace falta.
Y se define el tipo de dato para que sea una lista
Al recompilar el proyecto el código que genera la referencia al servicio también devuelve una lista.
Código
El ejemplo del código fue creado con Visual Studio 2008 y Sql Server Express 2008 R2
[C#]
|
Buenas noches Leandro, te vengo molestando de nueva cuenta, sigo realizando un proyecto, y me a surgido una gran duda, no se si me puedas ayudar, estoy trabajando con vs2010 C#, y manejo archivos en mi bd, quiero saber si sabes alguna manera como insertar archivos a mi bd de forma automatica, por ejemplo, tengo una carpeta en windows seria mi servidor ftp, donde se almacenan archivos (imagenes).jpg enviados por camaras ip cada 10 min, cada imagen tiene un nombre unico de 12 caracteres numeros y letras + la extencion, y podria hacer un programa que revise cada 5 min si existen imagenes en la carpeta y a su vez tomarlas y depositarlas en la bd, esto se haria mediante tareas programas de windows que se ejecute cada cierto tiempo el programita, yo lo e visto pero con mysql, utilizando un archivo .bat que ejecuta instrucciones bajo simbolo de sistema, pero no se exactamente que contenga el codigo, y no se si se pueda hacer algo muy parecido con asp. net y sql server,que vaya y revise la carpeta, busque ciertos archivos a una carpeta ftp o X de windows, los tome y los deposite automaticamente a mi bd cada cierto tiempo,espero me haya dado a entender, saludos!!!!
ResponderEliminarHola leandro hay alguna forma de contactart por skype o wlm
ResponderEliminarquiero conversar con ud. para pedirle unos consejos sobre una aplicacion winform y autenticacion de usuarios directo a la base de datos desde esta aplicacion winform en c#
hola raul
ResponderEliminarla verdad no soy de usar aplicaciones de chat
si quieres puedes enviarme un mail con el planteo del problema
saludos
hola leandro deantemano gracias x tus siempres ayudas, mi problema es q tengo una aplicacion en vb 6.0 y necesito consumir un web service y no se como hacer la conexion, gracias...
ResponderEliminarhola
ResponderEliminarvas a tener que armar todo el mensaje SOAP para poder invocar el servicio
Usar un servicio Web XML desde VB6
saludos
Buenas Leandro, antes que nada te doy las gracias por el Blog ya que estoy aprendiendo mucho de acá y lo uso como referencia para muchas dudas que me van surgiendo.
ResponderEliminarPor otro lado, y yendo al punto de mi comentario, por las dudas me podrías guiar en como hacer para configurar el IIS y hacer que sea accesible desde Internet, según lei, lei, lei y lei de que hay que abrir puertos y otras cosas que me pierden y no lo estoy haciendo para nada bien por lo visto.
Para que lo quiero?
Quiero publicar un WebService que este corriendo en mi maquina y que me permita enviar SMS con un celular GSM que esta conectado a mi maquina (seria mi servidor no?) y, luego consumir este WebService desde el hosting donde esta corriendo mi aplicación. Con respecto al código enviar SMS y demás, ya se como hacerlo.
Esto que quiero hacer es para el desarrollo del trabajo final de mi Carrera, lo cual quisiera un poco de ayuda para llevarlo a cabo.
Muchísimas gracias por tu tiempo Leandro y espero haberme expresado correctamente para que entiendas mi idea. Cualquier corrección o sugerencia de como hacer mejor esto sera bien recibida.
Saludos
hola nicolas
ResponderEliminarel exponer un sitio a internat no tiene mas misterio que abrir los puerto en el firewall que estes usando
analiza lo que comento aqui
http://social.msdn.microsoft.com/Forums/es-ES/vbes/thread/f109e108-6f84-4ed8-abfb-a143ee1173cb/
http://social.msdn.microsoft.com/Forums/es-ES/netfxwebes/thread/c8b4d057-4a39-4bcc-84e9-033dd9fc3bf2/
en esas preguntas planteo este mismo tema, veras que depende del router quizas cambie un poco, pero seria mapear un puerto de wan con un puerto y ip de la lan
saludos
Perodn no envio el fragmento del web config. Como estas Leandro, por favor tengo un problema con subir a la base de datos un archivo mayor a 1mb por medio de un web services, ya incremente:
ResponderEliminarbinding name="CorrespondenciaEndPoint" closeTimeout="00:40:00"
openTimeout="00:40:00" receiveTimeout="00:40:00" sendTimeout="00:40:00"
allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
maxBufferSize="10485760" maxBufferPoolSize="10485760" maxReceivedMessageSize="10485760"
messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
useDefaultWebProxy="true"
readerQuotas maxStringContentLength="10485760" maxArrayLength="10485760"
security mode="None"
transport clientCredentialType="None" proxyCredentialType="None"
realm=""
message clientCredentialType="UserName" algorithmSuite="Default"
security
binding
Este fragmento ets aconfigurado tanto en el cliente como en el web services, pero no sube el archivo se cierra la conexion con el web services por fa ayudame....
Atte, Ruben
hola Ruben
ResponderEliminarde que tipo de servicio se trata, es un asmx o un servicio de wcf ?
si es un asmx podrias probar usando
http://danmyhre.wordpress.com/2012/05/15/50mb-limit-on-files-sent-to-content-organizerofficialfile-asmx/
comov eras se cambia el maxRequestLength del <system.web>
saludos
Leandro, muchas veces aprendo de tus consejos, sin embargo, me encuentro frente a algo nuevo. Yo he fabricado Web Services y también sé cómo consumirlas, pero ahora me solicitan "enviar datos a un WS". Se trata de datos GPS que debo hacer llegar a http://165.182.186.166:8080/process/gps/online?wsdl.
ResponderEliminarEllos (los receptores de esta información) me establecieron la arquitectura y los nombres de los tags XML tanto para el documento de "entrada" como el de "salida".
Yo tengo los datos y no tendría problemas en seleccionarlos y recorrerlos pero no sé cómo enviarlos.
Te agradeceré si me puedes dar una ayuda con esto.
Gracias de antemano.
hola Carlos
ResponderEliminarsabes en que lenguaje fue programado ese servicio ? apostaria a que esta en java
pudiste crear la clase proxy a ese servicio? a veces suando la opcion de Add Reference el VS no funciona
pero puede hacerlo por linea de comando
Herramienta Lenguaje de descripción de servicios Web (Wsdl.exe)
si logras crear el proxy el resto solo es instanciar el servicio he invocar los metodos
saludos
Hola Leandro. De antemanoo gracias por leerme.
ResponderEliminarLa situación es la siguiente.
Estoy trabajando con joomla y le introduje una aplicacion .Net.
Lo que requiero es obtener la variable de sesion.
Lo que ya hice fue usar nosoap desde php y con eso llame un webservice de .net, con eso pude registrar una variable de sesion en el. El problema que tengo es que uso es mismo webservice en mi aplicación, pero
no puedo leer la varible que registre anteriormente desde php con nosoap.
¿Sabes como podría hacerlo?
hola Daniel
ResponderEliminarel tema es que de por si entre distintas aplciaciones no puedes compartir Session
deberias pasar ese dato por querystring (o sea en la url),
o sino hacer uso de algun medio compartido como ser una base de datos, la aplicacion asp escribe en la db y la php toma el valor de alli
saludos
Hola Leandro,
ResponderEliminarSe ve bien completo en código gracias por compartirlo.
mi objetivo es implementarlo en en un servidor web para que desde ahí pueda consumirlo desde un dispositivo movil.
con el dispositivo voy a tomar fotos y un poco de texto y cuando tenga conexión a Internet subir la información al servidor.
espero me vaya bien :).
Cualquier duda te estaré preguntando para que me orientes :)
buenas noches
Buenas tardes Leandro. Buscando una ayuda con el tema de web service he llegado hasta aquí, y veo que mucho estan muy agradecido con el apoyo que le impartes.
ResponderEliminarDe ante mano muchas gracias por aportar con tus conocimiento a los que estamos inciandonos en este mundo.
Tengo un web services para consumir que es este: http://clocator.comsatel.com.pe:8080/wsSisLoc/WSServicioUltimaLocalizacion?wsdl, al momento de agregar la referencia a mi proyecto todo va bien, puedo acceder a los metodos y clases generadas por el la web service pero, a demas de ello tengo un usuario y password que son la credenciales de seguridad y son los mismo que no se como pasarle.
Estas son caracteristicas del web service
Protocolo: HTTP
Estándar: SOAP
Seguridad: WS-Security
Password: formato Digest
Porfavor si puedes darme alguna ayuda.
hola William
ResponderEliminarCÓMO: Pasar credenciales actuales a un servicio Web de ASP.NET
en la instancia de la clase del proxy deberias poner asignar
svcproxy.Credentials = new NetworkCredential("userName", "password");
saludos
Estimado Leandro, el servicio web esta desarrollado en Java y estoy intentado consumirlo desde vb.net en entonrno escritorio. Gracias por tu apoyo
ResponderEliminarEstimado intente pasarle las credenciales tan como lo indica en su respuesta, y me sigue dando el mismo error (An error was discovered processing the header).
ResponderEliminarLo que no se, es donde indico el tipo de password PasswordDigest que me especifica el priveedor del web service. Gracias por tu apoyo y disculpa la molestia.
hola William
ResponderEliminarla verdad sobre este tema que comentas no tengo experincia ya que nunca me toco implementar este tipo de seguridad
pero viendo de que se trata parece ser que se relaciona con el WS-Security
WS-Security Authentication and Digital Signatures with Web Services Enhancements
aunque lo veo algo un poco complejo
saludos
Hola Leandro, sienpre revisando tus publicaciones.
ResponderEliminartengo un problema con mi Web Services desarrollado en ASP de Vb.net. hasta ahora todo trabaja OK, mi problema radica en como pongo seguridad al web services ya que al momento de publicarlo cualquier persona puede colocar los parametros y ver el contenido del XML.
me podrias dar algun alcance.
Atte.
Moises Vilchez Tello
hola
ResponderEliminarhay varias formas de lograrlo
HTTP Security and ASP.NET Web Services
Building Secure ASP.NET Applications: Authentication, Authorization, and Secure Communication
podrias ver de asignar credenciales usando la integracion con windows, o sino usando certificados
Securing XML Web Services Created Using ASP.NET
tambien podrias suar el soap header para enviar usuario y password
How to: Perform Custom Authentication Using SOAP Headers.
saludos
Hola Leandro.. yo tengo una gran confusión con las tecnologías que asp.net tiene para realizar servicios web.. Yo actualmente necesito desarrollar servicios web rest.. para consumir desde una aplicación movil..
ResponderEliminar(es decir wcf, mvc 3, web api)
Agradecería me pudiera aconsejar.. o aclararme el panorama en cuanto a las tecnologias para realizar un servicio rest?
hola Carlos
ResponderEliminarsi es verdad hay una variedad de alternativas
pero recuerda que web api es mvc ya sea 3 o 4, este se basa en la estructura de controladores y actions para modelar la funcionalidad
si quieres algo simple web api es un buen camino
http://www.asp.net/web-api
saludos
Muchas gracias Leandro!
ResponderEliminarHola Leandro.
ResponderEliminarTengo una consulta, en un servidor 2008 R2 que tiene instalado IIS, se van a instalar dos webservices distintos, la consulta es la siguiente, que me recomiendas en cuanto a tener ambos webservices (que apuntan a BD distintas) en el mismo "Default Web Site" o crear un Web Site para cada uno ? De hecho a cada WS se le creó un Application Pool distinto.
Esto por el asunto si se va a detener alguno de los dos que no afecten al otro.
Saludos.
Mauricio Arguedas.
hola Prueba
ResponderEliminarsi vas a ubicar los servicio en el mismo sitio el app pool sera el mismo, no puede usar dos app pool
el app pool aplica por sitio web en el iis
poner los servicio en el mismo sitio en el iis o en diferentes es indistinto puede implementarlo de ambas formas, todo depende si quieres crear un sola url o dos distintas
lo que si analiza como vas a definir los connection string en el web.config, porque vas a necesitar keys distintas una para cada aplicacion, recuerda que al poner los servicio en el mismo sitio el web.config se tiene que unificar
saludos
Hola Leandro, sorry por molestar pero la verdad es que tengo un problema el cual no se como resolver, al igual que otro compañero tengo un webservice en net sin seguridad y necesito asegurarlo para ello quiero utilizar un certificado de prueba, dicho certificado ya lo cree con makecert pero no logro dar con algun ejemplo que me muestre como enviar el certificado desde el cliente y validarlo en el webservice.
ResponderEliminarYo creo que no doy con la respuesta porque estoy enredado con todo lo que he leído de WS y WCF o bien entendi mal el concepto.
Ahh casi lo olvido, mi cliente es un Winforms y el WS debe ser consumido desde internet/intranet.
Espero puedas ayudarme.
Saludos Cordiales.
hola MatiCris
ResponderEliminarel tema es que el ceritficado no se utiliza para implementar autenticacion, el certificado podrias usarlo para implementar SSL (https), o sea un canal de comunicacion seguro entre quien realiza la invocacion y el servicio para que no se pueda interceptar y cambiar el contenido del mensaje
pero el certificado no autentica quien ingresa o no
el certificado podrias usarlo en el IIS
Configuring IIS 7 with Self-Signed Server and Client Certificate
despues solo se accede por https:// al servicio
saludos
Buenas noches
ResponderEliminarHe seguido el tutorial y la verdad es que me funciona perfectamente en loca. Pero cuando lo intento publicar en un servidor externo (host contratado) no funciona
¿se necesita configurar algo mas para publicarlo en un servidor externo?
Saludos y Muchas gracias
hola Javier
ResponderEliminarcuando dices que no funciona que seria exactamente, recibes algun error en concreto?
validaste con el soporte del hosting?
saludos
Hola. Una consulta
ResponderEliminarEn un web Service desde el cliente como paso parametros tipo list al servicio y en el servicio como paso parametros tipo list a una clase
hola BanBan
ResponderEliminarcuando creas el proxy usa la opcion
imagen
como veras puedes cambiar el tipo de dato de array a List<>
de esta forma puedes definir en el webmethod un tipo de dato List<> con una clase que definas
saludos
SAludos Leandro,
ResponderEliminarUna pregunta, publicar un web service en internet para que sea accedido fuera de una intranet es muy complicado?
Que consideraciones técnicas hay que contemplar?
Gracias
hola Luis
ResponderEliminardepende, si vas a contratar un hosting donde publicar el servicio es simple
ahora si quieres crear tu propio hosting eso es mas complicado porque deberas abrir puertos y crear servicio de DNS, o sea llva algunas tareas adicionales de configuracion de la infraestructura que un hosting contratado ya tiene resuelto
saludos
Hola Leandro antes que nada recibe un saludo y un agradecimiento por tu tiempo, entonces si quisiera publicar mi WCF con la IP fija (previamente configurada y su respectivo puerto en IIS), tnego que configurar el DNS?,, lo pregunto porque de hecho ese problema lo tengo actualmente mi WCF funciona perfectamente (en localhost con el nombre de mi pc), pero al momento de publicarlo en IIS lo trata de buscar con el nombre del servidor y no tenemos dicho nombre realmente publicado o adquirido solo se trata del nombre del Servidor,,, ¿QUe opciones tengo en mi caso?
EliminarMuy buenos días disculpa necesito conecta mi web service con un programa y me pide un url y lo polo que me sale un erro como si mi url del web service es correcto
ResponderEliminarhola Alex
ResponderEliminarsi pones la url en el browser esta muestra la pagina por defecto del asmx?
recuerda que deberias poner en la url el nombre o ip de la pc remota donde esta el servicio, usar localhost no funciona desde otra pc
saludos
Hola Leandro.
ResponderEliminarUn favor,
¿Cómo puedo pasar este código de C# a vb.net?
Return _ListarClientes.Where(p => p.id = id).Select(p => String.Format("{0} {1}", p.Nombre, p.Apellido)).FirstOrDefault().ToString()
hola martin
ResponderEliminarpodria ser algo como esto
Return _ListarClientes.Where(Function(p) p.id = id).Select(Function(p) String.Format("{0} {1}", p.Nombre, p.Apellido)).FirstOrDefault().ToString()
saludos
Te agradezco la ayuda pero me manda el siguiente mensaje:
ResponderEliminar"Overload resolution failed because no accessible"
Es un ejercicio de WCF y esta es la funcion:
Public Function BuscarClientes(id As Integer) As Integer Implements IService1.BuscarClientes
Return _ListarClientes.Where(Function(p) p.id = id).Select(Function(p) String.Format("{0} {1}", p.Nombre, p.Apellido)).FirstOrDefault().ToString()
End Function
Saludos.
Saludos
ResponderEliminarCon el tip que me diste ya pude resolver el problema.
Un abrazo y gracias.
Hola Leandro
ResponderEliminargracias por compartir tus conocimientos y publicaciones.
la pregunta es la siguiente.
En visual studio.net. yo hice un proyecto de facturas para almacen, cree una aplicacion web ASP.NET hice las tres capas, logica del negocio, controladores y objetos, y puedo conectarme a la base de datos y hacer un CRUD.
Ahora referente a la publicacion yo quiero hacer el mismo proyecto pero con servicios web.
acaso creo un nuevo proyecto con la opcion que tiene .net....
y escojo framework 3.5,,, aplicacion de servicio web de ASP.NET. y dentro creo el CRUD las tres capas, y en una aplicacion web solo creo la interfaz y llamo los metodos que cree en el servicio web??
gracias
hola Ervin
ResponderEliminarpero vas a utilizar dos servidores diferentes uno para la parte de UI con aspx y otro para los servicio asmx ?
porque sino separar fisicamente las capas dejando por un lado la presentacion y por el otro el negocio y persisitencia no tendria sentido
vas a agregar complejidad innecesaria ya que el deploy lo harias en la misma pc
ahora si la idea es usar desde la UI controles ajax quizas con jquery o algun framework de MVVM como ser Knockout o AngularJs eso es otra cosa alli si esta bueno, es mas seria mejor usar Web API
a donde apunto es que si vas a usar un solo servidor web deja los proyectos todos juntos no desacoples fisicamente la presentacion del negocio sino es que alguna funcionalidad lo necesita
saludos
Gracias Leandro
ResponderEliminarme sirvio bastante
ResponderEliminarHola Leandro, De ante mano agradecerte por el contenido de tu blog, me ha facilitado varias soluciones.
ResponderEliminarAntes de leer este post ya había construido mi solución de servicio web, publico una lista de datos pero solo consumo uno, el ultimo de la lista.
Mi solución se conecta a una DB, y publica una lista de datos...en teoría, por que al revisar el asmx donde me muestra el XML que contruye solo veo los datos de un registro.
Agradezco me pudieras ayudar
try
{
comando = new SqlCommand("miStoreProcedure", miConexion.Conexion());
comando.CommandType = CommandType.StoredProcedure;
comando.Parameters.Add("@Parametro", SqlDbType.Int).Value = Valor;
reader = comando.ExecuteReader();
while (reader.HasRows)
{
while (reader.Read())
{
db = new ClsBasePrueba();
db.Codigo = Convert.ToInt32(reader["Codigo"]);
db.Titulo = Convert.ToString(reader["Titulo"]);
db.Desc = Convert.ToString(reader["Descripcion"]);
db.Estado = Convert.ToInt32(reader["Estado"]);
db.Id = Convert.ToInt32(reader["Id"]);
}
lst.Add(db);
reader.NextResult();
}
}
Parece que siempre se sobreescribe el registro....no ???
hola Dimitri
ResponderEliminares que deberias usar:
reader = comando.ExecuteReader();
while (reader.Read())
{
ClsBasePrueba db = new ClsBasePrueba();
db.Codigo = Convert.ToInt32(reader["Codigo"]);
db.Titulo = Convert.ToString(reader["Titulo"]);
db.Desc = Convert.ToString(reader["Descripcion"]);
db.Estado = Convert.ToInt32(reader["Estado"]);
db.Id = Convert.ToInt32(reader["Id"]);
lst.Add(db);
}
en cada loop del while creas una nueva instancia que agregas a la lista
saludos
Leandro gracias, me funciono perfecto...ahora tengo que revisar el servicio que consume los datos por que me da un error, voy a revisarlo y si no tal vez te vuelva a preguntar.
ResponderEliminarHola Leandro siempre con articulos interesantes, una pregunta tendras algun pequeño tutorial sobre wcf en alguna aplicacion con BD, saludos
ResponderEliminarhola nyvlem25
ResponderEliminarla verdad no he escrito para con WCF
aunque igualmente el uso de una db en un servidicio son temas independientes podrias acceder a la db con ado.net o quizas entity framework de la misma forma que lo haces para cualquier otra aplicacion
lo unico punto quizas a tener en cuanta podria ser que los datos que recuperas deberas convertirlos a la clase del DataContract que el servicio retorne, pero para esto podrias usar la libreria automapper
pero con conocer WCF lo de la db no lo afecta, la doc del msdn es muy completa
Windows Communication Foundation
saludos
hola necesito crear un servicio web que en c# regrese la ip, lo tengo que entregar en dentro de un par de horas y no se como hacerlo ya lo intente de mil maneras pero solo me sale el hola mundo porfavor ayudame
ResponderEliminarEstimado Leandro,
ResponderEliminarPrimero Felicitarte por el tiempo y la colaboracion que nos das a todos los que necesitamos de ayuda!
un favor podrias restablecer el proyecto de ejemplo para descargarlo
Gracias!!
hola Roger
ResponderEliminarpero el proyecto web de este articulo se puede descargar, esta publicado en onedrive
saludos
Buenas noches Leandro, te molesto porque tengo problemas al utilizar el webservice desde una aplicación ya publicada. Cuando la aplicación va a buscar los datos del ws el mismo informa el error: "The HTTP request is unauthorized with client authentication scheme 'Anonymous'. The authentication header received from the server was 'Negotiate,NTLM'." Este problema no lo tengo ejecutando el ws desde visual studio pero si una vez publicado, te agradezco la ayuda.
ResponderEliminarSaludos!
hola Noë
ResponderEliminarel problema seguramente se deba a como se definio la seguridad en el sitio, cuando se creo en el IIS
no se que version de windows usas, para saber asi la version del IIS, pero valida el tema de seguridad
iis autentication
saludos
Hola, buen post, pero no puedo descargar el archivo
ResponderEliminarhola miguel
ResponderEliminarque raro porque yo puedo acceder a OneDrive sin problemas
validaste ingresar desde otra red, porque se que a veces por temas de seguridad las empresas bloquean el acceso
saludos
Hola me puedes ayudar no se como crear un web services el cual sea consumido por una aplicacion de escritorio en c# para que a traves del web services almacene y se traiga datos de mi base de datos la cual estoy ejecutando en java y mi ambiente de trabajo es visual studio 2010
ResponderEliminarhola Luis
ResponderEliminarlo que planteas no se como podria responderlo porque seria una explciacion muy larga
quizas si acotas la pregunta a donde tienes problemas podriamos analizarlo
la creacion del web service lo realizo en este articulo, la conexion a los datos requiere que conozcas ado.net
para lo que de java quizas algo como esto ayude
Cómo consumir servicios web en .Net desde Netbeans
saludos
Hola Leandro me podrias ayudar con un problema lo que pasa es que ya tengo creado mi web services y ahora quiero que desde windows form en un boton agregar este agregue a la base de datos ya con el web services consumido me podrias ayudas te dejo mi gmail.
ResponderEliminarlouis.cubo@gmail.com
que tal Leandro, tengo problemas con un proyecto que realicé.
ResponderEliminarlo que pasa es que al publicar, me crea la carpeta pero al abrirla está vacia.
te ha sucedido en alguna ocasion?
hola
Eliminarentiendo que publicas usando la opcion del VS, la pregunta seria no se genera ningun error en la compilacion ?
porque si hay un error no se publicara nada
saludos
Hola Leandro, tenes algun ejemplo de contarse al web service de afip ? Gracias!
ResponderEliminarHola Leandro, tienes este Web Service en vb
ResponderEliminarhola,
Eliminarno lo tengo en vb.net, pero no deberia ser complejo convertir el codigo si usas
Code Convert
saludos
Hola Leandro, he terminado un proyecto EN ASP.NET MVC 4, y usa EF y SQL SERVER EXPRESS (localDB\v11.0), Podrias orientarme para publicar mi sitio en WINDOWS SERVER 2008.
ResponderEliminar-¿Debo crear mi BD Primero en Windows Server y tomar el conecction string para publicar mi sitio?
-¿Las Tablas se crean a partir del modelo edmx?
Soy nuevo en esto, si requiero un poco de orientación Saludos
hola
EliminarSeguramente debas crear la db en sql server usando la opcion "Generate Database Script from model" como se observa en la imagen
saludos
Hola Leandro, de ante mano muchas gracias por tomarte la molestia de leer mi comentario,
ResponderEliminarmi situación es la siguiente:
Tengo una aplicación muy grande y completa, la cual no desarrolle yo.
Soy recién egresado y tengo 3 semanas que conseguí mi primer empleo, y aquí es donde me dieron está aplicación web, para liberarla en el servidor de un cliente, pero antes tenía que probarla de forma local y verificar que funcionaba al 100, le salieron varios inconvenientes los cuales tuve que corregir.
Después de tener ya todas las correcciones y verificar que en visual studio 2012 funcionaba ya al 100%, la liberé en IIS, y es aquí que me genero un incoveniente.
La aplicación genera un reporte del usuario, lo convierte en PDF y lo manda a su correo, el servidor SMTP que tenía la aplicación el cual enviaba los correos, ya no estaba disponible, por lo cual creé una cuenta en gmail para la aplicación y que está enviara los correos, lo hice de manera diferente a como venía.
Entonces al liberarla en IIS me manda un mensaje cuando se está enviando el correo: "El servidor de correo falló, intentalo más tarde". pero lo mas curioso o más raro, es que al chechar la cuenta de correo del usuario y llega el correo con el reporte en PDF, y si le das aceptar al mensaje que aparece, empieza a envíar de nuevo el correo y vuelve a salir el mensaje y el correo vuelve a llegar al correo del usuario.
Decidí comentar los mensajes de alerta, y ahora lo que hace es actuilzarse la pagina y enviar correo uno tras otro, y no pasa a la siguiente pagina como debería de hacerlo, estó en IIS ya que al ejecutarlo directamente desde visual studio, no me genera ningún problema.
Es algo compliciado, no sé si me puedas dejar tu correo para poderte mandar capturas y etc.
y de ante mano GRACIAS, espero me puedas contestar por favor.
hola
Eliminarrevisaste los datos de configuracion de smtp para ver si tienes un servidor valido por donde enviar los mail?
podrias capturar el mensaje de error, con un try..catch y loguear el mensaje de error que se produce, el sea el Message ya que por lo que comentas parece ser que ante un error muestra un mensaje fijo y no el mensaje del problema que se genera en .net
no es cuestion de comentar la alerta, sino capturar el exception y ver el mensaje real del error
saludos
Buenas tardes. Voy a ser breve. Sucede que tengo ya publicado un proyecto MVC 4. (no está termiando) y aun hago modificaciones. El problema es que las carpetas Content y Scripts contienen bastante información. Al darle a la opcion publicar todo va correctamente pero me sube todo otra vez,,....y yo preferiria que solo subiera los archivos modificados. ¿Esto es posible? ...y si lo es ¿Cómo puedo hacerlo?. Gracias de antemano, la verdad que me ahorraria muchas horas poder conseguir algo asi.
ResponderEliminarEstimado Leandro,
ResponderEliminarTengo una duda sobre las mejor forma de conectar un sitio web (desarrollado en asp.net con vb) con la base de datos (SQL Server), mediante conexión directa a sql o por medio de web service.
hola
EliminarSi la db esta local en la misma red (o la misma pc) del servidor web (donde alojas el IIS) en ese caso la conexion que sea directa
Ahora si un cliente local en el cliente y la db esta remota y el acceso es por internet, en ese caso justifica que los datos los expongas por meiod de servicio web, para que el cliente los consuma
saludos
Hola Leandro;
ResponderEliminarEstoy viendo la posibilidad de agregar a mi pagina web la opcion de tomar las coordenadas gps desde el dispositivo que sea, tablet, celular (no es una app para smartphone) y que al seleccionar esa opcion envie las coordenadas de ese dispositivo (si tiene gps) a mi base de datos. Es posible? Muchas gracias.-
Saludos.-
hola
Eliminarpodrias tomar las coordenadas usando javascript o jquery y luego enviarlas al servidor mediante una llamada ajax al servidor
Using jQuery to Consume ASP.NET JSON Web Services
saludos
Muchas gracias Leandro. Lo estare probando y te aviso como me fue. Muchas gracias.-
Eliminarhola buenas noche un pregunta tengo un serrvicio web y quiero publicarlo en un servidor pero a la hora de hacerlo me aparecen varios warnings pero sin errores y no me lo publica, nose si haya alguna manera de poder publicarlo sin hacerle caso a los warnings. gracias saludos
ResponderEliminarPodria ser que no tengas el archivo Default.
EliminarQue tal Leandro como estas una pregunta.
ResponderEliminarHicimos un windows service para timbrado de facturas, este aplicativo consume un web service rest que es el encargado de timbrar las facturas, este es de un tercero, esta aplicacion ya la implementamos en un servidor con internet y funciona correctamente, pero ahora intentamos implementar este mismo windows service en un servidor que no tiene internet y que tiene todo restringido, para esto solicitamos que nos abrieran el puerto que usa nuestro servicio REST y este ya responde correctamente desde el explorador, pero aun con el puerto abierto no logramos establecer comunicacion con el servicio REST desde el windows service, este es el error que manda, There was no endpoint listening at https://factura.test.com.mx:XXXX/efacturaws/EfacturaService that could accept the message. This is often caused by an incorrect address or SOAP action. See InnerException, if present, for more details.
alguna idea de que este pasando o si hay algun puerto que se tenga que abrir y que no este contemplando?
saludos cordiales
JOSE LUIS
Buenas tardes,
ResponderEliminarDisculpa Leandro como puedo hacer para desde mi aplicacion web service crear una clase conexion y sus metodos para conectarme a una base de datos de mysql. Esto lo quiero hacer para consultar desde mi web service el login de mi aplicacion de escritorio. Lo deseo hacer de esa manera debido a que es un requerimiento especifico de un proyecto que me pidieron. Si me puderias guiar te estaria muy agradecido.
hola Leandro buenos dias tengo una duda , mira estoy desarrolando en vs 2015 y esta funcionando la solucion en IIS pero al hacer cambios me pega tambien en IIS y luego a los usuarios de la solucion les manda error por los cambios que hago, como hacer para que no suceda eso.
ResponderEliminarSaludos
Hola Leandro, buenas tardes
ResponderEliminarEspero puedas ayudarme, el webservice en el que estoy trabajando tiene dos métodos solamente, insertar y consultar datos en una BD (SQL) a un servidor externo, de forma local funciona correctamente(BD en mi equipo) pero al intentar usar ese servidor me manda el siguiente error:
System.ArgumentNullException: Value cannot be null.
Parameter name: composite at ServicioCC.ServicioCC.SetDatos(Dato[] Datos, String valor1, String valor2)
hola
EliminarValidaste que los datos que envias en el parametro Dato[] no tenga ningun null como valor? podrias poner algun break en el codigo he inspeccionar las variables que envias cuando invocas el SetDatos()
saludos
Hola Leandro
EliminarEl problema era una instrucción que estaba usando ese parámetro dentro de la función SetDatos(), gracias por tu respuesta.
Hola Leandro, buen día
ResponderEliminarTengo un problema con un web service, al momento de agregar la referencia del servicio se hace correctamente y se puede acceder a las clases y métodos del servicio, el problema al realizar la conexión muestra un error en System.ServiceModel.ClientBase.Channel el cual produce una excepción de tipo System.InvalidOperationExcpetion, y este es el mensaje que muestra la excepción ("Error al reflejar 'item'")
Espero puedas ayudarme, de antemano gracias.
Buen Día Leandro,
ResponderEliminarConsultarte un tema, tengo que unificar unos servicios web de asp net 2.0 de correos, por ello, estoy pensando hacerlo en WCF, sólo tengo una duda cuando migre a WCF los servicios, las aplicaciones clientes serán compatibles con el nuevo servicio?
Podría ocurrir un problema por el framework, ya que wcf es desde 3.5.
Quedo atento a tu ayuda.
Muchas Gracias.
Hola Leandro,mi caso, es que tengo un webservice que actualiza una base de datos con algunos parametros enviados, pero desde ese mismo webservice debo consumir otro publicado en una url diferente, y que actualiza una base de datos distinta. me podrias guiar como invoco al otro webservice? Gracias
ResponderEliminarBuen día Leandro.
ResponderEliminarPodrías guiarme en como consumir un WebService desde un dispositivo con Windows Mobile 6.x
Gracias.
Hola Leandro con el gusto de saludarte y preguntarte si es posible rellenar un numericupdown de ajax con un web service que consulta una vista al sql gracias un saludo.
ResponderEliminarBuenas tardes, como estas?
ResponderEliminarCuando publicas un WS hay posibilidad si el mismo tira error que se genere un listado de errores?
Buenos días Leandro, muchas gracias por tu blog, me ha sido de gran ayuda para intentar consumir un webservice local desde internet. Siguiendo tus indicaciones he configurado el IIS del equipo local (donde está físicamente el archivo wsdl) y he abierto los puertos correspondientes en mi router.
ResponderEliminarEl archivo wsdl parece que lo coge bien, ya que al hacer $soap->__getFunctions() me muestra el listado de las funciones del wsdl. También he comprobado que al poner en el navegador la dirección del wsdl, carga el contenido xml del mismo desde cualquier ubicación.
El problema me surge al llamar a cualquier método del webservice, me lanza error:
SoapFault exception: [HTTP] Could not connect to host in /home/accesoprqf/www/ws.php:109 Stack trace: #0 [internal function]: SoapClient->__doRequest('__call('InitializeDevic...', Array) #2 /home/accesoprqf/www/ws.php(109): SoapClient->InitializeDevice(Object(MyHeader))
Después de llamar al método, si hago $soap->__getLastRequest() me muestra " 201962x0 ", por lo que entiendo que sí envía la información. En cambio al hacer $soap->__getLastResponse() devuelve "NULL"
Te agradecería cualquier orientación que puedas darme. Soy novata en webservice y la verdad es que me estoy volviendo loca para hacerlo funcionar.
Hola Leandro, una consulta estoy invocando una web services en VS2008 Windows Form pero al importar la referencia en mi còdigo, no se muestra la web services agregada, dime se hace alguna configuracion en el App.Config ??
ResponderEliminarAgradeceria que me apoyes
hola, me gustaría saber si tienes algunos consejos para mejorar la calidad de seguridad del sitio web usando .net
ResponderEliminarHola Leandro buenas tardes, solicitando de tu ayuda, necesito consumir un web service sobre https, validando certificado ssl, tendrás algún paso a paso que pueda usar como ejemplo?
ResponderEliminarHola estoy uniendo dos proyectos web pero tengo varias dudas, una de ellas es como hago con el web config y la otra es que tengo un web service que se llama igual pero tienen funciones distintas
ResponderEliminarestoy trabajando con visual studio 2015
ResponderEliminarme podrias ayudar a resolver como publicar un proyecto mvc c# y poder acceder desde ptra maquina
ResponderEliminarBuenas Leandro, mi nombre es José, siempre he trabajado con equipos IBM, Mainframe y Power-i. Cuando aprendí VS, fue en el 2008, y nunca lo use. Ahora estoy sin trabajo, y me puse a reaprender VS-C#. Realice una pequeña aplicación para probar, esto con ayuda de unos amigos que me iban guiando (donde trabaje). La aplicación esta en VS-2015, uso 5 capas, una de las cuales es de WCF, y se comunica a SQL-server 2016. En local funciona bien. El problema es al momento de subirla a un servidor web, utilizo file system y los subo con FTP. Subo los servicios primero y los alojo en un directorio de la aplicación en el servidor web (se pueden ver), y luego subo la aplicación a la raíz, pero al momento de llamar la aplicación no funciona. Llevo con esto varias semanas y a las personas (conocidos) que les solicito ayuda no me la han brindado. Como en esto no tengo mucha experiencia no se como solucionarlo, he leído y visto videos, pero ninguno indica nada al respecto. Agradecería si me puede ayudar.
ResponderEliminarHola Leandro, tengo una consulta... He desarrollado un proyecto asp.net C# en VS2017 que se conecta a mi bd SQL2012 , lo que hace mi proyecto es usar un reporte de Crystal y generar las boletas de los empleados descargandolo en formato PDF, hasta ahi todo funciona correctamente pero a la hora de llevar mi proyecto a otra laptop para seguir trabajando... cuando ejecuto en la parte en donde paso los parametros al crystal me sale el sgte error (CrystalDecisions.CrystalReports.Engine.ParameterFieldCurrentValueException: 'Faltan los valores del parámetro.') .. Cosa que no entiendo porque en mi laptop funciona normal pero al llevar mi proyecto a otra laptop no. Por favor agradeceria mucho si puedes ayudarme
ResponderEliminarHola a todos, le comento tengo un proyecto bien sencillo que es de un web service hecho en visual studio c# y mi motor de base datos sql server management 2017 y todo corre bien en cuanto lo hago de mi mismo proyecto pero a la hora de subirlo y visualizar los datos no puedo y me arroja este error: System.Data.SqlClient.SqlException: No se puede abrir la base de datos "PruebaBD" solicitada por el inicio de sesión. Error de inicio de sesión.
ResponderEliminarError de inicio de sesión del usuario 'IIS APPPOOL\Web service prueba', agradecería mucho que me ayudaran con esto, muchas gracias por su atencion
Leandro recibe un saludo, tengo una duda, de que manera puedo ver el soap que envio? es decir como puedo guardar el encabezado y mensaje que envío en el WS para poder depurar.
ResponderEliminar