Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP.net中的路径问题_C#_Asp.net - Fatal编程技术网

C# ASP.net中的路径问题

C# ASP.net中的路径问题,c#,asp.net,C#,Asp.net,我正在努力做到以下几点 我正在用c语言建立asp.net网站 我想从我的项目中读取一个文本文件(该文件在项目中) 我尝试通过以下方式获取文件路径: string path=Request.PhysicalApplicationPath+"filename.txt"; 但是我不能从分离的C#文件中使用“Request”对象?? 注意:分离的C3文件,我的意思是它与aspx文件无关 你能帮我走我的路吗?或者你有别的办法吗?? thx我建议您从web应用程序传递到库的路径。例如,在您的web应用程序

我正在努力做到以下几点 我正在用c语言建立asp.net网站 我想从我的项目中读取一个文本文件(该文件在项目中) 我尝试通过以下方式获取文件路径:

string path=Request.PhysicalApplicationPath+"filename.txt";
但是我不能从分离的C#文件中使用“Request”对象?? 注意:分离的C3文件,我的意思是它与aspx文件无关 你能帮我走我的路吗?或者你有别的办法吗??
thx

我建议您从web应用程序传递到库的路径。例如,在您的web应用程序中:

var path = Server.MapPath("~/filename.txt");
var result = BusinessLayer.SomeMethod(path);
您也可以在类库中使用,但我建议您不要使用它,因为它会创建与
System.Web
的依赖关系,这会使您的类库绑定到Web上下文,而不利于单元测试:

var path = Path.Combine(
    HostingEnvironment.ApplicationPhysicalPath, 
    "filename.txt"
);

我建议您从web应用程序传递到库的路径。例如,在您的web应用程序中:

var path = Server.MapPath("~/filename.txt");
var result = BusinessLayer.SomeMethod(path);
您也可以在类库中使用,但我建议您不要使用它,因为它会创建与
System.Web
的依赖关系,这会使您的类库绑定到Web上下文,而不利于单元测试:

var path = Path.Combine(
    HostingEnvironment.ApplicationPhysicalPath, 
    "filename.txt"
);
使用可以访问HTTP请求的请求、服务器、响应和其他对象。

使用可以访问HTTP请求的请求、服务器、响应和其他对象

但是我不能从分离的C#文件中使用“Request”对象

我猜你是说这是在dll中? 如果是这样,那么您可以通过在单独的dll中引用system.web并获取httpcontext.current对象来访问它

但是我不能从分离的C#文件中使用“Request”对象

我猜你是说这是在dll中?
如果是这样,那么您可以通过在单独的dll中引用system.web并获取httpcontext.current对象来访问它。我将使用某种注入机制,为类提供应用程序根路径,或者为它可以使用的类提供当前上下文/请求的副本。本质上,您希望为类提供查找路径(甚至为其提供路径)的方法,而不是使用在测试中很难重新创建的固定依赖项。为了简化我的示例,我将像您这样使用请求,但是,您也可以轻松地以字符串形式提供应用程序的基本路径

public class Foo
{
     // HttpRequestBase may be more appropriate
     private HttpRequest Request { get; set; }

     public Foo( HttpRequest request )
     {
         this.Request = request;
     }

     public void Bar()
     {
          string path = Path.Combine( this.Request.PhysicalApplicationPath,
                                      "filename.txt" );
          ...
     }
}

请注意,您可以将这一点与@Darin关于如何计算服务器路径的想法结合起来。

我将使用某种注入机制,将应用程序根路径提供给类,或将当前上下文/请求的副本提供给它可以使用的类。本质上,您希望为类提供查找路径(甚至为其提供路径)的方法,而不是使用在测试中很难重新创建的固定依赖项。为了简化我的示例,我将像您这样使用请求,但是,您也可以轻松地以字符串形式提供应用程序的基本路径

public class Foo
{
     // HttpRequestBase may be more appropriate
     private HttpRequest Request { get; set; }

     public Foo( HttpRequest request )
     {
         this.Request = request;
     }

     public void Bar()
     {
          string path = Path.Combine( this.Request.PhysicalApplicationPath,
                                      "filename.txt" );
          ...
     }
}

请注意,您可以将这一点与@Darin关于如何计算服务器路径的想法结合起来。

谢谢Darin,但我遇到了同样的问题,我无法使用我的C#文件中的“服务器”对象(这是我的基本问题)。我提供的第一个代码片段将放在Web应用程序中,其中包含服务器对象,而不是类库中。您可以将路径作为参数传递给类库方法,这样就不需要计算它了for@Hany,请不要在类库中执行此操作。谢谢Darin,但是我遇到了同样的问题,我不能从我的C#文件中使用“服务器”对象(这是我的基本问题)。我提供的第一个代码片段是放在Web应用程序中,在那里你有服务器对象,而不是在类库中。您可以将路径作为参数传递给类库方法,这样就不需要计算它了for@Hany,请不要在类库中执行此操作。我提供这只是一个例子,但建议你反对它。哎哟!这也将使这门课几乎不可能被测试。@tvanfosson,我会说不可能:-)天哪!这也将使这门课几乎不可能被测试。@tvanfosson,我会说不可能:-)