Я работаю над сайтом электронной коммерции, основанным на ASP.NET MVC3 C #. Я реализовал задачу расписания, используя System.Threading, которая запускается каждую минуту. Эта задача расписания вызывает простую функцию, которая возвращает продукт и вставляет его в другую таблицу для некоторого требования.

Моя проблема:
Есть одно поле ProductImageURL, и все изображения хранятся в content / thumbs. Когда я пытаюсь получить этот путь с помощью HttpContext.Request.PhysicalApplicationPath, он выдает такую ​​ошибку

The method or operation is not implemented. at System.Web.HttpRequestBase.get_PhysicalApplicationPath()

Эта ошибка возникает из-за того, что существует функция задачи планировщика, запрашивающая изображение продукта через http, но исходный запрос не является http ... просто вызов простой функции. Если мы введем физический путь вручную, то функция будет работать правильно.

Итак, как я могу это решить? или Есть ли другой способ решить эту проблему?

0
Dharmik Bhandari 1 Авг 2012 в 13:35

1 ответ

Лучший ответ

Это не работает, потому что вы отправляете другой поток для обработки задачи. В этот момент у вас больше нет доступа к HttpContext ...., потому что вы находитесь в другом потоке. Новый поток ничего не знает ни о HttpContext, ни о его происхождении.

Вам, вероятно, понадобится использовать Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); или какой-либо эквивалент, чтобы получить путь к вашему приложению.

Другой вариант - передать текущий каталог с помощью HttpContext.Request.PhysicalApplicationPath в качестве строкового параметра вашей функции. На самом деле зависит от того, как ваш код настроен для создания фонового потока и вызова функции.

2
Tommy 2 Авг 2012 в 08:24