【问题标题】:Get execution path of class project used in IIS获取IIS中使用的类项目的执行路径
【发布时间】:2015-12-19 22:54:42
【问题描述】:

我正在从事一个仍然使用 Flash 作为前端的遗留项目。

但后端在 c# .net 3.5 中。

我创建了一个需要应用程序文件的新功能,为此我使用过:

Path.GetDirectoryName(Assembly.GetCallingAssembly().Location)

但它显示错误:

'C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET 文件\sirius2\af2e88a7\10f74a24\assembly\dl3\872c826f\89d0f861_6ef5d001\Images' 被拒绝

项目使用IIS和正确的路径,我们可以找到文件夹Images的路径在IIS映射的目录中。

有没有办法获得该路径?

【问题讨论】:

    标签: c# .net flash iis


    【解决方案1】:

    一些答案​​是使用网络项目。但是我使用的是类项目,并且在那种项目中没有引用服务器类。

    确实是 dll 的影子副本造成的问题,但要解决我需要使用

    Path.GetDirectoryName(new Uri(Assembly.GetExecutingAssembly().CodeBase.ToString()).LocalPath)
    

    并返回dll的真实路径。

    谢谢大家的帮助!

    【讨论】:

    • web环境定位bin文件夹的最佳正确解决方案
    【解决方案2】:

    由于 asp.net 处理编译代码的方式(通过使用 Shadow Copy 文件夹 - 上面的“临时 ASP>NET 文件目录”) - 您不能使用常规 Path.XXX 静态方法(请参阅 What is the "Temporary ASP.NET Files" folder for?更完整的答案)。

    相反,您可以使用 Server.MapPath("/") 这将返回应用程序根目录的物理路径 - 因此您也可以执行(例如)Server.MapPath("/Images")。

    这个答案显示了 MapPath 的其他选项: https://stackoverflow.com/a/275791/990323


    为了清楚起见(来自下面的 cmets): "/" 将返回相对于域根目录的路径(即"C:\inetpub\wwwroot""~/" 返回相对于应用程序实际安装位​​置的路径"C/MyCode/MyWebApp" 仅通过不以正斜杠或波浪线开头的字符串得到如下所述的相对路径行为。

    【讨论】:

    • 我的理解是 MapPAth("/") 是可能适合 OP 的网站根目录。 OP 没有指定站点的设置方式(即站点下的应用程序等),因此我链接到另一个具有更多选项的答案。我看不出这篇文章有什么特别无益的地方..
    • 否 - 这是不正确的。 “/”和“~/”的区别与请求无关。在链接中查看@splattne 的完整答案。
    • 为了清楚起见:“/”将返回相对于域根目录的路径(即“C:|inetpub\wwwroot”。“~/”返回相对于应用程序实际所在位置的路径安装“C/MyCode/MyWebApp” 只有不以正斜杠或波浪线开头的字符串才能获得您正在谈论的相对行为。
    • 你能快速编辑一下,我会删除反对票吗?
    【解决方案3】:

    如果您尝试访问一个静态目录,通常您需要指定相对于应用程序根目录的目录。这是使用“~/”完成的。例如,如果您总是想找到http://myapplication/images 的物理目录,而不管您的请求在哪个目录中执行,那么您可以使用以下命令:

    string rootImageDirectory = Server.MapPath("~/Images");
    

    如果您不指定波浪号而只使用“/”,则返回的目录是相对于当前执行路径而不是相对于应用程序的根目录。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-29
      • 1970-01-01
      • 1970-01-01
      • 2021-08-23
      相关资源
      最近更新 更多