原文地址:http://www.companysz.com/yuefei/p/3600441.html
原文寫的挺好的,我這里增加了一些細節。來幫助像我這樣的小白,明明按照說明來,可還是不對
準備:
vSphere Management SDK
Microsoft Visual Studio 2008
Web Services Enhancements (WSE) 3.0 for Microsoft .NET
.net framework v2.0 sdk
MicrosoftSqlServersstring
注意:
.net framework v2.0 sdk 不是.net framework v2.0 .net framework v2.0 sdk要安裝自己的對應版本,如64位系統,安裝32的.net framework v2.0 sdk是沒有用的 安裝Web Services Enhancements (WSE) 3.0 for Microsoft .NET選擇customManagement SDK說明:
vSphere Management SDK關于vmware管理等相關功能的.net和java的代碼示例。
在其5.5的解壓包中
eam:esx agent management表示esx虛機生產環境的代理
sms:storage monitoring management存儲監控
spbm:storage policy based management存儲策略
ssoclient:客戶端單點登錄驗證
vsphere-ws:web service api
當打開sample解決方案時會發現缺失一些dll文件。
對于Microsoft.Web.Services3.dll是微軟wse3.0中的一個dll文件,可以用它來生產安全的web服務。
安裝Web Services Enhancements (WSE) 3.0 for Microsoft .NET后嘆號即可消失
解決辦法:
Vim25Service.dll
Vim25Service.xmlSerializers.dll
當然在vSphere Management SDK開發包中也提供了基于web的服務接口,在...SDK/vsphere-ws/wsdl/vim25目錄下,可以通過wse工具生成dll文件。
關于wse工具安裝配置,安裝運行時、工具集和vs工具這三個選項。
這里提供兩種編譯方式,一種是通過tool工具中的WseWsdl3.exe,一種是vs擴展工具。
安裝完成后,打開vs的dos窗口,依次執行下方幾個步驟。
生成Vim25Service.dll和Vim25Service.XmlSerializers.dll
1.生成cs文件。
wsdl.exe /n:Vim25Api /o:d:/sdk/dll/VimService.cs d:/sdk/dll/vimService.wsdl d:/sdk/dll/vim.wsdl
2.編譯cs文件(生成Vim25Service.dll)。
csc /t:library /out:d:/sdk/dll/Vim25Service.dll d:/sdk/dll/VimService.cs
3.生成序列化文件(Vim25Service.XmlSerializers.dll)。這一過程需要比較長的時間。
sgen /p d:/sdk/dll/Vim25Service.dll
4.到這里還沒有結束
我們打開wsdl編譯的文件VimService.cs:
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "4.0.30319.1")][System.Diagnostics.DebuggerStepThroughAttribute()][System.ComponentModel.DesignerCategoryAttribute("code")][System.Web.Services.WebServiceBindingAttribute(Name="VimBinding", Namespace="urn:vim25")][System.Xml.Serialization.XmlIncludeAttribute(typeof(ReadEnvironmentVariableInGuestRequestType))][System.Xml.Serialization.XmlIncludeAttribute(typeof(TerminatePRocessInGuestRequestType))]......
public partial class VimService : System.Web.Services.Protocols.SoapHttpClientProtocol{
于是我們注釋掉所有[System.Xml.Serialization.XmlIncludeAttribute(typeof...,
此步可以使用vs的全部替換功能來完成,大概有6478項,一定要用工具
然后我們在
public partial class VimService : System.Web.Services.Protocols.SoapHttpClientProtocol
前面增加一行,內容如下
[System.Xml.Serialization.XmlSerializerAssembly(AssemblyName = "VimService25.XmlSerializers")]。
生成STSService.dll
1.cd到wse工具。
cd C:/Program Files (x86)/Microsoft WSE/v3.0/Tools
2.生成cs文件。此處在末尾加上所有wsdl文件。
WseWsdl3.exe /o:c:/STSService.cs /type:webClient c:/test/STSService.wsdl c:/test/profiled-saml-schema-assertion-2.0.xsd c:/test/profiled-saml-schema-assertion-2.0-extensions.xsd c:/test/profiled-saml-schema-assertion-2.0-types.xsd c:/test/profiled-sstc-saml-delegation.xsd c:/test/profiled-wsse-header.xsd c:/test/profiled-wss-wssecurity-utility-1.0.xsd c:/test/profiled-ws-trust.xsd c:/test/ws-addr.xsd c:/test/ws-trust-1.4-extensions.xsd c:/test/xmldsig-core-schema.xsd
3.編譯cs文件。此處需要引用Microsoft.Web.Services3.dll。
csc /t:library /out:c:/STSService.dll c:/STSService.cs /reference:"C:/Program Files (x86)/Microsoft WSE/v3.0/Microsoft.Web.Services3.dll"
在編譯STSService.dll的過程中可能會出現下圖警告。這代表需要安裝.net framework v2.0 sdk這么個東西,注意并非.net framework 2.0。
安裝完成重新引用生產的dll文件,這時候有點要注意,sample里面的項目采用.net framework 3.5,這取決于你編譯dll的版本,可以更改項目版本或者采用對應的編譯環境即可。
另外在sample中有兩種客戶端登錄方式。一種被稱為過時的,實際上VMA代理實例,另一種就是SSO。
不過SSO在sample的wsdl提供的api中卻沒有提供sso的接口。缺少部分類方法。所以注釋掉sso的驗證代碼。
|
新聞熱點
疑難解答