gpt4 book ai didi

c# - 使用 HttpServer 测试 ASP.NET WebAPI 中的 ConfigurationManager

转载 作者:太空宇宙 更新时间:2023-11-03 11:59:49 24 4
gpt4 key购买 nike

我有一个 Web API 项目,我试图通过使用 HttpServer 的内存托管来测试它。

我的服务器正在运行,但请求返回 500 InternalServerError 响应。
当我尝试使用 ConfigurationManager 获取连接字符串时执行失败,在调试期间我可以看到 ConfigurationManager.ConnectionStrings 不包含给定键的值。
相反,它包含一些“默认”连接字符串。

{
"LocalSqlServer": "data source=.\\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true"`
}

Web.config 文件包含键为“my-database”的连接字符串

<configuration>
<connectionStrings>
<add name="my-database" providerName="System.Data.SqlClient"
connectionString="Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\hotel.mdf;Integrated Security=True" />
</connectionStrings>
</configuration>

失败的代码

public class Database
{
public static SqlConnection CreateConnection()
{
var connectionString =
ConfigurationManager.ConnectionStrings["my-database"].ConnectionString; // Fails here with NullReference exception
return new SqlConnection(connectionString);
}
}

HttpServer 配置和测试

public class ServerTest : IDisposable
{
private readonly HttpServer _server;

public ServerTest()
{
var config = new HttpConfiguration();
WebApiConfig.Register(config); // Call configuration from system under the test
config.IncludeErrorDetailPolicy = IncludeErrorDetailPolicy.Always;

_server = new HttpServer(config);
}

public void Dispose() => _server.Dispose();

[Fact]
public async Task ReturnsOk()
{
var client = new HttpClient(_server)
{
BaseAddress = new Uri("http://dummy.testing.api/")
};

var response = await client.GetAsync("rooms");

response.StatusCode.Should().Be(HttpStatusCode.OK);
}
}

如何配置 HttpServer 以使用实际配置(连接字符串)?

最佳答案

鉴于所提供的详细信息,我无法确定,但您是否将代码作为控制台应用程序运行?看来您可能正在将其作为某种 xUnit 测试来运行?无论如何,您可能需要确保在您工作的任何项目中都有一个“app.config”文件(而不是 web.config)。

关于c# - 使用 HttpServer 测试 ASP.NET WebAPI 中的 ConfigurationManager,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57525555/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com