【问题标题】:Get path of ASP.NET MVC site in the file system获取文件系统中 ASP.NET MVC 站点的路径
【发布时间】:2011-07-06 14:41:52
【问题描述】:

我有一个 ASP.NET MVC 项目,它有一个名为 emails 的子文件夹。这包含我的电子邮件模板的 HTM 文件。在站点的某些位置,我有一个控制器需要加载其中一个模板并将其作为电子邮件发送。

我想要做的是使用反射来获取当前正在执行的程序集的路径,但它并没有像我预期的那样工作。我回来的路是:

var directory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);

'C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET 文件\ssl\1da130c4\f8e7810e\assembly\dl3\5f253aca\1a71f123_e83bcc01\Emails\ProductAccountConfirmation.htm'

我觉得这很奇怪,因为该站点是通过 Visual Studio 托管在 IIS 中的。我原以为这会给我在 dev 中的项目文件夹中的 dll 位置和生产中 IIS 的部署文件夹。

【问题讨论】:

    标签: asp.net asp.net-mvc reflection path


    【解决方案1】:

    你要找的是Server.MapPath(),它会给你正在执行的应用程序的路径。

    【讨论】:

      【解决方案2】:

      假设您的电子邮件子文件夹中有一个名为 template1.html 的文件。此代码应为您提供该 HTML 文件的完整路径。

      HttpContext.Current.Server.MapPath("/") + "\\emails\\template1.html";
      

      【讨论】:

        【解决方案3】:
        AppDomain.CurrentDomain.BaseDirectory
        

        【讨论】:

        • 回复帖子时,请添加说明或详细链接。
        • 完美,甚至适用于 IIS 下的子站点。
        【解决方案4】:

        在 ASP.Net 中,程序集有一个副本,它是在运行时使用的副本。您在项目文件夹中的 dll 只是模板。

        你需要这个目录的目的是什么?可能有其他方法可以实现您的目标。

        【讨论】:

          【解决方案5】:

          您可以通过以下方式获取应用程序的根路径:

          @HostingEnvironment.ApplicationPhysicalPath
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2013-08-05
            • 2011-10-02
            • 2014-11-16
            • 1970-01-01
            • 2020-06-28
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多