【问题标题】:Adding content files to and accessing content files from a web service将内容文件添加到 Web 服务和从 Web 服务访问内容文件
【发布时间】:2017-03-28 20:12:41
【问题描述】:

我想在我的 Web 应用程序/Web 服务的 bin 目录中包含一个 XML 文件。我已在 Visual Studio 的项目中包含 bin 文件夹并添加了该文件。我将其构建操作设置为“内容”并将复制到输出目录设置为“始终复制”。当我的代码去查找它时,我使用

string dir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
if (!dir.EndsWith(@"\")) dir += @"\";

获取目录并将其作为appPath 返回,其中appPath 是(非转义版本):

C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\vs\0c7655f\d4908928\assembly\dl3\5cf9fd67\fdc52284_ffa7d201\

然后我附加我的 XML 文件的文件名(string filename = "myXmlFile.xml")来读取它:

StreamReader reader = new StreamReader(appPath + filename);

但我在该行代码中遇到异常,它无法找到我的文件。我正在处理斜线的转义,所以不是这样。当我检查路径指向的物理目录时,它没有复制到该目录,这就是异常的原因。那么如何让我的文件被复制到那里呢?

【问题讨论】:

    标签: c# web-services output asmx


    【解决方案1】:

    HostingEnvironment.ApplicationPhysicalPath怎么样

    var dir = Path.Combine(HostingEnvironment.ApplicationPhysicalPath, "bin\\filename.xml")
    

    查看相关问题how to get the application path in asp.net?

    【讨论】:

    • 实际上 - 我们后来发现,如果我们想对它进行任何写入,我不应该将 bin 用于我的文件应该存在的位置。每当您从 Web 应用程序或服务写入其下文件夹中的内容文件时,它都会重置站点 - 因此任何静态全局变量都会被清除。对于任何想追随我脚步的人,请注意。当我们将它移到与站点相同的级别时,一切都很好 - 所以我们不再在该路径中使用bin。干杯!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-15
    • 2011-08-26
    • 1970-01-01
    相关资源
    最近更新 更多