我有一个控制台应用程序,可以使用以下内容启动我们的某个Web项目。
using (var server = TestServer.Create<Startup>())
启动时,Web项目需要检查其web.config appSettings中的值。但是这些都缺失了。 ConfigurationManager.AppSettings
显示控制台应用appSettings而非Web项目。要清楚ConfigurationManager.AppSettings
调用来自Web项目内部。
从TestServer运行时,如何让Web项目使用web.config?
答案 0 :(得分: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项目的二进制文件的文件夹(项目的输出目录)。