2009-08-17 53 views
31

Chúng tôi đã có thể tạo trang web. Chúng tôi đã làm điều này bằng cách sử dụng thông tin trong liên kết này:Lập trình tạo trang web trong IIS bằng C# và đặt số cổng

https://msdn.microsoft.com/en-us/library/ms525598.aspx

Tuy nhiên, chúng tôi muốn sử dụng một số cổng khác cổng 80. Làm thế nào để chúng tôi làm điều này?

Chúng tôi đang sử dụng IIS 6

+0

gì IIS phiên bản bạn đang sử dụng? – kitsune

+0

Chúng tôi đang sử dụng IIS 6 –

+0

bạn muốn chỉ định cổng trong khi thiết lập hoặc bạn muốn thêm trang web vào IIS theo mã? –

Trả lời

65

Nếu bạn đang sử dụng IIS 7, có một API quản lý mới có tên gọi Microsoft.Web.Administration

Một ví dụ từ các bài đăng blog trên:

ServerManager iisManager = new ServerManager(); 
iisManager.Sites.Add("NewSite", "http", "*:8080:", "d:\\MySite"); 
iisManager.CommitChanges(); 

Nếu bạn đang sử dụng IIS 6 và muốn làm điều này, thật không may là phức tạp hơn.

Bạn sẽ phải tạo dịch vụ web trên mọi máy chủ, dịch vụ web xử lý việc tạo trang web vì mạo danh người dùng trực tiếp qua mạng sẽ không hoạt động chính xác (Nếu tôi nhớ chính xác).

Bạn sẽ phải sử dụng dịch vụ Interop và làm điều gì đó tương tự như sau (Ví dụ này sử dụng hai đối tượng, máy chủ và trang web, đó là trường hợp của các lớp tùy chỉnh mà lưu trữ của máy chủ và cấu hình trang web của):

string metabasePath = "IIS://" + server.ComputerName + "/W3SVC"; 
DirectoryEntry w3svc = new DirectoryEntry(metabasePath, server.Username, server.Password); 

string serverBindings = ":80:" + site.HostName; 
string homeDirectory = server.WWWRootPath + "\\" + site.FolderName; 


object[] newSite = new object[] { site.Name, new object[] { serverBindings }, homeDirectory }; 

object websiteId = (object)w3svc.Invoke("CreateNewSite", newSite); 

// Returns the Website ID from the Metabase 
int id = (int)websiteId; 

Xem thêm here

+0

Cảm ơn, không may chúng tôi đang sử dụng IIS 6. –

+0

Tôi đã làm điều này trong một dự án bảo trì di sản một lần, tôi sẽ xem liệu tôi có thể tìm thấy mã. Nó khá phức tạp và phức tạp không may. – kitsune

+0

Cảm ơn. Bộ mã thứ hai mà bạn đã đăng hoạt động. –

0
  1. Trong thuộc tính của trang web chọn "Web Site" tab và chỉ định cổng TCP.
  2. Trong studio nhằm mục đích gỡ lỗi chỉ định http://localhost:<port>/<site&gt; tại tab Web cho "Sử dụng IIS Local Web Server"
+0

Cảm ơn bạn đã trả lời. Nhưng đây là cách bạn làm điều đó bằng cách sử dụng giao diện người dùng, tôi cần phải biết làm thế nào để làm điều đó trong mã. –

+0

Bạn có thể sử dụng wmi trên JScript hoặc VBScript không? – Dewfy

4

Cố Bộ luật sau đây để biết các sử dụng PortNo

 DirectoryEntry root = new DirectoryEntry("IIS://localhost/W3SVC"); 

     // Find unused ID PortNo for new web site 
     bool found_valid_port_no = false; 
     int random_port_no = 1; 

     do 
     { 
      bool regenerate_port_no = false; 
      System.Random random_generator = new Random(); 
      random_port_no = random_generator.Next(9000,15000); 

      foreach (DirectoryEntry e in root.Children) 
      { 
       if (e.SchemaClassName == "IIsWebServer") 
       { 

        int site_id = Convert.ToInt32(e.Name); 
        //For each detected ID find the port Number 

        DirectoryEntry vRoot = new DirectoryEntry("IIS://localhost/W3SVC/" + site_id); 
        PropertyValueCollection pvcServerBindings = vRoot.Properties["serverbindings"]; 
        String bindings = pvcServerBindings.Value.ToString().Replace(":", ""); 
        int port_no = Convert.ToInt32(bindings); 

        if (port_no == random_port_no) 
        { 
         regenerate_port_no = true; 
         break; 
        } 
       } 
      } 

      found_valid_port_no = !regenerate_port_no; 
     } while (!found_valid_port_no); 

     int newportId = random_port_no; 
9

Heres giải pháp.
Blog article : How to add new website in IIS 7

Vào Nút bấm:

try 
{ 
    ServerManager serverMgr = new ServerManager(); 
    string strWebsitename = txtwebsitename.Text; // abc 
    string strApplicationPool = "DefaultAppPool"; // set your deafultpool :4.0 in IIS 
    string strhostname = txthostname.Text; //abc.com 
    string stripaddress = txtipaddress.Text;// ip address 
    string bindinginfo = stripaddress + ":80:" + strhostname; 

    //check if website name already exists in IIS 
    Boolean bWebsite = IsWebsiteExists(strWebsitename); 
    if (!bWebsite) 
    { 
     Site mySite = serverMgr.Sites.Add(strWebsitename.ToString(), "http", bindinginfo, "C:\\inetpub\\wwwroot\\yourWebsite"); 
     mySite.ApplicationDefaults.ApplicationPoolName = strApplicationPool; 
     mySite.TraceFailedRequestsLogging.Enabled = true; 
     mySite.TraceFailedRequestsLogging.Directory = "C:\\inetpub\\customfolder\\site"; 
     serverMgr.CommitChanges(); 
     lblmsg.Text = "New website " + strWebsitename + " added sucessfully"; 
    } 
    else 
    { 
     lblmsg.Text = "Name should be unique, " + strWebsitename + " is already exists. "; 
    } 
    } 
    catch (Exception ae) 
    { 
     Response.Redirect(ae.Message); 
    } 

Looping trên các trang web cho dù tên đã tồn tại

public bool IsWebsiteExists(string strWebsitename) 
    { 
     Boolean flagset = false; 
     SiteCollection sitecollection = serverMgr.Sites; 
     foreach (Site site in sitecollection) 
     { 
      if (site.Name == strWebsitename.ToString()) 
      { 
       flagset = true; 
       break; 
      } 
      else 
      { 
       flagset = false; 
      } 
     } 
     return flagset; 
    } 
+0

Chỉ dành cho IIS7 ..Không thể tìm thấy tham chiếu cho IIS6 – ppumkin

+5

-1 cho ký hiệu hungarian –

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