[How to use windows service to start IIS Express 7.5 and serve external on port 80]
研究了三天,終於發現就算使用Administraotor權限,建立Process時也是拒絕存取的狀況,不過如果你使用我下面的方法,就可以順利使用Windows Service方式啟動IIS Express 7.5,並且可以提供外網服務在port 80上。
1. 呼叫iisexpress.exe必須傳入【/site:你的網站名稱】
2. 如果是Windows XP中,Windows Service帳戶預設讀取IIS Express的設定檔為【C:\Documents and Settings\LocalService\My Documents\IISExpress\config】
3. 設定檔中必須定義以下東西:
<site name="TestMVC" id="2" serverAutoStart="true">
<application path="/">
<virtualDirectory path="/" physicalPath="C:\TestMVC" />
</application>
<bindings>
<binding protocol="http" bindingInformation="*:80:192.168.10.128" />
</bindings>
</site>
<!-- (其中site name就是網站名稱,bindingInformation就是你要開的IP與Port) -->
4. Windows Service必須要這樣寫(我使用Visual C# 2010):
Directory.SetCurrentDirectory(string.Format(@"C:\Program Files\IIS Express"));
process.StartInfo.WorkingDirectory = @"C:\Program Files\IIS Express";
process.StartInfo.FileName = @"C:\Program Files\IIS Express\iisexpress.exe";
process.StartInfo.Arguments = String.Format("/site:{0}", WebSiteName);
process.StartInfo.UseShellExecute = false;
process.StartInfo.CreateNoWindow = true;
process.StartInfo.WindowStyle = ProcessWindowStyle.Normal;
process.StartInfo.Verb = "runas"; //********VeryImportant!!
System.Diagnostics.Process.Start(process.StartInfo);
=======================
如果有任何問題歡迎留言發問。
If you have any problem , let me know~
=======================
更新:
1. 如果在Win7上,可能需要執行下列命令:
>netsh http add urlacl url=http://
yourIP:
yourPort/ user=everyone
例如 >netsh http add urlacl url=http://
192.168.0.1:
8080/ user=everyone
2. 需打開Windows防火牆,允許TCP連入連出,埠號為
8080(看您設定的是哪個埠號)。