2009-10-05 5 views
5

Я хочу использовать метод Server.MapPath() для сопоставления виртуального каталога Я создал его физический путь.Server.MapPath()

Дело в том, что среда .net не распознает Server.MapPath().

Google сказал мне, что я должен использовать HttpContext.Current.Server, используя System.Web, , но HttpContext не распознается, несмотря на то, что я использую System.Web. (И я проверил - HttpContext - один из классов System.Web)

Помощь?

+0

На каком языке это будет? – Esko

+0

'.net не распознает Server.MapPath()'. Есть ли ошибка? – rahul

+1

Включили ли вы System.Web в качестве ссылки на проект? – rslite

ответ

3

Убедитесь, что вы включили System.Web в ваших проектах Ссылки ли это (в Visual Studio IDE):

  1. правой кнопкой мыши на узле проекта (Solution Explorer, окна)
  2. В контекстном Менну , нажмите Добавить ссылку
  3. Выберите System.Web в элементах списка вкладки .NET. Теперь
  4. Hit кнопку OK

Server.MapPath должны быть доступны.

+0

Это решение работало для меня, когда я работал в библиотеке классов. –

3

Если у вас есть веб-приложение, вы должны автоматически ссылаться на System.Web.dll, и у вас должен быть доступ к классу System.Web.HttpContext. Убедитесь, что вы случайно не удалили ссылку. Вам понадобится оператор using System.Web; для доступа к классу HttpContext без указания полного пространства имен.

Если у вас нет веб-приложения, вам необходимо добавить рефери на адрес System.Web.dll, чтобы получить доступ к классу HttpContext, но это вам не поможет. Поскольку вы не находитесь в веб-приложении, нет контекста HTTP, и нет корневой папки в Интернете, поэтому вы не можете использовать метод MapPath.

+0

Это может быть метод в отдельной сборке, который используется веб-приложением, поэтому контекст может быть там в конце концов. – rslite

+0

@ rslite: Да, вы правы. Это также возможный резонанс, почему ссылка может отсутствовать. – Guffa

1

Такая же проблема здесь. В веб-приложении ASP.net 4.0 в обработчике .ashx с using System.Web вверху. Я не мог использовать Server.MapPath(), что и говорит книга, которую я использую, или System.Web.HttpServerUtility.MapPath(), что и Google и MSDN. Я также не мог использовать HttpServerUtility.MapPath(), как указано выше.

Тем не менее, один из других ответов здесь побудил меня попробовать context.Server.MapPath(), который действительно работает в моем методе ProcessRequest(HttpContext context).

+0

Чтобы быть более точным: 'HttpContext.Current.Server.MapPath()' – Nurp