如何从C#App#u代码类中获取当前页面的URL?
我有一个日志类,记录东西。我想添加的功能,自动有当前页面记录的消息 有没有办法得到我想要的信息如何从C#App#u代码类中获取当前页面的URL?,c#,asp.net,url,C#,Asp.net,Url,我有一个日志类,记录东西。我想添加的功能,自动有当前页面记录的消息 有没有办法得到我想要的信息 谢谢,它很脆弱,很难测试,但您可以使用它,它将为您提供一个属性,而该属性反过来又具有该属性。在您的类中,您可以使用该属性(在System.Web.dll中)。在此基础上,可以创建属性链: 及 底层对象是页面对象,因此如果将其强制转换为该对象,则使用页面对象中通常使用的任何对象,例如Request属性 public static class MyClass { public static
谢谢,它很脆弱,很难测试,但您可以使用它,它将为您提供一个属性,而该属性反过来又具有该属性。在您的类中,您可以使用该属性(在System.Web.dll中)。在此基础上,可以创建属性链:
- 及
public static class MyClass
{
public static string GetURL()
{
HttpRequest request = HttpContext.Current.Request;
string url = request.Url.ToString();
return url;
}
}
我试着把它分解一下:)在过去,我也推出了自己的日志类并使用了Console.Writeln(),但实际上已经存在很多好的日志选项,为什么要去那里呢?我几乎到处都用;它对于各种日志输出目标(包括控制台和文件)非常灵活,有很多日志格式选项,对于针对各种.net框架(包括compact)的版本来说,设置非常简单。运行安装程序会将NLog配置文件选项添加到Visual Studio添加新项对话框中。在代码中使用很简单:
// declare in your class
private static Logger logger = LogManager.GetCurrentClassLogger();
...
// use in your code
logger.Debug(() => string.Format("Url: {0}", HttpContext.Current.Request.Url));
确实不需要强制转换,HttpContext有一个可直接访问的请求属性。@blowdart,你说得对。我知道我想说什么,但没说对。我编辑过-更好?某种程度上-底层对象可能不是一个页面,自定义处理程序不会那样公开它,这取决于映射,因此如果从处理程序内部调用日志,而该处理程序不将上下文公开为页面,则转换将失败-因此最好在日志上下文中避免它,或者至少在检查中包装它。