【问题标题】:Best way to implement file access in C#在 C# 中实现文件访问的最佳方法
【发布时间】:2008-10-24 19:33:11
【问题描述】:

场景 - 我需要访问一个 HTML 模板以从我的业务逻辑层生成一封电子邮件。它是一个类库,包含一个包含文件的子文件夹。当我在单元测试中尝试以下代码时:

string FilePath = string.Format(@"{0}\templates\MyFile.htm", Environment.CurrentDirectory);
string FilePath1 = string.Format(@"{0}\templates\MyFile.htm", System.AppDomain.CurrentDomain.BaseDirectory);

它使用的是 C:\WINNT\system32\ 或 ASP.NET 临时文件夹目录。

在不使用 app.config 或 web.config 文件的情况下访问此文件的最佳方法是什么?

[这是使用 WCF 服务]

【问题讨论】:

标签: c# wcf file coding-style


【解决方案1】:

您是从 ASP.Net 应用程序运行它的,对吗?请改用Server.MapPath()

还可以查看System.IO.Path.Combine() 以了解连接路径。

[编辑] 既然你不能使用System.Web,试试这个:

System.Reflection.Assembly.GetExecutingAssembly().Location

GetEntryAssembly()

【讨论】:

  • WCF 服务正在使用它。
  • 嗯,我的 WCF 经验非常有限,您可以访问 Server 属性吗?无论如何都应该有类似的东西。
  • 不,除非我添加 System.Web 命名空间引用
【解决方案2】:

我相信你正在寻找

System.IO.Path.GetDirectoryName(Application.ExecutablePath);

【讨论】:

  • 这仅适用于 System.Windows.Form 命名空间。我正在使用类库
【解决方案3】:

我在我的网站上得到了这个工作!在过去的 2 年里,我一直没有在做这个!!!

我在 web.config 的 system.serviceModel 块中添加了这个。它似乎使所有路径都相对于您的服务的安装位置。

  <system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true">

迟到总比没有好?

【讨论】:

    【解决方案4】:

    使用

    System.Web.HttpServerUtility.MapPath( "~/templates/myfile.htm" )
    

    【讨论】:

    • 这实际上是在 WCF 服务中引用的类库文件中实现的。我不能使用任何 System.Web,因为它不是 ASP.NET 应用程序
    • 仅仅因为它是一个 ASP.NET 应用程序并不意味着你不能使用 System.Web
    猜你喜欢
    • 1970-01-01
    • 2018-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-16
    相关资源
    最近更新 更多