缺少 .NET Nancy 自托管配置文件
.NET Nancy self hosting configuration files missing
我正在使用 Nancy 自托管功能进行一些单元测试。从我的单元测试项目(与 nancy API 项目分开),我使用以下代码创建我的 API:
的实例
var myApp = new NancyHost(new Uri(MockRestApiUrl), new Bootstrapper(), new HostConfiguration() { UrlReservations = new UrlReservations { CreateAutomatically = true } });
在 Bootstrapper 中,我有一些代码可以查找一组配置文件以预加载到内存中。请注意,这些不是要提供的静态文件,而是驱动 API 配置的文件。
我遇到的问题是 Bootstrapper 生成异常,因为它无法找到它正在寻找的配置文件。我通过 RootPathProvider.GetRootPath()
设置配置文件路径并得到:
C:...\AppData\Local\Temp\b3f2483d-8c40-45d8-8ba3-dd8db2b9bfd3\b3f2483d-8c40-45d8-8ba3-dd8db2b9bfd3\assembly\dl3\bf80d16d\b3b00d8e_bd91d201\Mapping\PropertyMapping.json
当我查看文件夹时,Mapping 文件夹和配置文件丢失了。我尝试将它们标记为 'Content' 和 'Copy Always' in Visual Studio 并多次清理我的解决方案,但没有成功。如何将这些文件复制到自托管站点?
我仍然不知道为什么我的模块中注入的路径提供程序给我一个“...AppData...”路径。但是,我确实按如下方式解决了它:
public class SelfHostRootPathProvider : IRootPathProvider
{
public string GetRootPath()
{
return AppDomain.CurrentDomain.BaseDirectory;
}
}
并且在从我的应用程序的 Bootstrapper 派生的 class 上:
public class IntegrationBootstrapper : Bootstrapper
{
protected override IRootPathProvider RootPathProvider
{
get { return new SelfHostRootPathProvider(); }
}
}
如果你需要实例化:
var myApp = new NancyHost(new Uri(ServiceUrl), new IntegrationBootstrapper(), new HostConfiguration() { UrlReservations = new UrlReservations { CreateAutomatically = true } });
这解决了我的单元测试项目的调试文件夹的路径。然后我必须确保任何配置文件都被 linked 到我的单元测试项目(添加 -> 现有项目 -> 添加为 link)并设置为内容/始终复制 Visual Studio 在这两个项目中。
我正在使用 Nancy 自托管功能进行一些单元测试。从我的单元测试项目(与 nancy API 项目分开),我使用以下代码创建我的 API:
的实例var myApp = new NancyHost(new Uri(MockRestApiUrl), new Bootstrapper(), new HostConfiguration() { UrlReservations = new UrlReservations { CreateAutomatically = true } });
在 Bootstrapper 中,我有一些代码可以查找一组配置文件以预加载到内存中。请注意,这些不是要提供的静态文件,而是驱动 API 配置的文件。
我遇到的问题是 Bootstrapper 生成异常,因为它无法找到它正在寻找的配置文件。我通过 RootPathProvider.GetRootPath()
设置配置文件路径并得到:
C:...\AppData\Local\Temp\b3f2483d-8c40-45d8-8ba3-dd8db2b9bfd3\b3f2483d-8c40-45d8-8ba3-dd8db2b9bfd3\assembly\dl3\bf80d16d\b3b00d8e_bd91d201\Mapping\PropertyMapping.json
当我查看文件夹时,Mapping 文件夹和配置文件丢失了。我尝试将它们标记为 'Content' 和 'Copy Always' in Visual Studio 并多次清理我的解决方案,但没有成功。如何将这些文件复制到自托管站点?
我仍然不知道为什么我的模块中注入的路径提供程序给我一个“...AppData...”路径。但是,我确实按如下方式解决了它:
public class SelfHostRootPathProvider : IRootPathProvider
{
public string GetRootPath()
{
return AppDomain.CurrentDomain.BaseDirectory;
}
}
并且在从我的应用程序的 Bootstrapper 派生的 class 上:
public class IntegrationBootstrapper : Bootstrapper
{
protected override IRootPathProvider RootPathProvider
{
get { return new SelfHostRootPathProvider(); }
}
}
如果你需要实例化:
var myApp = new NancyHost(new Uri(ServiceUrl), new IntegrationBootstrapper(), new HostConfiguration() { UrlReservations = new UrlReservations { CreateAutomatically = true } });
这解决了我的单元测试项目的调试文件夹的路径。然后我必须确保任何配置文件都被 linked 到我的单元测试项目(添加 -> 现有项目 -> 添加为 link)并设置为内容/始终复制 Visual Studio 在这两个项目中。