使用IIS Express几秒钟后站点停止工作

时间:2016-09-02 20:46:48

标签: c# wpf iis-express

我必须从WPF应用程序启动IIS Express。我可以启动IISExpress,并在网站上浏览几秒钟。然后,当我点击任何链接时,它不会加载。然后,如果我关闭WPF应用程序,网页会立即响应。我的代码:

$footer

任何猜测为什么网站只运行几秒钟,并在关闭启动iisexpress的应用程序后再次运行?

修改

我注意到当我内置" Debug"它发生了,但当我建立"发布"这个问题没有发生。

1 个答案:

答案 0 :(得分:0)

我通过创建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();
    }

}