![](/img/trans.png)
[英]How to fix IIS Express (Google Chrome) error where the code stops a few seconds after clicking run?
[英]Site stops working after few seconds with IIS Express
我必須從WPF應用程序啟動IIS Express。 我可以啟動IISExpress,並在網站上瀏覽幾秒鍾。 然后,當我點擊任何鏈接時,它不會加載。 然后,如果我關閉WPF應用程序,網頁會立即響應。 我的代碼:
private void MainWindow_Loaded(object sender, RoutedEventArgs e)
{
StartSite();
}
public void StartSite()
{
string path = @"C:\Program Files\IIS Express\iisexpress.exe";
string args = @"/path:C:\Sites /port:9090 /systray:true";
if (!File.Exists(path))
throw new FileNotFoundException();
var process = Process.Start(new ProcessStartInfo()
{
FileName = path,
Arguments = args,
RedirectStandardOutput = true,
UseShellExecute = false,
CreateNoWindow = true
});
}
任何猜測為什么網站只運行幾秒鍾,並在關閉啟動iisexpress的應用程序后再次工作?
編輯
我注意到,當我構建“Debug”時,它會發生,但是當我構建“Release”時,問題不會發生。
我通過創建IIS啟動器(控制台應用程序)解決了我的問題。 我將一些參數傳遞給這個應用程序,它啟動IISExpress然后死掉。 現在在我的WPF應用程序中,而不是為IISExpress創建進程,我為我的啟動器創建了一個進程。 此控制台應用程序還通過退出代碼將進程ID返回給WPF。
class Program
{
static void Main(string[] args)
{
if (args == null)
Environment.Exit(-1);
string exeIIS = args[0];
string websitePath = args[1];
string port = args[2];
string argsIIS = MakeIISExpressArgs(websitePath, port);
int processID = LaunchIISExpress(argsIIS, exeIIS);
Environment.Exit(processID);
}
private static int LaunchIISExpress(string argsIIS, string pathExeIIS)
{
var process = Process.Start(new ProcessStartInfo()
{
FileName = pathExeIIS,
Arguments = argsIIS,
RedirectStandardOutput = true,
UseShellExecute = false,
CreateNoWindow = true
});
return process.Id;
}
private static string MakeIISExpressArgs(string websitePath, string port)
{
var argsIIS = new StringBuilder();
argsIIS.Append(@"/path:" + websitePath);
argsIIS.Append(@" /Port:" + port);
return argsIIS.ToString();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.