/// <summary> /// Starts the IIS Express server. /// </summary> /// <param name="throwExceptionOnError">if set to <c>true</c> an exception, that occurs during launching the server process /// is thrown right after logging it to <see cref="System.Diagnostics.Debug"/> and <see cref="Console.Error"/>; /// otherwise the exception is catched and the method will return <c>false</c>.</param> /// <returns> /// A value indicating, whether the server start has succeeded. /// </returns> /// <exception cref="InvalidOperationException">Error launching server. Only thrown if <paramref name="throwExceptionOnError"/> was <c>true</c>.</exception> public bool StartServer(bool throwExceptionOnError = false) { _instance = IISExpress.Start(AppHostConfigFilePath, SiteName, AppPool, LauncherRelativePath); if (_instance is IISExpress.Process.Failed fail) { var errorText = new StringBuilder("Error starting IISExpress.") .AppendLine() .AppendLine($"Error: {fail.Exception.Message}") .ToString(); System.Diagnostics.Debug.WriteLine(errorText); Console.Error.WriteLine(errorText); return(!throwExceptionOnError ? false : throw new InvalidOperationException("Error launching server.", fail.Exception)); } else if (_instance is IISExpress.Process.Started) { return(true); } else { if (throwExceptionOnError) { throw new InvalidOperationException("Unknown error launching server. StartServer() returned unexpected object."); } return(false); } }
/// <summary> /// Initializes a new instance of the <see cref="IISExpressTestServerFixture"/> class. /// </summary> public IISExpressTestServerFixture() { _instance = IISExpress.Process.None.Default; }