从课堂内获取网站根目录的实际内容?

时间:2011-07-02 09:48:02

标签: asp.net-mvc file

您好,

我的MVC webapplication中有一个mailhandler类,需要获取mailTemplate文件的物理路径(根目录下的几个文件夹)。我该怎么做呢?我是否必须发送某种httpContext?我的mailHandler是一个singelton所以没有参数的构造函数:

public static EmailHandler Instance
{
    get {
        if (EmailHandler._emailHandler == null)
            EmailHandler._emailHandler = new EmailHandler();
        return EmailHandler._emailHandler; }
    set { EmailHandler._emailHandler = value; }
}

有什么想法吗?

3 个答案:

答案 0 :(得分:1)

就个人而言,我只想告诉它使用的基本路径;那么相同的代码可以在许多环境中工作,而不仅仅是网络。如果您是Web绑定的,HttpContext.Current可能会有所帮助。如果你想在中传递,我会传递抽象的HttpContextBase,ala MVC。

但是传入一个基本路径的字符串要容易得多:)

答案 1 :(得分:1)

  • 您可以在配置文件中存储基本文件夹的物理地址。然后执行Path.Combine(baseFolder,templatefile)以获取完整路径。这是首选方式,因为它不依赖于httpcontext可访问。
  • 您可以将该文件夹映射为IIS中的虚拟文件夹,然后使用Server.MapPath函数
  • 获取物理路径

答案 2 :(得分:1)

您可以随时抽象应用程序配置:)

public interface IApplicationConfiguration
{
    string EMailTemplateFolder { get; }
}

然后将实现此接口的类的实例传入相关方法。将实例传递给EMailHandler是另一种选择:

YourClassEMailHandlerContainer.Instance
    .InitializeWith(new ApplicationConfiguration())

ApplicationConfiguration : IApplicationConfiguration

在此之后,您只需拨打您的方法。

YourClassEMailHandlerContainer.Instance.ParseTemplate(name)

内部:

var templateFile = 
    Path.Combine(applicationConfiguration.EMailTemplateFolder, name);

希望这是有道理的。