2011-01-25 26 views
23

tôi sử dụng đoạn mã sau để tạo ra một hồ bơi ứng dụng:Tạo bể bơi ứng dụng sử dụng .NET 4.0

var metabasePath = string.Format(@"IIS://{0}/W3SVC/AppPools", serverName); 
DirectoryEntry newpool; 
DirectoryEntry apppools = new DirectoryEntry(metabasePath); 
newpool = apppools.Children.Add(appPoolName, "IIsApplicationPool"); 
newpool.CommitChanges(); 

Làm thế nào để xác định rằng các hồ bơi ứng dụng nên sử dụng .NET Framework 4.0?

Trả lời

41

Tôi thấy từ các thẻ bạn đang sử dụng IIS7. Trừ khi bạn hoàn toàn có, không sử dụng các thành phần tương thích IIS6. Cách tiếp cận ưa thích của bạn nên sử dụng API được quản lý Microsoft.Web.Administration.

Để tạo bể bơi ứng dụng sử dụng này và thiết lập các phiên bản .NET Framework để 4.0, làm điều này:

using Microsoft.Web.Administration; 
... 

using(ServerManager serverManager = new ServerManager()) 
{ 
    ApplicationPool newPool = serverManager.ApplicationPools.Add("MyNewPool"); 
    newPool.ManagedRuntimeVersion = "v4.0"; 
    serverManager.CommitChanges(); 
} 

Bạn nên thêm một tham chiếu đến Microsoft.Web.Administration.dll có thể được tìm thấy trong:

%SYSTEMROOT%\System32\InetSrv

+4

Có. Tôi đã chuyển sang ServerManager. Vấn đề là tôi không biết nơi DLL cho System.Web.Administration được đặt. Câu trả lời là '% WinDir% \ System32 \ InetSrv \ Microsoft.Web.Administration.dll' – jgauffin

+2

' Microsoft.Web.Administration' cũng có thể được thêm vào như một gói NuGet bây giờ thay vì tham chiếu dll trực tiếp – jgauffin

+0

@jgauffin - oh cool, bạn có phiền không nếu tôi thêm nó vào câu trả lời của tôi? – Kev

8
newpool.Properties["ManagedRuntimeVersion"].Value = "v4.0"; 

sẽ làm sam e điều như Microsoft.Web.Administration.dll nhưng sử dụng DirectoryEntry

Cũng

newPool.InvokeSet("ManagedPipelineMode", new object[] { 0 }); 

sẽ chuyển sang chế độ đường ống dẫn tích hợp hoặc cổ điển sử dụng DirectoryEntry.

2

Các câu trả lời khác tốt hơn trong trường hợp cụ thể của bạn, nhưng nói chung hãy nhớ rằng bạn có thể sử dụng công cụ appcmd để thực hiện việc này: https://technet.microsoft.com/en-us/library/cc731784%28v=ws.10%29.aspx. Cụ thể:

appcmd add apppool /name: string /managedRuntimeVersion: string /managedPipelineMode: Integrated | Classic

+0

Trong khi liên kết này có thể trả lời câu hỏi, tốt hơn nên đưa các phần quan trọng của câu trả lời vào đây và cung cấp liên kết để tham khảo. Câu trả lời chỉ liên kết có thể trở thành không hợp lệ nếu trang được liên kết thay đổi. –

+0

@AndrewArnold điểm tốt, được thực hiện. – bmm6o

Các vấn đề liên quan