IIS發布WCF服務項目之本地

來源:互聯網
上載者:User

標籤:

最近由於項目需求,要做一個上傳檔案附件的功能,由於是多使用者訪問,所以這就用到了WCF服務,程式編寫完成就需要發布了,

下面記錄下發布到IIS的過程:

1,安裝IIS

第一步:檢查Windows7中IIS是否安裝了必要的組件

方法:控制台->程式和功能->開啟或關閉Windows功能

以片中標註的功能Windows7預設不會安裝的

第二步:檢查IIS的配置

系統必備安裝完成後開啟IIS服務管理員,點預設網站,雙擊“處理常式映射”如

 檢查一下中紅色標註部分是否已經存在,否則WCF服務是無法調用的。不幸如果沒有找到這幾個"兄弟"的話方法如下

安裝註冊WCF組件

 

1)運行cmd命令列工具。(開始 ==> 運行 ==> cmd斷行符號)
(注意!!如果使用Windows Vista或7的話,務必使用administrator管理員身份運行,否則可能導致下面的操作無法繼續!)

2)進入WCF檔案夾:
cd C:\WINDOWS\Microsoft.NET\Framework\v3
.0\Windows Communication Foundation

3)運行ServiceModelReg.exe工具,會得到如下協助資訊:

C:\WINDOWS\Microsoft.NET\Framework\v3.0\Windows Communication Foundation>Service
ModelReg

Microsoft(R) Windows Communication Foundation 安裝公用程式
[Microsoft (R) Windows (R) Communication Foundation, 版本 3.0.4506.2152]
著作權 (c) Microsoft Corporation。著作權所有,並保留一切權利。

管理一台電腦上的 Windows Communication Foundation
的安裝和卸載的管理公用程式
=================
用法:
   ServiceModelReg.exe [-i[r | ru] | -u | -ua | -r | -s:<path> | -sn:<path>
   | -k:<path> | -kn:<path> | -lv | -lk | -vi] [-y] [-x] [-q | -v] [-nologo]
   [-?]
-i         - 安裝此版本的 Windows Communication Foundation,並更新
             IIS 中繼資料庫根處的指令碼映射和根以下的所有指令碼映射。
             現有的較低版本的指令碼映射會升級至此版本。

-ir        - 安裝此版本的 Windows Communication Foundation,
             僅註冊。不要在 IIS 中安裝 Windows Communication Foundation
             指令碼映射。
-iru       - 安裝此版本的 Windows Communication Foundation。如果
             存在使用 Windows Communication Foundation 的任何現有
             應用程式,不要在 IIS 中更新它們的指令碼映射。
-u         - 卸載此版本的 Windows Communication Foundation。
             將此版本現有指令碼映射會重新對應到電腦上剩餘的
             已安裝的最高版本的 Windows Communication Foundation。

-ua        - 卸載電腦上所有版本的 Windows Communication Foundation。

-r         - 重新安裝此版本的 Windows Communication Foundation,
             並更新 IIS 中繼資料庫根處的指令碼映射和根以下的所有
             指令碼映射。無論原始版本是什麼,都將現有的指令碼映射
             升級到此版本。
-x         - 包含作為該安裝操作一部分的 Windows Communication
             Foundation 自訂動作指令碼。
-s:<path> - 在指定的路徑以非遞迴方式安裝此版本
             的 Windows Communication Foundation。
             例如,ServiceModelReg.exe -s:W3SVC/1/ROOT/SampleApp1
-sn:<path> - 在指定的路徑以非遞迴方式安裝
             此版本的 Windows Communication Foundation。
-k:<path> - 從指定的路徑中以遞迴方式刪除所有版本的 Windows
             Communication Foundation 的所有指令碼映射。
             例如,ServiceModelReg.exe -k:W3SVC/1/ROOT/SampleApp1
-kn:<path> - 從指定的路徑中以非遞迴方式刪除 Windows Communication
             Foundation 的所有版本的所有指令碼映射。
-lv        - 列出在該電腦上安裝的所有版本的 Windows Communication
             Foundation,以及狀態和安裝路徑。
