2016-08-03 46 views
2

我有一個控制檯應用程序,用以下命令啓動我們的Web項目之一。使用OWIN TestServer和ConfigurationManager

using (var server = TestServer.Create<Startup>()) 

在啓動時,web項目需要檢查它的web.config appSettings中的值。但是這些都沒有。 ConfigurationManager.AppSettings顯示控制檯應用程序appSettings而不是Web項目。要清除ConfigurationManager.AppSettings調用來自Web項目內部。

從TestServer運行時,如何讓web項目使用web.config?

回答

0

我有類似的問題。起初,我只是將整個web.config應用程序設置部分複製到測試項目的app.config中。然後我發現OwinHost.exe,它(正如其名稱所暗示的)只是在當前目錄中查找啓動類並運行它們。因爲,它實際上會使用正確的web.config。這是我使用的是現在的代碼,隨時用它代替TESTSERVER的:

 var psi = new ProcessStartInfo 
     { 
      FileName = Path.Combine(solutionRootPath, @"packages\OwinHost.3.0.1\tools\\OwinHost.exe"), 
      WorkingDirectory = packageFolder, 
      RedirectStandardError = true, 
      RedirectStandardOutput = true, 
      CreateNoWindow = true, 
      UseShellExecute = false 
     }; 

     var process = Process.Start(psi); 

     process.ErrorDataReceived += (sender, args) => 
     { 
      Console.WriteLine(args.Data); 
     }; 

     process.OutputDataReceived += (sender, args) => 
     { 
      Console.WriteLine(args.Data); 
     }; 


     process.BeginOutputReadLine(); 
     process.BeginErrorReadLine(); 

凡solutionRootPath是目錄包含解決方案,以及packageFolder是文件夾包含Web項目的二進制文件(項目的輸出目錄)。