Problemas al iniciar proyectos Silverlight y SketchFlow

martes, 14 de septiembre de 2010

The specified solution configuration "Debug|HPD" is invalid.

Este error según lo que encontré en se da al compilar un proyecto silverlight y Sketchflow por primera vez.

Un error me asusto ya que estaba realizando un ejemplo de SketchFlow.

La solución:

Ir al Registro regedit.exe y acceder a la dirección: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment

image

Ahí borramos la clave Platform, se cierra el regedit y reiniciamos la maquina.

image

Al iniciar nuevamente el Blend 4 compilará perfectamente.

Implementar seguridad en Servicio Web C#

miércoles, 5 de mayo de 2010

Los encabezados SOAP nos dan un método para pasar datos a un método de Web Service XML y obtener datos del mismo, siempre y cuando los datos no sean usados en la funcionalidad principal del método. En esta entrada vamos a ver como implementar una solución para brindar seguridad a nuestros Web Services realizados en la plataforma .NET.

Para entender un poco mas a lo que llegaremos veamos que nos dice MSDN sobre SoapHeader: La comunicación con un método de servicio Web XML mediante SOAP sigue un formato estándar. Parte de este formato son los datos que se codifican en un documento XML. El documento XML consta de una etiqueta Envelope que, a su vez, consta de un elemento requerido Body y un elemento opcional Header. El elemento Body incluye los datos específicos del mensaje. El elemento opcional Header puede contener información adicional no relacionada directamente con el mensaje específico. Cada elemento secundario del elemento Header se denomina encabezado SOAP.

Vamos a darle un poco de seguridad al método mas difundido y conocido por todos HelloWorld().

Primero vamos a crear un proyecto de tipo web. en el vamos a crear un clase, esta va a representar los parámetros del encabezado soap, en nuestro caso el nombre de usuario y la clave. Esta clase va ha derivar de la SoapHeader perteneciente a el espacio de nombre System.Web.Services.Protocols

    /// <summary>
    /// Clase que se encarga de contener las credenciales de autenticación: Usuario y Clave
    /// </summary>
    public class Autenticacion : SoapHeader
    {
        private string sUserPass;
        private string sUserName;

        /// <summary>
        /// Lee o escribe la clave del usuario
        /// </summary>
        public string UsuarioClave
        {
            get
            {
                return sUserPass;
            }
            set
            {
                sUserPass = value;
            }
        }

        /// <summary>
        /// Lee o escribe el nombre del usuario
        /// </summary>
        public string UsuarioNombre
        {
            get
            {
                return sUserName;
            }
            set
            {
                sUserName = value;
            }
        }
    }


Luego creamos la clase ServicioSeguro que va a contener una referencia a la clase Autenticacion en conclusión va a tener la información del usuario. Esta clase va a derivar de WebService que pertenece a el espacio de nombre System.Web.Services. De esta clase derivan todos nuestros Web Services

    /// <summary>
    /// Contiene la referencia a la clase Autenticacion
    /// </summary>
    public class ServicioSeguro : WebService
    {
        public Autenticacion CredencialAutenticacion;
    }


Luego agregamos un Web Service llamado wsSeguridad.asmx. Como ya les había recordado los web services que hacemos heredan de WebService. Cambiamos a que derive de la clase ServicioSeguro que creamos anteriormente, no perderemos la funcionalidad ya que esta clase deriva de WebService. Recordar que SoapHeader perteneciente a el espacio de nombre System.Web.Services.Protocols

    /// <summary>
    /// Servicio de prueba
    /// </summary>
    [WebService(Namespace = "http://tempuri.org/SecureWebService/SecureWebService")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    public class wsSeguridad : ServicioSeguro
    {
        /// <summary>
        /// Metodo de prueba.
        /// </summary>
        /// <returns>"Hello World si esta autenticado y puede consumir el WS, NONOO si sus credenciales no son validas"</returns>
        [WebMethod, SoapHeader("CredencialAutenticacion")]
        public string HelloWorld()
        {
            if (VerificarPermisos(CredencialAutenticacion))
            {
                return "Hello World";
            }
            else
            {
                return "NONOO";
            }
        }
        public static Boolean VerificarPermisos(Autenticacion value)
        {
            if (value == null)
            {
                return false;
            }
            else
            {
                //Verifica los permiso Ej. Consulta a BD
                if (value.UsuarioNombre == "user" && value.UsuarioClave == "pwd")
                {
                    return true;
                }
                else
                {
                    return false;
                }
            }
        }
    }


Ahora realicemos una pagina para probar la seguridad de nuestro servicio.

    public partial class pruebas : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                wsSeguridad ws = new wsSeguridad();

                Autenticacion auten = new Autenticacion();

                auten.UsuarioNombre = "user";
                auten.UsuarioClave = "pwd2";

                ws.CredencialAutenticacion = auten;

                Response.Write(ws.HelloWorld());
            }
        }
    }

Problemas de conexión a Oracle con Visual Studio .Net 2010 framework 3.5

viernes, 30 de abril de 2010

Ha tenido problema con la instalación de Oracle Client sobre el sistema operativo W7.


Solución


Descargue desde www.oracle.com la versión de Oracle Client “10203_vista_w2k8_x86_production_client“.
Por defecto Oracle se instala en una carpeta en C://Oracle, cree usted la carpeta y agréguele los permisos para todos.
Ejecute la aplicación danto clic derecho en solucionar problemas de compatibilidad
or1
Luego seleccione el “programa de solución de problemas”
Le aparece unas opciones de chequeo seleccioné “El programa funcionaba en versiones anteriores de Windows pero ahora no se instala ni se ejecuta” y “El programa requiere permisos adicionales” de siguiente.
or1
En esta nueva pantalla selecciones Windows vista (Service pack 1).
or1
Dele siguiente y seleccione Iniciar Programa.
or1

Presentacion

viernes, 23 de abril de 2010

Bueno esto es como para romper el hielo, soy Robert Pineda, vivo en bogota Colombia. he inicio este blog para poder ayudar a las personas con temas que para mi son familiares.

Nos veremos en estos dias. con mi primer post.