使用OWIN TestServer和ConfigurationManager

时间:2016-08-03 08:37:46

标签: c# owin

我有一个控制台应用程序,可以使用以下内容启动我们的某个Web项目。

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

启动时,Web项目需要检查其web.config appSettings中的值。但是这些都缺失了。 ConfigurationManager.AppSettings显示控制台应用appSettings而非Web项目。要清楚ConfigurationManager.AppSettings调用来自Web项目内部。

从TestServer运行时,如何让Web项目使用web.config?

1 个答案:

答案 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项目的二进制文件的文件夹(项目的输出目录)。