Nasıl yapılır: sorgu dizesi bir çevrimiçi ClickOnce uygulama bilgilerini almak
Sorgu dizesi name=value formunda rastgele bilgileri içeren ve soru işareti (?) ile başlayan bir URL bölümüdür. servername üzerinde tuttuğunuz WindowsApp1 olarak adlandırılan bir ClickOnce uygulamasına sahip olduğunuzu ve uygulama başladığında username değişkeni 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 yordam sorgu dizesi bilgisi edinmek için bir ClickOnce uygulamasının nasıl kullanılacağını gösterir.
Not
Uygulamanız dosya paylaşımı veya yerel dosya sistemi kullanmak yerine, HTTP kullanarak başlatıldığında yalnızca bir sorgu dizesi içinde bilgi geçirebilirsiniz.
İlk yordam ClickOnce uygulaması açıldığında bu değerleri okumak için küçük bir kod parçasını nasıl kullanabileceğinizi gösterir.
Sonraki yordam ClickOnce uygulamanızın MageUI.exe kullanarak sorgu dizesi parametrelerini kabul etmesi için nasıl yapılandırabileceğini gösterir. Uygulamanızı her yayımlamak istediğinizde bunu yapmanız gerekecek.
Not
Bu özelliği etkinleştirmek üzere bir karar almadan önce bu konuda 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 almak için, bkz. İzlenecek yol: El ile ClickOnce uygulama dağıtma
Not
Başlangıç.net Framework 3.5 SP1, komut satırı bağımsız değişkeni bir çevrimdışı geçmesi mümkün ClickOnce uygulama.Bağımsız uygulama sağlamak isterseniz, kısayol dosyasına parametre iletebilirsiniz.appref-ms uzantısı.
ClickOnce uygulamasından sorgu dizesi bilgileri edinmek için
Aşağıdaki kodu projenize koyun. Bu kodun çalışması için, System.Web'e bir referansınız olmalıdır ve using veya Imports ifadelerini System.Web, System.Collections.Specialized ile System.Deployment.Application için eklemelisiniz.
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); }
Ada göre sıralanan sorgu dizisi parametrelerine ait bir Dictionary almak için önceden tanımlanmış işlevi çağırın.
ClickOnce uygulamasına MageUI.exe ile geçen sorgu dizesini etkinleştirmek için
.NET Command Prompt'ı açın ve yazın:
MageUI
Dosya menüsünden, Aç'ı seçin ve uygulamanıza ait .application uzantılı dosya olan ClickOnce dağıtım bildirimini açın.
Sol gezinti penceresinde Dağıtım Seçenekleri panosunu seçin ve Allow URL parameters to be passed to application onay kutusunu seçin.
Dosya menüsünden Kaydet’i tıklayın.
Not
Alternatif olarak, Visual Studio içinde sorgu dizesi geçirmeyi etkinleştirebilirsiniz.Proje Seçenekleri'ni açın, Yayımla sekmesini seçin, Seçenekler düğmesine tıklayın ve Bildirimler'i, seçin. Burda bulunan Allow URL parameters to be passed to application onay kutusunu seçin.
Güçlü Programlama
Sorgu dizesi parametrelerini kullandığınızda, uygulamanızın nasıl yüklendiğine ve etkinleştirildiğine dikkat etmelisiniz. Uygulamanız kullanıcı bilgisayara Web'den veya ağ paylaşımından yüklemek için yapılandırılmışsa, kullanıcının uygulamayı yalnızca bir kez URL yoluyla etkinleştirmesi olasıdır. Bundan sonra kullanıcı genellikle Başlat menüsünde kısayol kullanarak uygulamanızı etkinleştirecektir. Sonuç olarak, uygulamanızın tüm kullanım süresinde yalnızca bir kez sorgu dizesi değişkenleri alması sağlanır. İleride kullanmak üzere bu bağımsız değişkenleri kullanıcının makinesinde depolamayı seçerseniz, bunları güvenli bir şekilde depolama sorumluluğunuz vardır .
Uygulamanız yalnızca çevrimiçi ise, her zaman bir URL yolu etkinleştirilecektir. Ancak bu durumda bile, sorgu dizesi parametreleri eksik veya bozuksa doğru çalışması için uygulamanız yazılmalıdır.
Güvenlik
ClickOnce uygulamanıza URL parametreleri geçirilmesine sadece kullanmadan önce kötü amaçlı karakter girişlerini temizlemeyi planlıyorsanız izin verin. Örneğin, alıntı işareti, eğik çizgi veya noktalı virgül içeren bir dize, bir veritabanına karşılık gelen SQL isteği içinde filtrelenmeden kullanılırsa planlı olmayan veri işlemleri gerçekleşebilir. Daha fazla bilgi için, bkz. Script Exploits Overview.