我有我想爲其構建自動化測試的ASP.NET網頁(使用WatiN & MBUnit)。我如何從我的代碼啓動ASP.Net Development Server?我不想使用IIS。如何以編程方式運行使用C#的ASP.Net開發服務器?
11
A
回答
7
據我所知,你可以啓動從命令提示符開發服務器具有以下路徑/語法:
C:\Windows\Microsoft.NET\Framework\v2.0.50727\Webdev.WebServer.exe /port:[PORT NUMBER] /path: [PATH TO ROOT]
...所以我可以想像,你可以很容易地使用的Process.Start()通過一些代碼啓動你需要的細節。
當然,您需要將該版本號調整爲適合您的最新/期望值。
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',從那裏你可以看到路徑和命令行值。
相關問題
- 1. 如何強制Asp.net開發服務器以32位進程的方式運行?
- 2. 如何以編程方式知道我的應用程序是否正在「ASP.NET開發服務器」下運行?
- 3. 如何使用SharpSSH以編程方式從SFTP服務器運行命令?
- 4. 如何使ASP.NET開發服務器在端口80上運行?
- 5. 如何以編程方式打開運行C++?
- 6. 以編程方式運行appium服務器
- 7. 使用putty在遠程機器上運行Django開發服務器。如何運行dev服務器?
- 8. 如何讓asp.net開發服務器仍然運行?
- 9. 如何以編程方式從服務
- 10. 如何以編程方式知道服務器是否在運行?
- 11. 如何以編程方式在MongoDB中運行服務器端代碼
- 12. 如何在運行時以編程方式更改默認服務器Play + Ebean
- 13. 以編程方式在服務器
- 14. ASP.NET:以編程方式在window.opener中用JavaScript激發服務器端事件
- 15. 如何以編程方式運行testng?
- 16. 如何以編程方式驗證散列ASP.NET服務密碼?
- 17. 無法使用開發服務器運行Flask應用程序
- 18. Django開發服務器是否可以以編程方式啓動?
- 19. 如何以編程方式刪除c + +中的windows服務
- 20. 如何驗證用戶以編程方式使用Web服務?
- 21. 以編程方式使用Storyboards進行iOS開發的速度?
- 22. 如何使用Testng以編程方式運行並行套件?
- 23. 以編程方式在ASP.NET服務器上創建目錄
- 24. 如何以編程方式訪問遠程OPC服務器?
- 25. 如何以編程方式在iPhone開發中使用UIButton
- 26. 如何以編程方式啓動Java中的Mysql服務器?
- 27. 如何以編程方式將觸發器添加到ASP.NET UpdatePanel?
- 28. 如何使用ObjectDataSource以編程方式更新ASP.NET GridView行
- 29. 以root用戶身份以編程方式運行C程序
- 30. 以編程方式啓動systemd服務或測試運行的服務
如果webdev.webserver.exe不在該文件夾中,它可能位於C:\ Program Files \ Common Files \ Microsoft Shared \ DevServer \ 9.0(這是我找到它的地方) – Casper 2008-09-22 21:47:57
Casper謝謝! – Anders 2008-11-13 14:11:39
對於2013年這裏它是http://stackoverflow.com/questions/4772092/starting-and-stopping-iis-express-programmatically – Recursor 2014-07-03 23:15:32