之前發布過Silverlight應用程式,當時也沒有你遇到什麼阻礙,直接使用的Visual Studio 2010的Publish功能,貌似也沒有作什麼設定。後來重裝系統,也就都沒有了,這兩天幫一個大哥做了一些小例子,順便整合了一下。於是閑來無聊遍想發布一下,結果費了老大週摺才弄好,於是再次好好記錄一下,以便下次查閱。
開始之前我們你需要安裝IIS 7.5,Visual Studio 2010,SQL Server 2008,這是本文測試的環境,其他的筆者沒有試過,所以不是很清楚。下面就講一下筆者發布的過程和遇到的問題。
在開始之前你有可能需要做一下如下的工作:
- 安裝.net,並向伺服器註冊(一般可以跳過這一步,如果你是VS 2010,預設應該註冊了4.0的.NET Framework了)
例如:C:\WINDOWS\Microsoft.NET\Framework\<.net版本號碼> \aspnet_regiis.exe -i
具體的版本可查看Silverlight應用程式的設定檔,例如:
<compilation debug="true" targetFramework="4.0" />
2. 在伺服器端啟用WCF RIA Service.msi (可選,安裝WCF RIA Service後發布Bussiness Application會自動的拷貝所需要的DLL,具體後續會說明)
下載RiaServices.msi,通過如下指令安裝:
msiexec /i RIAServices.msi SERVER=true
3. 在根目錄下放置跨域檔案
一、這裡假設你的Silverlight應用程式沒有問題,已經準備好發布了。下面就開始我們的第一步。
1.在硬碟上見一個檔案夾,用來存放你發布的網站。例如:在D盤建一個WebSite檔案夾,然後再Web Site檔案下見一個esri檔案夾,例如:D:\My Web Site\esri.
2.開啟Silverlight項目,Rebuild,然後點擊Web項目,選擇Publish
注意:如果您沒有本文開始所說的在伺服器端啟用WCF RIA Service,那麼這裡您需要多一步操作,
在發布Silverlight應用之前你需要將以下三個引用的Copylocal設定為True
System.ServiceModel.DomainServices.Hosting
System.ServiceModel.DomainServices.Server
System.ServiceModel.DomainServices.EntityFramework(添加DomainService會有該引用),具體如所示,右鍵對應的DLL進行設定:
在彈出的配置視窗中選擇檔案系統(File System),並將目標位置設定為我們上面建立檔案夾的路徑,如所示:
之後點擊Publish.
然後開啟IIS管理器
右鍵網站,選擇添加新網站
在添加網站中設定網站名稱,以及實體路徑(這裡選擇我們之前建立的檔案夾:D:\MyWeb Site,因為在上一步中我們把Silverlight的應用程式Publish到了這個檔案夾下了)
之後點擊確定,這個時候我們的esri_site應該如下顯示:
接著右鍵esri檔案夾,選擇轉換為應用程式。
在彈出的視窗中點擊確定
此時,IIS視圖應該如下所示:
這時你可以點擊右側的瀏覽,查看你的應用程式了。
一般情況下,瀏覽都沒有問題,當時這裡需要注意幾個問題:
1.涉及到引用ArcGIS Server服務的時候,需要注意服務的地址,不要帶有localhost或者電腦名稱,全部用IP地址來代替。
2.涉及到登入資料庫時,需要注意IIS啟用的認證方式,以及SQL Server啟用的認證方式,否則會出現"APPPOOL\xxx無法登陸的錯誤",具體可如下操作:
在Silverlight中預設啟用的是Forms認證,所以在IIS中也要啟用IIS認證,點擊應用程式——選擇身分識別驗證,如下設定:
3.設定設定程式應用池為4.0
點擊esri_site(Silverlight 應用使用的應用程式集區),點擊進階設定
選擇4.0
註:當出現"APPPOOL\xxx"無法登陸時,發現有兩種解決方案,先如下給出:
1.設定應用程式集區的進程模型為LocalSystem
2.修改Silverlight應用程式中的資料庫連接,在串連中增加,User ID和Password,例如這是本文使用的串連:
<add name="DefaultConnection" connectionString="Data Source=QZJ-PC;Initial Catalog=IBACK;Persist Security Info=True;User ID=sa;Password=quzijing" providerName="System.Data.SqlClient"/>
3.如果區域網路無法訪問,需要關閉防火牆(筆者測試時,發現開始WIN7 防火牆時,無法訪問,關閉就好了)
總結:
IIS需要注意的問題:
1.注意註冊.ent framework
2.註冊WCF RIA Service服務(或者設定相關DLL 的Copy Local屬性為True)
3.注意應用程式的認證方式,一般是開啟Forms表單認證以及匿名認證。
4.注意應用程式集區的設定
5.SQL Server的認證方式,資料庫的串連問題,可以通過設定連接字串解決
6.使用ArcGIS Server服務的時候J將電腦名稱改成IP地址,因為如果地圖無法載入,會出現參考空間的錯誤。
7.如果上述都沒有問題,但還是不能訪問,試試關閉防火牆。
8.關於WCF服務發布的相關配置及問題,可參考這裡:
http://blogs.msdn.com/b/saurabh/archive/2010/03/16/ria-services-application-deployment.aspx