2010-11-19 51 views
6

Khi phát triển một trang web trên VS2010/IIS 7.5, tôi đang sử dụng Triển khai Web để xuất bản trang web từ máy của tôi lên máy chủ trang web dev.Triển khai web IIS - tạo thư mục ảo?

Trang web có khoảng 40 thư mục ảo và tôi muốn tự động tạo những thư mục đó trên máy chủ trong khi triển khai. Có một cách đơn giản để làm điều này?

Tôi đang xem xét viết một ứng dụng nhỏ có thể tải danh sách từ một tệp hoặc cơ sở dữ liệu và tạo chúng theo yêu cầu. Các thư mục có đường dẫn vật lý khác nhau trên máy phát triển của tôi so với trên máy chủ web, cũng có, mà ném một cờ lê vào các công trình.

+0

40 thư mục ảo? Vì vậy, bạn có 40 ứng dụng khác nhau. Hmmm, có vẻ như rất nhiều. Bạn đang phát triển loại trang web nào? Tôi biết các nhà cung cấp dịch vụ lưu trữ nhỏ có ít thư mục ảo trên máy chủ của họ hơn bạn :-) –

+0

Không, nó không phải là 40 ứng dụng khác nhau. Tôi đang dần chuyển đổi một ứng dụng ASP (400k + dòng mã và hơn 100.000 trang) HUGE sang .NET MVC. Các thư mục virt cho phép trang web mới truy cập nội dung cũ tại các url hiện có. –

Trả lời

6

Nếu bạn đang sử dụng MSBuild để triển khai web, bạn có thể viết CustomBuildTask in .net mà bạn có thể sử dụng để tạo thư mục ảo của bạn.

Có rất nhiều tài nguyên về làm thế nào để tạo ra và tiêu thụ một xây dựng nhiệm vụ tùy chỉnh, nhưng ở đây là mã tôi sử dụng để tạo ra một thư mục ảo bằng cách sử dụng tùy chỉnh xây dựng nhiệm vụ:

public void CreateVirtualDirectory() 
{ 

    DirectoryEntry oDE = new DirectoryEntry("IIS://" + 
      this._strServerName + "/W3SVC/" + _webSiteID + "/Root"); 


    //Get Default Web Site 
    DirectoryEntries oDC = oDE.Children; 

    //Add row to schema 
    DirectoryEntry oVirDir = oDC.Add(this._strVDirName, 
       oDE.SchemaClassName.ToString()); 

    //Commit changes for Schema class File 
    oVirDir.CommitChanges(); 


    //Set virtual directory to physical path 
    oVirDir.Properties["Path"].Value = this._strPhysicalPath; 

    //Set read access 
    oVirDir.Properties["AccessRead"][0] = true; 

    //Set the default docs 
    oVirDir.Properties["EnableDefaultDoc"][0] = true; 
    oVirDir.Properties["DefaultDoc"][0] = "default.aspx"; 

    //set the name 
    oVirDir.Properties["AppFriendlyName"][0] = this._strVDirName; 

    //do it 
    oVirDir.Invoke("AppCreate", true); 


    //set the application pool 
    if (!string.IsNullOrEmpty(_strApplicationPool)) 
    { 
     object[] param = { 0, _strApplicationPool, true }; 
     oVirDir.Invoke("AppCreate3", param); 
     oVirDir.Properties["AppIsolated"][0] = "2"; 
    } 

    //Save all the changes 
    oVirDir.CommitChanges(); 
} 
+0

Cảm ơn bạn đã lấy mẫu mã. Tôi đã (tất nhiên) hy vọng cho một cái gì đó sẽ được tự động hơn một chút, nhưng điều này chắc chắn sẽ có được công việc làm. –

1

Tôi chưa thực hiện bất kỳ chương trình tùy chỉnh nào đối với WebDeploy, nhưng tôi đã thấy tham chiếu rằng có API cho nó. Tôi không thể tìm thấy tài liệu chính thức về nó, nhưng có lẽ ứng dụng mẫu + blog này có thể cung cấp một sự khởi đầu: Web Deploy API Web Application

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