ก่อนอื่นเราก็มาสร้าง Console Application สำหรับการทดสอบซะก่อนครับ จากนั้นก็ Add .NET Reference เข้ามาในโปรเจคเรา 2 ตัว คือ System.Deployment กับ System.Web ครับ แล้วก็เขียนโค้ด Import NameSpace ที่จำเป็นเข้าในด้วย
Imports System.Collections.Specialized
Imports System.Deployment.Application
Imports System.Web
Module Module1
Sub Main()
Dim params = GetURLParameter()
If params.Count > 0 Then
For i As Integer = 0 To params.Count - 1
Console.WriteLine("Parameter {0} is {1}", params.Keys(i), params.Item(i))
Next
Else
Console.WriteLine("No URL Parameter")
End If
Console.WriteLine("Press any key to quit.")
Console.ReadLine()
End Sub
Private Function GetURLParameter() As NameValueCollection
Dim NameValueTable As New NameValueCollection
If (My.Application.IsNetworkDeployed) Then
Dim QueryString As String = ApplicationDeployment.CurrentDeployment.ActivationUri.Query
NameValueTable = HttpUtility.ParseQueryString(QueryString)
End If
Return NameValueTable
End Function
End Module
โค้ดที่ใช้ทดสอบมีเท่านี้ ไม่ยากใช่ไหมครับ แต่ที่สำคัญอีกอย่างหนึ่งก็คือ เราต้องกำหนดให้ ClickOnce Application ของเราสามารถรับ URL Parameters ได้ก่อน โดยไปที่ Property ของโปรเจค แล้วเลือก Publish Tab ครับ
ทีนี้เราจะเห็นปุ่ม OPTIONS กดเข้าไปได้เลยครับ
แล้วก็ทำการเลือก Manifests และคลิ๊กเครื่องหมายถูกตรง Allow URL parameters
เสร็จแล้วก็ทำการ Publish ครับ ทีนี้เรามาลองทดสอบเรียก ClickOnce Application แบบไม่ส่ง parameter ก่อน
โปรแกรมขึ้นว่า No parameter ถูกต้อง คราวนี้ลองทดสอบแบบส่ง QueryString ไปด้วย
(http://nithi/COParameter/CoParameter.application?param1=test1¶m2=test2&name=nithi)
เรียบร้อยครับ คราวนี้เราก็สามารถส่ง URL Parameter ไปให้ Application ของเราได้แล้วครับ
Reference:
How to: Retrieve Query String Information in a ClickOnce Application
1 ความคิดเห็น:
วิธีส่งแบบนี้ เป็นการส่งแบบ Method GET ไปตาม URL ถ้าหากต้องการส่งแบบ Method POST สามารถทำได้หรือเปล่าครับ
แสดงความคิดเห็น