Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
La cadena de consulta es la parte de una dirección URL que comienza con un signo de interrogación (?) que contiene información arbitraria en el formato name=value. Supongamos que tiene una aplicación ClickOnce denominada WindowsApp1 que hospeda en servernamey desea pasar un valor para la variable username cuando se inicia la aplicación. La dirección URL podría ser similar a la siguiente:
http://servername/WindowsApp1.application?username=joeuser
Los dos procedimientos siguientes muestran cómo usar una aplicación ClickOnce para obtener información de cadena de consulta.
Nota:
Solo puede pasar información en una cadena de consulta cuando la aplicación se inicia mediante HTTP, en lugar de usar un recurso compartido de archivos o el sistema de archivos local.
El primer procedimiento muestra cómo la aplicación ClickOnce puede usar un pequeño fragmento de código para leer estos valores cuando se inicia la aplicación.
El siguiente procedimiento muestra cómo configurar la aplicación ClickOnce mediante MageUI.exe para que pueda aceptar parámetros de cadena de consulta. Tendrá que hacerlo cada vez que publique la aplicación.
Nota:
Consulte la sección "Seguridad" más adelante en este tema antes de tomar una decisión de habilitar esta característica.
Para obtener información sobre cómo crear una implementación de ClickOnce mediante Mage.exe o MageUI.exe, consulte Tutorial: Implementación manual de una aplicación ClickOnce.
Nota:
A partir de .NET Framework 3.5 SP1, es posible pasar argumentos de línea de comandos a una aplicación ClickOnce sin conexión. Si desea proporcionar argumentos a la aplicación, puede pasar parámetros al archivo de acceso directo con .APPREF-MS extensión.
Para obtener información de la cadena de consulta desde una aplicación ClickOnce
Coloque el código siguiente en el proyecto. Para que este código funcione, deberá tener una referencia a System.Web y agregar las directivas
usingoImportspara System.Web, System.Collections.Specialized y System.Deployment.Application.Nota:
La <xref:System.Deployment.Application.ApplicationDeployment> clase y las API del <xref:System.Deployment.Application> espacio de nombres no se admiten en .NET Core y .NET 5 ni en versiones posteriores. En .NET 7, se admite un nuevo método de acceso a las propiedades de implementación de aplicaciones. Para obtener más información, consulte Access ClickOnce deployment properties in .NET (Acceso a las propiedades de implementación de ClickOnce en .NET). .NET 7 no admite el equivalente de los métodos ApplicationDeployment.
private NameValueCollection GetQueryStringParameters() { NameValueCollection nameValueTable = new NameValueCollection(); if (ApplicationDeployment.IsNetworkDeployed) { string queryString = ApplicationDeployment.CurrentDeployment.ActivationUri.Query; nameValueTable = HttpUtility.ParseQueryString(queryString); } return (nameValueTable); }Llame a la función definida anteriormente para recuperar un Dictionary de los parámetros de cadena de consulta, indizado por nombre.
Para habilitar el paso de la cadena de consulta en una aplicación ClickOnce con MageUI.exe
Abra el símbolo del sistema .NET y escriba:
MageUIEn el menú Archivo , seleccione Abrir y abra el manifiesto de implementación de la aplicación ClickOnce, que es el archivo que termina en la
.applicationextensión.Seleccione el panel Opciones de implementación en la ventana de navegación de la izquierda y active la casilla Permitir que se pasen los parámetros url a la aplicación .
En el menú Archivo , seleccione Guardar.
Nota:
Como alternativa, puede habilitar el paso de la cadena de consulta en Visual Studio. Active la casilla Permitir que los parámetros de URL se pasen a la aplicación, que se encuentra al abrir Propiedades del proyecto, seleccionar la pestaña Publicar, hacer clic en el botón Opciones y, a continuación, seleccionar Manifiestos.
Nota:
En ClickOnce para .NET Core 3.1 y versiones posteriores de .NET 5, establezca las propiedades de implementación mediante la herramienta de publicación en lugar del asistente de publicación y la página de publicación del Diseñador de proyectos. Para obtener más información, consulte Implementación de una aplicación windows de .NET con ClickOnce y ClickOnce para .NET.
Programación sólida
Al usar parámetros de cadena de consulta, debe tener en cuenta detenidamente cómo se instala y activa la aplicación. Si la aplicación está configurada para instalarse en el equipo del usuario desde la Web o desde un recurso compartido de red, es probable que el usuario active la aplicación solo una vez a través de la dirección URL. Después, el usuario normalmente activará la aplicación mediante el acceso directo en el menú Inicio . Como resultado, se garantiza que la aplicación reciba argumentos de cadena de consulta solo una vez durante su vigencia. Si decide almacenar estos argumentos en el equipo del usuario para utilizarlos en el futuro, es responsable de almacenarlos de forma segura y protegida.
Si la aplicación solo está en línea, siempre se activará a través de una dirección URL. Sin embargo, incluso en este caso, la aplicación debe escribirse para funcionar correctamente si faltan parámetros de cadena de consulta o están dañados.
Seguridad de .NET Framework
Permita pasar parámetros de URL a su aplicación ClickOnce solo si tiene previsto sanear la entrada para eliminar cualquier carácter malicioso antes de usarla. Una cadena incrustada con comillas, barras diagonales o punto y coma, por ejemplo, podría realizar operaciones de datos arbitrarias si se usa sin filtrar en una consulta SQL en una base de datos. Para obtener más información sobre la seguridad de las cadenas de consulta, consulte Introducción a las vulnerabilidades de seguridad de script.