C# 南希:有等效的Server.MapPath(";~/";)吗?

C# 南希:有等效的Server.MapPath(";~/";)吗?,c#,path,hosting,nancy,C#,Path,Hosting,Nancy,我在Nancy中似乎找不到Nancy框架中System.Web.HttpContext.Current.Server.MapPath()的等效项 我只想加载一个与应用程序服务相关的文本文件 我在大会上看到了这一点 using Nancy; using System; namespace Nancy.Hosting.Self { public class FileSystemRootPathProvider : IRootPathProvider, IHideObjectMembers

我在Nancy中似乎找不到Nancy框架中System.Web.HttpContext.Current.Server.MapPath()的等效项

我只想加载一个与应用程序服务相关的文本文件

我在大会上看到了这一点

using Nancy;
using System;

namespace Nancy.Hosting.Self
{
    public class FileSystemRootPathProvider : IRootPathProvider, IHideObjectMembers
    {
        public FileSystemRootPathProvider();

        public string GetRootPath();
    }
}
我不知道怎么用


更新:我刚刚发现我需要加载的任何东西都可以从bin/relase/目录中读取/写入。在Nancy自托管环境中,这是假定的方法吗?我想这是有道理的。

您可以依赖于
IRootPathProvider
并使用它调用
GetRootPath()
,它将为您提供应用程序的根,您可以从中添加(我建议在静态类中使用
Path.combined

<(例如
HtmlHelpers
扩展名)当
IRootPathProvider
依赖项不能被注入时,至少可以使用
AppDomain.CurrentDomain.BaseDirectory
,这是
DefaultRootPathProvider
在.Net 4.x的引擎盖下使用的:

我总是使用path.combine。只需要一个生产质量项目,我就永远不会合并路径字符串手动再次=)是否应该实现IHideObjectMembers?我认为这只是针对intellisense/visual studio的,所以这取决于您。这只是隐藏了代码完成的基本函数。如果它位于
NancyModule
中,那么只需将
IRootPathProvider
添加到构造函数中,就可以开始使用它调用
GetRootPath()
@TheCodeJunkie我们如何从引导程序访问IRootPathProvider?