當(dāng)前位置:工程項(xiàng)目OA系統(tǒng) > 泛普各地 > 上海OA系統(tǒng) > 上海OA快博
在安裝期間將應(yīng)用程序重定向到不同的XML Web services
申請(qǐng)免費(fèi)試用、咨詢電話:400-8352-114
AMTeam.org在安裝期間將應(yīng)用程序重定向到不同的XML Web services
Steve Hoag
Visual Studio Team
Microsoft
Corporation
2001 年 11 月
摘要:本文介紹了如何在 Visual Basic? .NET 中創(chuàng)建一個(gè) Web 應(yīng)用程序,通過(guò)使用 URL Behavior 屬性、Installer 類和 Web 安裝程序項(xiàng)目將該應(yīng)用程序重定向到不同的 XML Web services。
簡(jiǎn)介
在開(kāi)發(fā)以 XML Web services
為目標(biāo)的應(yīng)用程序時(shí),通常應(yīng)該以 Web 服務(wù)器上已安裝的 XML Web services
為目標(biāo)。這是一個(gè)準(zhǔn)則,不過(guò)在部署應(yīng)用程序的產(chǎn)品版本時(shí),有時(shí)也需要以其他 XML Web services 為目標(biāo)。例如,您可能已將開(kāi)發(fā)服務(wù)器上的 XML Web
services 的測(cè)試版本作為目標(biāo),但是完成的應(yīng)用程序需要將另一個(gè)服務(wù)器上的 XML Web services
的安裝版本作為目標(biāo)。您可能還希望安裝該應(yīng)用程序的人員在安裝期間可以選擇 XML Web services 的版本,例如,Intranet
上的版本或者是可以從防火墻外部進(jìn)行訪問(wèn)的版本。
本文介紹了如何創(chuàng)建可以重定向到不同的 XML Web services 的 Web 應(yīng)用程序。創(chuàng)建過(guò)程包括:
指定 URL Behavior 屬性,以在運(yùn)行時(shí)查找 XML Web services。
添加能在安裝結(jié)束時(shí)執(zhí)行自定義操作的安裝組件。
使用安裝程序項(xiàng)目為應(yīng)用程序創(chuàng)建一個(gè)包含自定義用戶界面的安裝程序。
第一步是創(chuàng)建包含對(duì) XML Web services 進(jìn)行 Web
引用的 Web 應(yīng)用程序。有關(guān)創(chuàng)建 Web 應(yīng)用程序的詳細(xì)信息,請(qǐng)參閱 Visual Studio? .NET 文檔中的 Walkthrough:
Creating an XML Web services Using Visual Basic or Visual C#(英文)。
將 URL Behavior 設(shè)置為 Dynamic
為了在運(yùn)行時(shí)查找 XML
Web services,應(yīng)用程序?qū)⒋鎯?chǔ)該 XML Web services 的 URL。Web 引用(用于 XML Web services)的 URL
Behavior 屬性決定 URL 的存儲(chǔ)位置。如果 URL Behavior 屬性被設(shè)置為 Static(默認(rèn)值),則 URL 將被硬編碼為 Web
引用的一部分。如果 URL Behavior 屬性被設(shè)置為 Dynamic,則指定 URL 的條目將被添加到該應(yīng)用程序的 Web.config 文件的
appSettings 段。
將 URL Behavior 屬性設(shè)置為 Dynamic
在 Solution Explorer(解決方案資源管理器)中,展開(kāi) Web References(Web 引用)節(jié)點(diǎn)并選擇對(duì)
XML Web services 的引用。
在 Properties(屬性)窗口中,選擇 URL Behavior 屬性并將其更改為
Dynamic。
在 Solution Explorer(解決方案資源管理器)中,選擇 Web.config
文件并雙擊以打開(kāi)該文件。
在該文件末尾,應(yīng)該能夠找到一個(gè) 段,其中包含指定
XML Web services 名稱的關(guān)鍵字和指定 URL 的值。例如,對(duì)于能夠訪問(wèn)本地計(jì)算機(jī)上的 MyWebService 的名為 MyWebApp
的應(yīng)用程序,其外觀類似于:
value=http://localhost/MyWebService/Service1.asmx/>
下一步是添加 Installer 類,用于在安裝期間修改 .config 文件。
添加 Installer 類
Installer
類(也稱為安裝組件)是在安裝過(guò)程中被當(dāng)作自定義操作調(diào)用的 .NET 框架類。在這種情況下,您需要添加 Installer 類來(lái)代替 Install
方法,以添加修改 .config 文件的代碼。有關(guān) Installer 類的詳細(xì)信息,請(qǐng)參閱 Visual Studio .NET
文檔中的“Introduction to Installation Components”。
添加 Installer 類
在 Project(項(xiàng)目)菜單中,選擇 Add New Item(添加新項(xiàng))。
在 Add New
Item(添加新項(xiàng))對(duì)話框中,選擇 Installer Class(Installer 類)并將 Name(名稱)更改為
WebServiceInstaller。
單擊 Open(打開(kāi))后,該類將被添加到您的項(xiàng)目,并打開(kāi)包含
Installer 類的設(shè)計(jì)器。
雙擊設(shè)計(jì)器以打開(kāi) Code Editor(代碼編輯器)。
在 Installer 類模塊(位于 End
Class 聲明的上面)的底部添加用于 Install 方法的以下代碼:
Public Overrides Sub Install(ByVal
stateSaver As
System.Collections.IDictionary)
' 獲取在
CustomActionData 中傳遞的參數(shù)。
Dim installlog As New
System.IO.StreamWriter("Installation.log")
installlog.AutoFlush
= True
Try
Dim ProvidedName As
String
=Me.Context.Parameters.Item("ServerName")
Dim SvcName As String =
Me.Context.Parameters.Item("ServiceName")
installlog.WriteLine("開(kāi)始編輯配置文件")
If ProvidedName = "" Or SvcName =
"" Then
Throw New
InstallException("未指定參數(shù)")
End If
' 使用反射查找配置文件的位置。
Dim Asm As System.Reflection.Assembly =
System.Reflection.Assembly.GetExecutingAssembly
Dim strConfigLoc As String
strConfigLoc = Asm.Location
Dim strTemp As
String
strTemp =
strConfigLoc
strTemp =
strTemp.Remove(strTemp.LastIndexOf(""),
Len(strTemp) –
strTemp.LastIndexOf(""))
strTemp =
strTemp.Remove(strTemp.LastIndexOf(""),
Len(strTemp) –
strTemp.LastIndexOf(""))
Dim FileInfo As
System.IO.FileInfo =
New System.IO.FileInfo(strTemp &
"web.config")
installlog.WriteLine("文件信息:" & strTemp)
If Not FileInfo.Exists
Then
Throw New
InstallException("缺少配置文件")
End If
' 將配置文件加載到 XML
DOM。
Dim XmlDocument As New
System.Xml.XmlDocument()
XmlDocument.Load(FileInfo.FullName)
'
找到正確的節(jié)點(diǎn)并將其更改為新值。
Dim Node As
System.Xml.XmlNode
Dim FoundIt As Boolean =
False
For Each Node In
XmlDocument.Item("configuration").Item("appSettings")
' 忽略所有注釋。
If Node.Name =
"add" Then
If Node.Attributes.GetNamedItem("key").Value =
"appname.servername.service"
Then
'
注意,“Service1.asmx”應(yīng)當(dāng)被替換為
' Web service
文件的實(shí)際名稱。
Node.Attributes.GetNamedItem("value").Value =
"http:\" & ProvidedName & "" &
SvcName &
"Service1.asmx"
FoundIt =
True
End
If
End
If
Next Node
If Not FoundIt
Then
Throw New
InstallException("配置文件不
包含
ServerName 段")
End If
'
編寫(xiě)新的配置文件。
XmlDocument.Save(FileInfo.FullName)
Finally
installlog.WriteLine("結(jié)束對(duì)配置文件的編輯")
installlog.Close()
End Try
End Sub
以上代碼首先創(chuàng)建用于記錄自定義操作進(jìn)度的安裝日志文件。System.Reflection
命名空間用于查找所安裝的程序集并查找關(guān)聯(lián)的 .config 文件。XML 文檔模型用于遍歷 .config 文件,直至找到 appSettings
段。找到關(guān)鍵字 appname.servername.service 后,其關(guān)聯(lián)值將發(fā)生更改以包含傳入的參數(shù),從而將應(yīng)用程序重定向?yàn)槭褂眯碌?XML Web
services。
在 Solution Explorer(解決方案資源管理器)中,選擇 Web.config 文件并雙擊以打開(kāi)該文件。
在 appSettings 段中復(fù)制 XML Web services 的關(guān)鍵字值。關(guān)鍵字的形式為
appname.servername.service,其中 appname 是應(yīng)用程序的名稱,servername 是 XML Web services
所在的服務(wù)器,service 是 XML Web services 的名稱。
在 Code Editor(代碼編輯器)中打開(kāi) Installer
類模塊,并使用上一步中復(fù)制的值替換 appname.servername.service。
下一步是為應(yīng)用程序添加一個(gè)安裝程序項(xiàng)目。
添加安裝程序項(xiàng)目
安裝程序項(xiàng)目用于為應(yīng)用程序創(chuàng)建安裝程序。安裝程序項(xiàng)目以 Windows
安裝程序技術(shù)為基礎(chǔ),包含在安裝期間運(yùn)行自定義操作以及自定義安裝用戶界面等多項(xiàng)功能。有關(guān)安裝程序項(xiàng)目的詳細(xì)信息,請(qǐng)參閱 Visual Studio .NET
文檔中的 Deploying Applications and Components(英文)。
添加安裝程序項(xiàng)目
在 File(文件)菜單中,指向 Add Project(添加項(xiàng)目),然后單擊 New Project(新建項(xiàng)目)。
在 Add New Project(添加新項(xiàng)目)對(duì)話框中,選擇 Project Types(項(xiàng)目類型)窗格中的 Setup and
Deployment Projects(安裝和部署項(xiàng)目)節(jié)點(diǎn)。
在 Templates(模板)窗格中,選擇 Web Setup
Project(Web 安裝程序項(xiàng)目)并單擊 OK(確定)。
該項(xiàng)目將被添加到解決方案中,且 File System
Editor(文件系統(tǒng)編輯器)將被打開(kāi)。
在 Properties(屬性)窗口中,選擇 ProductName 屬性并將其名稱設(shè)置為與應(yīng)用程序的名稱相同。
在 File System Editor(文件系統(tǒng)編輯器)中,選擇 Web Application Folder(Web 應(yīng)用程序文件夾)。
在 Action(操作)菜單中,指向 Add(添加),然后單擊 Project Output(項(xiàng)目輸出)。
在 Add
Project Output Group(添加項(xiàng)目輸出組)對(duì)話框中,選擇應(yīng)用程序項(xiàng)目,然后選擇 Primary Output(主輸出)和 Content
Files(內(nèi)容文件),并單擊 OK(確定)。
下一步是添加將在安裝結(jié)束時(shí)運(yùn)行的自定義操作。
將 Installer
類添加為自定義操作
自定義操作用于在安裝結(jié)束時(shí)運(yùn)行代碼,以便執(zhí)行安裝過(guò)程中無(wú)法處理的操作。自定義操作的代碼可以包含在 .dll
文件、.exe 文件、腳本文件或程序集文件中。有關(guān)自定義操作的詳細(xì)信息,請(qǐng)參閱 Visual Studio .NET 文檔中的 Custom Actions
Management in Deployment(英文)。
將 Installer 類添加為自定義操作
在 Solution Explorer(解決方案資源管理器)中,選擇 Setup Project(安裝程序項(xiàng)目)。
在 View(視圖)菜單中,指向 Editor(編輯器),然后單擊 Custom Actions(自定義操作)。
Custom Actions Editor(自定義操作編輯器)將打開(kāi)。
在 Custom Actions Editor(自定義操作編輯器)中,選擇 Install(安裝)節(jié)點(diǎn)。
在
Action(操作)菜單中,選擇 Add Custom Action(添加自定義操作)。
雙擊 Web Application
Folder(Web 應(yīng)用程序文件夾),然后選擇 Primary output(主輸出),并單擊 OK(確定)。
在
Properties(屬性)窗口中,選擇 InstallerClass 屬性并確保將其設(shè)置為 true。
選擇 CustomActionData
屬性并輸入以下文本:/ServerName=[EDITA1] /ServiceName=[EDITA2]
CustomActionData 屬性提供兩個(gè)被傳遞到自定義操作的參數(shù),參數(shù)之間用空格分隔。
下一步是添加用戶界面以便在安裝過(guò)程中輸入信息。
添加用戶界面對(duì)話框
安裝過(guò)程中將顯示用戶界面對(duì)話框以便從用戶收集信息。有關(guān)用戶界面對(duì)話框的詳細(xì)信息,請(qǐng)參閱 Visual Studio
.NET 文檔中的 User Interface Management in Deployment(英文)。
添加自定義用戶界面對(duì)話框
在 Solution Explorer(解決方案資源管理器)中,選擇 Setup Project(安裝程序項(xiàng)目)。
在 View(視圖)菜單中,指向 Editor(編輯器),然后單擊 User Interface(用戶界面)。
在 User
Interface Editor(用戶界面編輯器)中,選擇 Start(開(kāi)始)節(jié)點(diǎn)。
在 Action(操作)菜單中,選擇 Add
Dialog(添加對(duì)話框)。
在 Add Dialog(添加對(duì)話框)對(duì)話框中,選擇 Textboxes (A)(文本框 [A])對(duì)話框,然后單擊
OK(確定)。
在 Action(操作)菜單中,選擇 Move Up(上移)并重復(fù)執(zhí)行該操作,直到 Textboxes (A)(文本框
[A])對(duì)話框位于 Installation Address(安裝地址)對(duì)話框的上方。
在
Properties(屬性)窗口中,設(shè)置以下屬性:
注意:此值指定默認(rèn)服務(wù)器。您可以在此處輸入自己的默認(rèn)服務(wù)器名稱。
注意:Edit1Property 屬性被設(shè)置為“EDITA1”,Edit2Property 屬性被設(shè)置為“EDITA2”。這些值與在 Custom Actions Editor(自定義操作編輯器)的 CustomActionData 屬性中輸入的值相對(duì)應(yīng)。如果用戶在安裝期間在這些編輯控件中輸入文本,CustomActionData 屬性將自動(dòng)傳遞這些值。
生成和安裝
最后一步是生成安裝程序項(xiàng)目以創(chuàng)建安裝程序,然后將應(yīng)用程序安裝到目標(biāo)服務(wù)器上。
生成安裝程序項(xiàng)目
在 Build(生成)菜單中,選擇 Build Projectname(生成 Projectname),其中
Projectname 是您的安裝程序項(xiàng)目的名稱。
將應(yīng)用程序部署到開(kāi)發(fā)計(jì)算機(jī)的 Web 服務(wù)器上
在 Solution Explorer(解決方案資源管理器)中,選擇安裝程序項(xiàng)目,然后在 Project(項(xiàng)目)菜單中選擇
Install(安裝)。
將應(yīng)用程序部署到其他計(jì)算機(jī)的 Web 服務(wù)器上
在 Windows 資源管理器中,瀏覽到項(xiàng)目目錄,并找到生成的安裝程序。默認(rèn)路徑為 Documents and
settings您的登錄名安裝程序項(xiàng)目名項(xiàng)目配置產(chǎn)品名.msi。默認(rèn)的項(xiàng)目配置為 Debug。
將目錄中的 .msi
文件以及所有其他文件和子目錄都復(fù)制到 Web 服務(wù)器。
在 Web 服務(wù)器上,雙擊 Setup.exe 文件以運(yùn)行安裝程序。
總結(jié)
我們可以看出,重定向應(yīng)用程序以使用不同的 XML Web services 的過(guò)程并不難。雖然本例使用以 XML Web
services 為目標(biāo)的 Web 應(yīng)用程序,但您可以輕松地將其更改為用于 Windows 應(yīng)用程序:只需要使用 app.config 文件代替
Web.config 文件,并使用安裝程序項(xiàng)目代替 Web 安裝程序項(xiàng)目。除此以外,過(guò)程完全相同。
本文介紹了幾項(xiàng)新技術(shù):使用 URL Behavior 屬性在配置文件中存儲(chǔ)信息,使用 Installer 類在安裝期間執(zhí)行操作,以及使用 CustomActionData 屬性在安裝過(guò)程中存儲(chǔ)用戶信息。
- 1網(wǎng)絡(luò)服務(wù)標(biāo)準(zhǔn)誰(shuí)說(shuō)了算?SUN 積極爭(zhēng)取發(fā)言權(quán)
- 2信息生命周期管理7步法
- 3WS-I公布網(wǎng)絡(luò)服務(wù)標(biāo)準(zhǔn)草案 SUN 最終加入成為會(huì)員
- 4CKM定義及規(guī)則
- 5深入考察兩種Web服務(wù)架構(gòu)
- 6互聯(lián)時(shí)代的上海OA
- 7中國(guó)企業(yè)知識(shí)倉(cāng)庫(kù) 企業(yè)的福音
- 8為你的網(wǎng)絡(luò)服務(wù)制作文檔
- 9企業(yè)內(nèi)部的知識(shí)市場(chǎng)
- 10淺議Web service
- 11善用你的知識(shí)財(cái)產(chǎn)
- 12企業(yè)上海OA探析
- 13上海oa軟件哪家比較好?
- 14IBM推出業(yè)界首款Web安全服務(wù)軟件
- 15上海OA與企業(yè)信息化之路
- 16讓“內(nèi)容”成為價(jià)值
- 17OA辦公軟件系統(tǒng)中任務(wù)管理是企業(yè)老板最關(guān)心的功能
- 18泛普OA軟件2014年-2018年在大上海重點(diǎn)發(fā)展100家代理商
- 19投資5000萬(wàn)美元 微軟惠普聯(lián)手推廣.NET企業(yè)應(yīng)用
- 20論文:信息系統(tǒng)開(kāi)發(fā)過(guò)程中的上海OA(By AMT 宋亮)
- 21Web服務(wù)離我們還有多遠(yuǎn)?IDC稱還需10年
- 22網(wǎng)絡(luò)服務(wù)也稱得上是一場(chǎng)革命
- 23企業(yè)知識(shí)需要流動(dòng)和分享(范根定)
- 24Web服務(wù),等待全民公決
- 25第二代Web服務(wù)展望
- 26請(qǐng)正確使用OA系統(tǒng)的功能,包括但不限于:
- 27性能比較:.NET Remoting與ASP.NET Web服務(wù)
- 28麥肯錫電子商務(wù)論叢-B2B意外回流
- 29協(xié)作,“讓我們暢談”
- 30上海OA的四個(gè)層面
成都公司:成都市成華區(qū)建設(shè)南路160號(hào)1層9號(hào)
重慶公司:重慶市江北區(qū)紅旗河溝華創(chuàng)商務(wù)大廈18樓
版權(quán)所有:泛普軟件 渝ICP備14008431號(hào)-2 渝公網(wǎng)安備50011202501700號(hào) 咨詢電話:400-8352-114