[英]Path Problem in ASP.net
我正在尝试执行以下操作我正在使用c#语言构建asp.net网站,我想从项目中读取文本文件(该文件位于项目内部),我试图通过这种方式获取文件Path:
string path=Request.PhysicalApplicationPath+"filename.txt";
但我不能使用单独的C#文件中的“请求”对象? 注意:分开的C3文件,我的意思是它与aspx文件不相关,您可以用我的方式还是以其他方式帮助我? 谢谢
我建议您从Web应用程序将路径传递到库。 因此,例如在您的网络应用中:
var path = Server.MapPath("~/filename.txt");
var result = BusinessLayer.SomeMethod(path);
您也可以在类库中使用HostingEnvironment ,但是我真的建议您反对它,因为它会与System.Web
创建依赖关系,这会使您的类库与Web上下文绑定在一起,而不是可单元友好的:
var path = Path.Combine(
HostingEnvironment.ApplicationPhysicalPath,
"filename.txt"
);
使用HttpContext.Current可以访问HTTP请求的Request,Server,Response和其他对象。
但我不能使用单独的C#文件中的“请求”对象?
我猜你的意思是这在dll中? 如果是这样,则可以通过在单独的dll中引用system.web并获取httpcontext.current对象来进行访问。
我将使用某种注入机制,要么将应用程序的根路径提供给类,要么将当前上下文/请求的副本提供给它可以使用的类。 本质上,您想给类提供一种找到路径(甚至给它提供路径)的方法,而不是使用在测试中很难重新创建的固定依赖关系。 为了简化我的示例,我将在执行操作时使用Request,但是您也可以轻松地仅将应用程序的基本路径作为字符串提供。
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关于如何计算服务器路径的想法结合起来。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.