File.ReadAllLines在webservice上不起作用

时间:2010-02-23 09:37:55

标签: c# web-services

我想读取txt文件中的所有行,然后使用它来File.ReadAllLines。

在winforms上它运作良好。

但是,当我',尝试在webmethod的webservice上做同样的事情时崩溃

  

System.IO.FileNotFoundException:聂   możnodnnaleźćpliku'C:\ Program   Files \ Microsoft Visual Studio   9.0 \ Common7 \ IDE \ nameOfFile.txt”。

CopyOutputToDirectory设置为始终复制。

  string[] lines = File.ReadAllLines("nameOfFIle.txt", Encoding.Default)

文件位于webservice的webservice文件夹中,位于应用程序的应用程序文件夹中

4 个答案:

答案 0 :(得分:5)

如果文件位于Web服务的根文件夹(web.config文件所在的位置),则需要获取Web服务根路径并将其与文件名组合:

var path = Path.Combine(HostingEnvironment.ApplicationPhysicalPath, "nameOfFile.txt");
string[] lines = File.ReadAllLines(path, Encoding.Default);

答案 1 :(得分:3)

在ASP.NET(WebForms或WebService)应用程序中,您需要使用以下内容:

string filePath = Server.MapPath(@"~/nameofFile.txt");
using (var reader = System.IO.File.OpenText(filePath))
{
     ... reader.ReadAllLines();
}

假设该文件位于WebService的根目录中。

答案 2 :(得分:0)

网络服务正在C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\查找文件,如错误消息所示。

CopyOutputToDirectory会将文件复制到已编译的Web服务的bin目录中。

您需要将正确的路径传递给File.ReadAllLines - 如果您知道确切的位置,请通过(您可以尝试HostingEnvironment.ApplicationPhysicalPath作为Web服务的基本目录)。

答案 3 :(得分:0)

感谢您的帮助,但对于在此字符串文件上运行的类位于另一个文件夹中的情况并不好。

我有文件夹Webservice和文件夹Server(有这个类) 在webservice文件夹中我有webservice项目,在服务器文件夹中我有库

(这是我实现Facade模式的一种方式)

txt文件位于服务器文件夹中。