C# ASP.net中的路径问题
我正在努力做到以下几点 我正在用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应用程序
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,我会说不可能:-)