Aracılığıyla paylaş


Çevrimiçi bir ClickOnce uygulamasında sorgu dize bilgilerini alma

Sorgu dizesi, ad=değer biçiminde rastgele bilgiler içeren bir soru işareti (?) ile başlayan URL'nin bölümüdür. üzerinde servernamebarındırdığınız adlı WindowsApp1 bir ClickOnce uygulamanız olduğunu ve uygulama başlatıldığında değişkeni username için bir değer geçirmek istediğinizi varsayalım. URL'niz aşağıdaki gibi görünebilir:

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

Aşağıdaki iki yordamda sorgu dizesi bilgilerini almak için ClickOnce uygulamasının nasıl kullanılacağı gösterilmektedir.

Not

Sorgu dizesindeki bilgileri, dosya paylaşımı veya yerel dosya sistemi kullanmak yerine yalnızca uygulamanız HTTP kullanılarak başlatılırken geçirebilirsiniz.

İlk yordamda ClickOnce uygulamanızın uygulama başlatıldığında bu değerleri okumak için küçük bir kod parçasını nasıl kullanabileceği gösterilir.

Sonraki yordamda, sorgu dizesi parametrelerini kabul edebilmesi için MageUI.exe kullanarak ClickOnce uygulamanızı yapılandırma işlemi gösterilmektedir. Uygulamanızı her yayımladığınızda bunu yapmanız gerekir.

Not

Bu özelliği etkinleştirmeye karar vermeden önce bu konunun devamında yer alan "Güvenlik" bölümüne bakın.

Mage.exe veya MageUI.exe kullanarak ClickOnce dağıtımı oluşturma hakkında bilgi için bkz. İzlenecek yol: ClickOnce uygulamasını el ile dağıtma.

Not

.NET Framework 3.5 SP1'den başlayarak, komut satırı bağımsız değişkenlerini çevrimdışı bir ClickOnce uygulamasına geçirmek mümkündür. Uygulamaya bağımsız değişkenler sağlamak istiyorsanız, ile kısayol dosyasına parametreleri geçirebilirsiniz. APPREF-MS uzantısı.

ClickOnce uygulamasından sorgu dizesi bilgilerini almak için

  1. Aşağıdaki kodu projenize yerleştirin. Bu kodun çalışması için System.Web'e bir başvurunuz olması ve System.Web, System.Collections.Specialized ve System.Deployment.Application için veya Imports yönergeleri eklemeniz using gerekir.

    Not

    ApplicationDeployment Ad alanı içindeki System.Deployment.Application sınıf ve API'ler .NET Core ve .NET 5 ve sonraki sürümlerde desteklenmez. .NET 7'de, uygulama dağıtım özelliklerine erişmek için yeni bir yöntem desteklenir. Daha fazla bilgi için bkz . .NET'te ClickOnce dağıtım özelliklerine erişme. .NET 7, ApplicationDeployment yöntemlerinin eşdeğerini desteklemez.

    private NameValueCollection GetQueryStringParameters()
    {
        NameValueCollection nameValueTable = new NameValueCollection();
    
        if (ApplicationDeployment.IsNetworkDeployed)
        {
            string queryString = ApplicationDeployment.CurrentDeployment.ActivationUri.Query;
            nameValueTable = HttpUtility.ParseQueryString(queryString);
        }
    
        return (nameValueTable);
    }
    
  2. Daha önce tanımlanan işlevi çağırarak ada göre dizine alınmış sorgu dizesi parametrelerinden birini Dictionary alın.

MageUI.exe ile bir ClickOnce uygulamasında sorgu dizesi geçirmeyi etkinleştirmek için

  1. .NET Komut İstemi'ni açın ve şunu yazın:

    MageUI
    
  2. Dosya menüsünde Aç'ı seçin ve uzantıyla biten dosya olan ClickOnce uygulamanızın dağıtım bildirimini .application açın.

  3. Sol gezinti penceresinde Dağıtım Seçenekleri panelini seçin ve URL parametrelerinin uygulamaya geçirilmesine izin ver onay kutusunu seçin.

  4. Dosya menüsünde Kaydet'i seçin.

Not

Alternatif olarak, Visual Studio'da sorgu dizesi geçirmeyi etkinleştirebilirsiniz. Url parametrelerinin uygulamaya geçirilmesine izin ver onay kutusunu seçin. Bu onay kutusunu bulmak için Proje Özellikleri'ni açın, Yayımla sekmesini seçin, Seçenekler düğmesine tıklayın ve bildirimler'i seçin.

Not

.NET Core 3.1 ve .NET 5 veya üzeri için ClickOnce'da, Yayımlama sihirbazı ve Project Tasarım Aracı Yayımla sayfası yerine Yayımla aracını kullanarak dağıtım özelliklerini ayarlarsınız. Daha fazla bilgi için bkz. .NET için ClickOnce ve ClickOnce kullanarak bir .NET Windows uygulaması dağıtma.

Sağlam programlama

Sorgu dizesi parametrelerini kullandığınızda, uygulamanızın nasıl yüklendiğine ve etkinleştirildiğine dikkat etmeniz gerekir. Uygulamanız kullanıcının bilgisayarına Web'den veya bir ağ paylaşımından yüklenecek şekilde yapılandırılmışsa, kullanıcının uygulamayı URL üzerinden yalnızca bir kez etkinleştirmesi olasıdır. Bundan sonra, kullanıcı genellikle Başlat menüsündeki kısayolu kullanarak uygulamanızı etkinleştirir. Sonuç olarak, uygulamanızın sorgu dizesi bağımsız değişkenlerini ömrü boyunca yalnızca bir kez alması garanti edilir. Bu bağımsız değişkenleri gelecekte kullanmak üzere kullanıcının makinesinde depolamayı seçerseniz, bunları güvenli ve güvenli bir şekilde depolamak sizin sorumluluğundadır.

Uygulamanız yalnızca çevrimiçiyse, her zaman bir URL aracılığıyla etkinleştirilir. Ancak bu durumda bile sorgu dizesi parametreleri eksik veya bozuksa uygulamanızın düzgün çalışması için yazılması gerekir.

.NET Framework güvenliği

ClickOnce uygulamanıza URL parametrelerinin geçirilmesine izin vermek için, bunu kullanmadan önce kötü amaçlı karakterlerin girişini temizlemeyi planlıyorsanız izin verin. Örneğin tırnak işaretleri, eğik çizgiler veya noktalı virgüllerle eklenmiş bir dize, sql sorgusunda veritabanına karşı filtrelenmemiş olarak kullanıldığında rastgele veri işlemleri gerçekleştirebilir. Sorgu dizesi güvenliği hakkında daha fazla bilgi için bkz . Betik açıklarına genel bakış.