Как я могу получить URL текущей страницы из класса C # App_Code? - PullRequest
4 голосов
/ 20 октября 2010

У меня есть класс журналирования, который, ну, в общем, регистрирует вещи.Я хотел бы добавить возможность автоматической регистрации текущей страницы с сообщениями.

Есть ли способ получить информацию, которую я ищу?

Спасибо,

Ответы [ 4 ]

6 голосов
/ 20 октября 2010

Из вашего класса вы можете использовать свойство HttpContext.Current (в System.Web.dll). Оттуда вы можете создать цепочку свойств:

Базовым объектом является объект Page, поэтому, если вы приведете его к этому, то используйте любой объект, который вы обычно используете из объекта Page, например свойство Request.

2 голосов
/ 20 октября 2010

Это хрупкое и трудное для тестирования, но вы можете использовать System.Web.HttpContext.Current , который даст вам свойство Request , которое в свою очередь имеет RawUrl собственность.

0 голосов
/ 20 октября 2010

В прошлом я также катал свои собственные классы журналирования и использовал Console.Writeln () , но на самом деле существует ряд хороших опций журналирования, которые уже существуют, так зачем идти туда? Я использую NLog почти везде; он чрезвычайно гибок с различными назначениями вывода журнала, включая консоль и файл, множеством опций формата журнала, и тривиален для настройки с версиями, предназначенными для различных .net сред, включая компактные. Запуск установщика добавит параметры файла конфигурации 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));
0 голосов
/ 20 октября 2010
public static class MyClass
{
    public static string GetURL()
    {
        HttpRequest request = HttpContext.Current.Request;
        string url = request.Url.ToString();
        return url;
    }
}

Я попытался немного разбить его:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...