Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/267.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#App#u代码类中获取当前页面的URL?_C#_Asp.net_Url - Fatal编程技术网

如何从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中)。在此基础上,可以创建属性链:

底层对象是页面对象,因此如果将其强制转换为该对象,则使用页面对象中通常使用的任何对象,例如Request属性

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,你说得对。我知道我想说什么,但没说对。我编辑过-更好?某种程度上-底层对象可能不是一个页面,自定义处理程序不会那样公开它,这取决于映射,因此如果从处理程序内部调用日志,而该处理程序不将上下文公开为页面,则转换将失败-因此最好在日志上下文中避免它,或者至少在检查中包装它。