2008-09-11 40 views

回答

7

據我所知,你可以啓動從命令提示符開發服務器具有以下路徑/語法:

C:\Windows\Microsoft.NET\Framework\v2.0.50727\Webdev.WebServer.exe /port:[PORT NUMBER] /path: [PATH TO ROOT] 

...所以我可以想像,你可以很容易地使用的Process.Start()通過一些代碼啓動你需要的細節。

當然,您需要將該版本號調整爲適合您的最新/期望值。

+5

如果webdev.webserver.exe不在該文件夾中,它可能位於C:\ Program Files \ Common Files \ Microsoft Shared \ DevServer \ 9.0(這是我找到它的地方) – Casper 2008-09-22 21:47:57

+1

Casper謝謝! – Anders 2008-11-13 14:11:39

+2

對於2013年這裏它是http://stackoverflow.com/questions/4772092/starting-and-stopping-iis-express-programmatically – Recursor 2014-07-03 23:15:32

8

這是我使用的工作:

using System; 
using System.Diagnostics; 
using System.Web; 
... 

// settings 
string PortNumber = "1162"; // arbitrary unused port # 
string LocalHostUrl = string.Format("http://localhost:{0}", PortNumber); 
string PhysicalPath = Environment.CurrentDirectory // the path of compiled web app 
string VirtualPath = ""; 
string RootUrl = LocalHostUrl + VirtualPath;     

// create a new process to start the ASP.NET Development Server 
Process process = new Process(); 

/// configure the web server 
process.StartInfo.FileName = HttpRuntime.ClrInstallDirectory + "WebDev.WebServer.exe"; 
process.StartInfo.Arguments = string.Format("/port:{0} /path:\"{1}\" /virtual:\"{2}\"", PortNumber, PhysicalPath, VirtualPath); 
process.StartInfo.CreateNoWindow = true; 
process.StartInfo.UseShellExecute = false; 

// start the web server 
process.Start(); 

// rest of code... 
1

大廈在@Ray Vega的有用的答案,並@詹姆斯穆爾對VS2010重要的更新,這是我實現覆蓋VS2012,如果需要退回到VS2010。我也選擇不選擇Environment.Is64BitOperatingSystem,因爲它在我的系統上出錯。也就是說,我有一個64位系統,但Web服務器位於32位文件夾中。因此,我的代碼首先查找64位文件夾,並在必要時退回到32位文件夾。

public void LaunchWebServer(string appWebDir) 
{ 
    var PortNumber = "1162"; // arbitrary unused port # 
    var LocalHostUrl = string.Format("http://localhost:{0}", PortNumber); 
    var VirtualPath = "/"; 

    var exePath = FindLatestWebServer(); 

    var process = new Process 
    { 
     StartInfo = 
     { 
      FileName = exePath, 
      Arguments = string.Format(
       "/port:{0} /nodirlist /path:\"{1}\" /virtual:\"{2}\"", 
       PortNumber, appWebDir, VirtualPath), 
      CreateNoWindow = true, 
      UseShellExecute = false 
     } 
    }; 
    process.Start(); 
} 

private string FindLatestWebServer() 
{ 
    var exeCandidates = new List<string> 
    { 
     BuildCandidatePaths(11, true), // vs2012 
     BuildCandidatePaths(11, false), 
     BuildCandidatePaths(10, true), // vs2010 
     BuildCandidatePaths(10, false) 
    }; 
    return exeCandidates.Where(f => File.Exists(f)).FirstOrDefault(); 
} 

private string BuildCandidatePaths(int versionNumber, bool isX64) 
{ 
    return Path.Combine(
     Environment.GetFolderPath(isX64 
      ? Environment.SpecialFolder.CommonProgramFiles 
      : Environment.SpecialFolder.CommonProgramFilesX86), 
     string.Format(
      @"microsoft shared\DevServer\{0}.0\WebDev.WebServer40.EXE", 
      versionNumber)); 
} 

我希望知情的讀者可能能夠提供適當的咒語VS2013,因爲它顯然將使用一個不同的方案...

0

您可以輕鬆地使用的Process Explorer找到完整的命令行選項需要手動啓動它。 在調試您的網站時啓動Process Explorer。對於VS2012,展開'devenv.exe'節點。右鍵點擊'WebDev.WebServer20.exe',從那裏你可以看到路徑和命令行值。

相關問題