none
Leer un Puerto Serial COM en una aplicacion WPF, C#, XBAP en el navegador RRS feed

  • Pregunta

  • Buenas tardas, espero alguien pueda Ayudarme.

    Estoy implementando una aplicación con WPF, C#  y XBAT para que se ejecute desde un Navegador; Necesito leer datos de un puerto Serial COM; Si ejecuto el proyecto localmente en mi equipo de desarrollo reconoce los puertos, se conecta y lee; pero si lo publico en el IIS y lo accedo desde un navegador, solo me reconoce los puerto pero al tratar de conectarse genera un error de permisos

    System.Security.SecurityException: Error de solicitud de permiso de tipo ‘System.Security.Permissions.SecurityPermission, mscorlid,Version=4.0.0.0. Culture…..’

    ..

    System.Security.CodeAccessSecurityEngine.Check(CodeAccessPerission…

    En System.Security.CodeAccessPermission.Demand()

    En System.IO.Ports.SerialPort.Open()

    ….

    Su ayuda por favor, debo asignar algún tipo de permiso en la aplicación?, es tema configuración en el IIS?.

    miércoles, 4 de julio de 2018 20:13

Respuestas

  • Te has topado con los permisos de CAS. Cuando el XBAP se lanza desde un navegador, aplica por defecto los permisos de la zona Internet, que son muy restringidos en cuanto a acceder al hardware de la máquina (para que no te metan por esa vía un ataque al navegar por sitios de Internet).

    Para habilitar permisos elevados, puedes firmar la aplicación con un certificado de firma de código (que tiene que ser reconocido por los equipos de destino). Hay un paso-a-paso (un poco antiguo) que lo hace con un certificado auto-firmado aquí:

    http://blogs.microsoft.co.il/maxim/2008/03/05/how-to-run-wpf-xbap-as-full-trust-application/

    Alternativamente, si es para una intranet, podrías aplicar una política de CAS personalizada:

    https://bombayboy.wordpress.com/2006/08/30/wpf-browser-hosted-applications-xbap-aptcafriend-assembly/

    En cualquiera de los casos, verás que hay que "hacer cosas" en los equipos de destino desde los que se navega a la aplicación. No puedes aspirar a que este comportamiento se pueda cambiar tocando únicamente las cosas que están "en tu extremo" (el programa y el IIS) porque eso supondría un peligro en Internet (imagínate que según vas navegando por distintos sitios web de repente una página se pone a acceder a los puertos de tu equipo...).

    miércoles, 4 de julio de 2018 21:52
    Moderador

Todas las respuestas