C# 南希:有等效的Server.MapPath(";~/";)吗?
我在Nancy中似乎找不到Nancy框架中System.Web.HttpContext.Current.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
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?