2014-02-06 2 views
0

хотите использовать:Почему System.web недоступен?

fileMap.ExeConfigFilename = System.Web.HttpContext.Current.Server.MapPath("~/Synchroniser/ConvertXML/App.config"); 

в моем проекте. .HttpContext помечен как пространство имен не существует. Я посмотрел на старый проекте, где это работает и импортировал тот же реф файл моих ссылок, но маркировки с желтой меткой explainataion, также попыталось добавить

using System.Web.Http; 
using System.Web; 

, но не радости, любую идею?

+0

'Project/Ссылки/Добавить reference' –

+0

я попытался добавить это через там, но это не показывал, поэтому я просмотрел его в другом проекте и импортировал, но отмечен как желтый – John

+0

Возможно, вы отказались от своей целевой версии фрейма? –

ответ

1

Убедитесь, что ваш проект ориентирован на полный .NET 4.0 вместо клиентского профиля:

enter image description here

Теперь вам нужно добавить ссылку на сборку и System.Webusing System.Web к файлу:

enter image description here

Все это, как говорится, обратите внимание, что это абсолютно отвратительная вещь. В ваших библиотеках классов (a.k.a DAL, BAL, независимо ...) не должно быть никаких знаний о каком-либо HttpContext. Это чисто веб-материал, и он должен жить только там, где он принадлежит - на веб-уровне.

Ваш DAL, BAL, ... не должен делать никаких звонков System.Web.HttpContext.Current.Server.MapPath. Это просто должно быть имя файла в качестве параметра. То, как рассчитывается это имя файла, является чисто ответственностью вызывающего. Поэтому, если вызывающий абонент является веб-приложением, он может использовать метод MapPath. Если вызывающий абонент является настольным приложением, он должен использовать что-то еще. Если это приложение для Windows Phone, оно должно использовать другое. Посмотрите, как теперь ваш DAL, BAL, ... агностик вызывающего и гораздо более многоразовый?

+0

Правда, всего лишь небольшая заметка - нет смысла добавлять 'using System.Web', если он хочет использовать полностью указанное имя, включая пространства имен ... Просто хотел прояснить это для OP, потому что кажется, что он думал, что добавление дополнительного использования в верхней части файла может решить проблему. – walther

+0

Весь смысл моего ответа в том, что он не должен делать ничего подобного. Он не должен использовать «HttpContext» в тех местах, где он не должен. –

0

HttpContext.Current.Server.MapPath следует заменить HostingEnvironment.MapPath и реф System.Web.Hosting избегать использования HttpContext

 Смежные вопросы

  • Нет связанных вопросов^_^