-lk        - 列出對 Windows Communication Foundation 進行指令碼映射
             的位置的所有 IIS 中繼資料庫密鑰,以及該版本。將不會
             顯示從父密鑰繼承 Windows Communication Foundation
             指令碼映射的密鑰。
-vi        - 確認目標組件的安裝並產生報告。組件可以處於下列狀態:
              未知、未安裝、已進行預設安裝或已進行自訂安裝。

-y         - 在卸載或重新安裝組件之前不要求確認。

-q         - 安靜模式(減少輸出資訊)。
-v         - 詳細模式。
-nologo    - 取消著作權和標題訊息。
-?         - 列印此協助文本。
=================
4)註冊WCF組件,執行:ServiceModelReg.exe -i 斷行符號

如果出現下面的資訊,說明註冊成功了:
=================
C:\WINDOWS\Microsoft.NET\Framework\v3.0\Windows Communication Foundation>Service
ModelReg -i
Microsoft(R) Windows Communication Foundation 安裝公用程式
[Microsoft (R) Windows (R) Communication Foundation, 版本 3.0.4506.2152]
著作權 (c) Microsoft Corporation。著作權所有,並保留一切權利。

正在安裝: Machine.config 節組和處理常式
正在安裝: System.Web 產生提供者
正在安裝: System.Web 編譯器集
正在安裝: HTTP 處理常式
正在安裝: HTTP 模組
正在安裝: Web 主機指令碼映射

安裝完成後開啟IIS

2,WCF服務的構建

說明:一般情況下,我們編寫程式時,服務和程式是放在一個解決方案裡的,但是發布時,要將服務代碼上傳到伺服器,不能把那麼大的檔案都傳上去,所以我就重現構建了個WCF服務,不知這裡說的對不對

建立過程:

1)檔案-->建立-->項目-->Web-->WCF服務應用程式-->編輯名稱-->確定

 

2)結果如下:

   刪除系統產生的兩個檔案IService1.cs與Service1.svc和Web.config檔案,將我們當初嵌入到項目中的服務檔案粘貼到這裡來,包含到項目中。

3,IIS綁定WCF服務

4,疑難雜症:

由於我的服務需要串連SQLServer資料庫,就出現下面的問題:

本問題的特徵是:資料庫是SQL Server Express、程式在VS中調試成功,但是在在IIS中產生類似如下的問題 
------------------------------------------------ 
無法開啟登入所請求的資料庫 "dbName"。登入失敗。 
使用者 ‘IIS APPPOOL\DefaultAppPool‘ 登入失敗。
 

解決方案 

【1】IIS中:

1、先查看你的網站使用的是哪個應用程式集區

2、基本設定-->選擇.net framework v4.0

3、設定應用程式集區的選項

應用程式集區->對應的程式池上右鍵->進階設定->進程模組_標識->選擇NetworkService(與資料庫中設定統一)。

【2】資料庫:
開啟sql server 2005(2008) management studio
安全性->登入名稱->右擊建立登入名稱->常規->搜尋->添加SERVICE使用者->伺服器角色->勾上sysadmin
一般已存在,勾上sysadmin即可。

5,將WCF服務設定成指向IIS(對應程式)

然後通過在瀏覽其中輸入網址,檢驗服務是否配置成功。

6,最後就是在實際項目中加入服務參考了

右鍵加入服務參考,將上面5中的項目URL網址粘貼到其中,點擊前往,編輯命名空間,確定即可。

對於一些情況還需要進行進階設定,將集合類型調整下,從Array調整為List,要看具體情況

說明:步驟5,6這樣做的好處,可以分別進行調試,可能是由於訪問URL的一致吧,使兩者關聯,具體我也說不太清楚。

以上是給自己日後再次出現這些問題做的總結,也希望對看到的人兒有協助。

注:參考文章1,http://www.jb51.net/article/41898.htm;2,http://www.cnblogs.com/chsword/archive/2009/09/05/1561067.html;3,http://blog.csdn.net/findsafety/article/details/9045721

IIS發布WCF服務項目之本地

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.