방법: 온라인 ClickOnce 응용 프로그램에서 쿼리 문자열 정보 검색

쿼리 문자열은 URL의 일부로서 name=value 형태로 임의의 정보를 포함하며 물음표(?)로 시작합니다. servername에 호스팅한 WindowsApp1이라는 ClickOnce 응용 프로그램이 있고, 응용 프로그램을 시작할 때 username이라는 변수에 값을 전달하려는 경우를 생각해 볼 수 있습니다. URL은 다음과 같습니다.

https://servername/WindowsApp1.application?username=joeuser

다음 두 절차에서는 ClickOnce 응용 프로그램을 사용하여 쿼리 문자열 정보를 얻는 방법을 보여 줍니다.

참고

파일 공유나 로컬 파일 시스템 대신 HTTP를 사용하여 응용 프로그램을 시작하는 경우 쿼리 문자열의 정보만 전달할 수 있습니다.

첫 번째 절차에서는 ClickOnce 응용 프로그램을 시작할 때 간단한 코드를 사용하여 이러한 값을 읽는 방법을 보여 줍니다.

두 번째 절차에서는 쿼리 문자열 매개 변수를 전달받을 수 있도록 MageUI.exe를 사용하여 ClickOnce 응용 프로그램을 구성하는 방법을 보여 줍니다. 이 작업은 응용 프로그램을 게시할 때마다 수행해야 합니다.

참고

이 기능을 활성화하도록 결정하기 전에 이 항목의 뒷부분에 나오는 "보안" 단원을 참조하십시오.

Mage.exe 또는 MageUI.exe를 사용하여 ClickOnce 배포를 만드는 방법에 대한 자세한 내용은 연습: ClickOnce 응용 프로그램 수동 배포를 참조하십시오.

참고

.NET Framework 3.5 SP1부터는 오프라인 ClickOnce 응용 프로그램에 명령줄 인수를 전달할 수 있습니다. 응용 프로그램에 인수를 제공하려면 확장명이 .APPREF-MS인 바로 가기 파일에 매개 변수를 전달할 수 있습니다.

ClickOnce 응용 프로그램에서 쿼리 문자열 정보를 가져오려면

  1. 프로젝트 안에 다음 코드를 배치합니다. 이 코드가 작동하려면 System.Web에 대한 참조가 있어야 하고 System.Web, System.Collections.Specialized 및 System.Deployment.Application에 대한 using 또는 Imports 문을 추가해야 합니다.

    Private Function GetQueryStringParameters() As NameValueCollection
        Dim NameValueTable As New NameValueCollection()
    
        If (ApplicationDeployment.IsNetworkDeployed) Then
            Dim QueryString As String = ApplicationDeployment.CurrentDeployment.ActivationUri.Query
            NameValueTable = HttpUtility.ParseQueryString(QueryString)
        End If
    
        GetQueryStringParameters = NameValueTable
    End Function
    
    private NameValueCollection GetQueryStringParameters()
    {
        NameValueCollection nameValueTable = new NameValueCollection();
    
        if (ApplicationDeployment.IsNetworkDeployed)
        {
            string queryString = ApplicationDeployment.CurrentDeployment.ActivationUri.Query;
            nameValueTable = HttpUtility.ParseQueryString(queryString);
        }
    
        return (nameValueTable);
    }
    
  2. 앞서 정의한 함수를 호출하여 쿼리 문자열 매개 변수에서 이름을 기준으로 인덱싱된 Dictionary를 검색합니다.

MageUI.exe를 사용하여 ClickOnce 응용 프로그램에 쿼리 문자열을 전달하려면

  1. .NET 명령 프롬프트를 열고 다음을 입력합니다.

    MageUI
    
  2. 파일 메뉴에서 열기를 선택하고 .application 확장명으로 끝나는 파일인 ClickOnce 응용 프로그램의 배포 매니페스트를 엽니다.

  3. 왼쪽에 있는 탐색 창에서 배포 옵션 패널을 선택하고 응용 프로그램으로 URL 매개 변수가 전달되도록 허용 확인란을 선택합니다.

  4. 파일 메뉴에서 저장을 선택합니다.

참고

또는 Visual Studio에 쿼리 문자열을 전달할 수도 있습니다. 응용 프로그램으로 URL 매개 변수가 전달되도록 허용 확인란을 선택합니다. 이 확인란은 프로젝트 속성을 열고 게시 탭을 선택한 다음 옵션 단추를 클릭하고 매니페스트를 선택하면 있습니다.

강력한 프로그래밍

쿼리 문자열 매개 변수를 사용할 경우에는 응용 프로그램이 설치 및 활성화된 방법을 주의 깊게 고려해야 합니다. 응용 프로그램이 웹이나 네트워크 공유에서 사용자 컴퓨터에 설치되도록 구성된 경우 사용자는 URL을 통해 한 번만 응용 프로그램을 활성화할 수 있습니다. 그 후에는 일반적으로 시작 메뉴의 바로 가기를 사용하여 응용 프로그램을 활성화합니다. 따라서 응용 프로그램에서는 해당 응용 프로그램의 수명이 지속되는 동안 한 번만 쿼리 문자열 인수를 받을 수 있습니다. 이러한 인수를 나중에 사용할 수 있도록 사용자의 컴퓨터에 저장할 경우에는 안전한 방식으로 저장해야 합니다.

온라인 전용인 응용 프로그램은 항상 URL을 통해 활성화됩니다. 그러나 이 경우 쿼리 문자열 매개 변수가 없거나 손상되었더라도 응용 프로그램이 제대로 작동하도록 작성해야 합니다.

보안

사용하기 전에 악의적인 입력 문자를 지우려는 경우에만 ClickOnce 응용 프로그램에 URL 매개 변수가 전달되도록 허용해야 합니다. 예를 들어, 데이터베이스에 대한 SQL 쿼리에서 따옴표, 슬래시, 세미콜론 등과 함께 포함된 문자열을 필터링되지 않은 상태로 사용하면 의도되지 않은 데이터 작업이 수행될 수 있습니다. 쿼리 문자열 보안에 대한 자세한 내용은 스크립트 악용 개요를 참조하십시오.

참고 항목

개념

ClickOnce 응용 프로그램 보안