Recuperar informações de cadeia de consulta em um aplicativo ClickOnce online
A cadeia de caracteres de consulta é a parte de uma URL que começa com um ponto de interrogação (?) que contém informações arbitrárias no formato nome=valor. Suponha que você tenha um aplicativo ClickOnce chamado WindowsApp1
hospedado em servername
e deseja passar um valor para a variável username
quando o aplicativo é iniciado. A URL pode ser algo semelhante ao seguinte:
http://servername/WindowsApp1.application?username=joeuser
Os dois procedimentos a seguir mostram como usar um aplicativo ClickOnce para obter informações da cadeia de caracteres de consulta.
Observação
Você só pode passar informações em uma cadeia de caracteres de consulta quando o aplicativo está sendo iniciado usando HTTP, em vez de usar um compartilhamento de arquivo ou o sistema de arquivos local.
O primeiro procedimento mostra como o aplicativo ClickOnce pode usar uma pequena parte do código para ler esses valores quando é iniciado.
O próximo procedimento mostra como configurar um aplicativo ClickOnce usando MageUI.exe para que ele possa aceitar parâmetros de cadeia de caracteres de consulta. Você precisará fazer isso sempre que publicar o aplicativo.
Observação
Consulte a seção "Segurança" mais adiante neste tópico antes de tomar a decisão de habilitar esse recurso.
Para obter informações sobre como criar uma implantação do ClickOnce usando Mage.exe ou MageUI.exe, consulte Passo a passo: implantar manualmente um aplicativo ClickOnce.
Observação
Começando no .NET Framework 3.5 SP1, é possível passar argumentos de linha de comando para um aplicativo ClickOnce offline. Para fornecer argumentos para o aplicativo, você pode passar parâmetros para o arquivo de atalho com a extensão .APPREF-MS.
Para obter informações sobre a cadeia de caracteres de consulta de um aplicativo ClickOnce
Coloque o código a seguir no projeto. Para que o código funcione, você precisará ter uma referência a System.Web e adicionar diretivas
using
ouImports
para System.Web, System.Collections.Specialized e System.Deployment.Application.Observação
A classe ApplicationDeployment e as APIs no namespace System.Deployment.Application não têm suporte no .NET Core e no .NET 5 e versões posteriores. No .NET 7, há suporte para um novo método de acesso às propriedades de implantação de aplicativos. Para obter mais informações, consulte Acessar propriedades de implantação do ClickOnce no .NET. O .NET 7 não oferece suporte ao equivalente aos 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); }
Chame a função definida anteriormente para recuperar um Dictionary dos parâmetros de cadeia de caracteres de consulta, indexados por nome.
Para habilitar que a passagem da cadeia de caracteres de consulta em um aplicativo ClickOnce com MageUI.exe
Abra o Prompt de Comando do .NET e digite:
MageUI
No menu Arquivo, selecione Abrir e abra o manifesto de implantação do aplicativo ClickOnce, que é o arquivo que termina na extensão
.application
.Selecione o painel Opções de Implantação na janela de navegação à esquerda e marque a caixa de seleção Permitir que os parâmetros de URL sejam passados para o aplicativo.
No menu Arquivo, selecione Salvar.
Observação
Como alternativa, você pode habilitar a passagem de cadeia de caracteres de consulta no Visual Studio. Marque a caixa de seleção Permitir que parâmetros da URL sejam passados para o aplicativo, que pode ser encontrada abrindo as Propriedades do Projeto, selecionando a guia Publicar, clicando no botão Opções e selecionando Manifestos.
Observação
No ClickOnce para .NET Core 3.1 e .NET 5 ou posterior, você define propriedades de implantação usando a ferramenta Publicar, em vez do Assistente de Publicação, e a página Publicar do Designer de Projeto. Para obter mais informações, consulte Implantar um aplicativo .NET do Windows usando ClickOnce e ClickOnce para .NET.
Programação robusta
Quando usa parâmetros de cadeia de caracteres de consulta, você precisa considerar atentamente como o aplicativo é instalado e ativado. Se o aplicativo estiver configurado para ser instalado no computador do usuário da Web ou de um compartilhamento de rede, é provável que o usuário o ative apenas uma vez por meio da URL. Depois disso, o usuário geralmente ativará seu aplicativo usando o atalho no menu Iniciar. Como resultado, o aplicativo certamente receberá argumentos de cadeia de caracteres de consulta apenas uma vez durante seu tempo de vida. Se você optar por armazenar esses argumentos no computador do usuário para uso futuro, será responsável por armazená-los de maneira segura.
Se o aplicativo estiver apenas online, ele sempre será ativado por meio de uma URL. Mesmo nesse caso, no entanto, o aplicativo precisa ser escrito de modo a funcionar corretamente se os parâmetros de cadeia de caracteres de consulta estiverem ausentes ou corrompidos.
Segurança do .NET Framework
Permita a passagem de parâmetros de URL para o aplicativo ClickOnce somente se você planeja limpar a entrada de caracteres mal-intencionados antes de usá-la. Uma cadeia de caracteres inserida com aspas, barras ou ponto-e-vírgula, por exemplo, poderá executar operações de dados arbitrárias se usada sem filtro em uma consulta SQL em um banco de dados. Para obter mais informações sobre a segurança da cadeia de caracteres de consulta, consulte Visão geral de explorações de script.