HOW TO:開發在 IIS 上執行的 WCF 資料服務
本主題示範如何使用 WCF Data Services 來建立以 Northwind 範例資料庫為基礎的資料服務,該資料庫是由 Internet Information Services (IIS) 上執行的 ASP.NET Web 應用程式所裝載。 如需如何將相同的 Northwind 資料服務建立為在 ASP.NET 程式開發伺服器上執行之 ASP.NET Web 應用程式的範例,請參閱 WCF 資料服務快速入門。
注意: |
---|
若要建立 Northwind 資料服務,您必須在本機電腦上安裝 Northwind 範例資料庫。 若要下載此範例資料庫,請參閱下載頁面:SQL Server 的範例資料庫 (英文)。 |
本主題示範如何使用 Entity Framework 提供者建立資料服務。 有其他資料服務提供者可以使用。 如需詳細資訊,請參閱資料服務提供者 (WCF 資料服務)。
當您建立服務之後,您必須明確提供資料服務資源的存取權。 如需詳細資訊,請參閱 HOW TO:啟用資料服務的存取 (WCF 資料服務)。
若要建立在 IIS 上執行的 ASP.NET Web 應用程式
在 Visual Studio 的 [檔案] 功能表中,選取 [新增],然後選取 [專案]。
在 [新增專案] 對話方塊中,選取 Visual Basic 或 Visual C# 做為程式語言。
在 [範本] 窗格中,選取 [ASP.NET Web 應用程式]。 注意:如果您使用 Visual Studio Web Developer,您必須建立新網站,而非建立新的 Web 應用程式。
輸入 NorthwindService 做為專案的名稱。
按一下 [確定]。
選取 [專案] 功能表中的 [NorthwindService 屬性]。
選取 [Web] 索引標籤,然後選取 [使用本機 IIS Web 伺服器]。
按一下 [建立虛擬目錄],然後按一下 [確定]。
在具有系統管理員權限的命令提示字元中,執行下列其中一個命令 (視作業系統而定):
32 位元系統:
"%windir%\Microsoft.NET\Framework\v3.0\Windows Communication Foundation\ServiceModelReg.exe" -i
64 位元系統:
"%windir%\Microsoft.NET\Framework64\v3.0\Windows Communication Foundation\ServiceModelReg.exe" -i
這樣會確定 Windows Communication Foundation (WCF) 已在電腦上登錄。
在具有系統管理員權限的命令提示字元中,執行下列其中一個命令 (視作業系統而定):
32 位元系統:
"%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe" -i -enable
64 位元系統:
"%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe" -i -enable
這樣可確保 IIS 會在電腦上安裝 WCF 之後正確執行。 此外,您可能也必須重新啟動 IIS。
當 ASP.NET 應用程式在 IIS7 上執行時,您也必須執行下列步驟:
開啟 IIS 管理員並巡覽至 [預設的網站] 底下的 PhotoService 應用程式。
在 [功能檢視] 中,按兩下 [驗證]。
在 [驗證] 頁面上,選取 [匿名驗證]。
在 [動作] 窗格中,按一下 [編輯],以便設定匿名使用者將用來連接至網站的安全性主體。
在 [編輯匿名驗證認證] 對話方塊中,選取 [應用程式集區識別]。
注意: 當您使用 Network Service 帳戶時,就會將與該帳戶相關聯的所有內部網路存取權授與匿名使用者。 使用 SQL Server Management Studio、sqlcmd.exe 公用程式或 Visual Studio 中的 Transact-SQL 編輯器,針對已附加 Northwind 資料庫的 SQL Server 執行個體執行下列 Transact-SQL 命令:
CREATE LOGIN [NT AUTHORITY\NETWORK SERVICE] FROM WINDOWS; GO
這樣會在用來執行 IIS 之 Windows 帳戶的 SQL Server 執行個體中建立登入。 如此可讓 IIS 連接至 SQL Server 執行個體。
當附加 Northwind 資料庫之後,執行下列 Transact-SQL 命令:
USE Northwind GO CREATE USER [NT AUTHORITY\NETWORK SERVICE] FOR LOGIN [NT AUTHORITY\NETWORK SERVICE] WITH DEFAULT_SCHEMA=[dbo]; GO ALTER LOGIN [NT AUTHORITY\NETWORK SERVICE] WITH DEFAULT_DATABASE=[Northwind]; GO EXEC sp_addrolemember 'db_datareader', 'NT AUTHORITY\NETWORK SERVICE' GO EXEC sp_addrolemember 'db_datawriter', 'NT AUTHORITY\NETWORK SERVICE' GO
這樣會授與新登入的權限,此權限可讓 IIS 讀取 Northwind 資料庫中的資料並將資料寫入其中。
若要定義資料模型
在 [方案總管] 中,以滑鼠右鍵按一下 ASP.NET 專案名稱,然後按一下 [加入新項目]。
在 [加入新項目] 對話方塊中,選取 [ADO.NET 實體資料模型]。
針對資料模型的名稱,輸入 Northwind.edmx。
在實體資料模型精靈中,選取 [從資料庫產生],然後按 [下一步]。
進行下列其中一項步驟,將資料模型連接至資料庫,然後按一下 [下一步]:
如果尚未設定資料庫連接,請按一下 [新增連接],然後建立新的連接。 如需詳細資訊,請參閱 HOW TO:建立連接至 SQL Server 資料庫。 此 SQL Server 執行個體必須已附加 Northwind 範例資料庫。
-或-
如果您擁有已經設定為連接至 Northwind 資料庫的資料庫連接,請從連接清單中選取該連接。
在精靈的最後一頁上,選取資料庫中所有資料表的核取方塊,並且清除檢視表和預存程序的核取方塊。
按一下 [完成] 關閉精靈。
注意: 這樣產生的資料模型會在實體類型上公開外部索引鍵屬性。 使用 Visual Studio 2008 建立的資料模型不包含這些外部索引鍵屬性。 因此,您必須更新之前為了存取 Northwind 資料服務所建立之任何用戶端應用程式的用戶端資料服務類別,此資料服務是在嘗試存取這一版的 Northwind 資料服務之前使用 Visual Studio 2008 所建立。
若要建立資料服務
在 [方案總管] 中,以滑鼠右鍵按一下 ASP.NET 專案名稱,然後按一下 [加入新項目]。
在 [加入新項目] 對話方塊中,選取 [ADO.NET Data Services]。
針對服務名稱,輸入 Northwind。
Visual Studio 會針對新的服務建立 XML 標記和程式碼檔案。 根據預設,程式碼編輯器視窗隨即開啟。 在 [方案總管] 中,這個服務將會具有名稱 Northwind,副檔名為 .svc.cs 或 .svc.vb。
在資料服務的程式碼中,於定義資料服務和型別的類別定義中,取代註解
/* TODO: put your data source class name here */
,該型別是資料模型的實體容器,在這個案例中是NorthwindEntities
。 類別定義應該看起來如下所示:Public Class Northwind Inherits DataService(Of NorthwindEntities)
public class Northwind : DataService<NorthwindEntities>