Проблемы новичка ASP.NET с новым веб-сайтом

Я достаточно опытный разработчик .net для настольных компьютеров, но это моя первая попытка использовать ASP.NET, и я почти сразу же озадачен.

Я использовал мастер VS2008 «Новый веб-сайт» и получил простую рабочую страницу, страницу с выделенным кодом и все такое. Но мой следующий шаг по добавлению простого статического класса для некоторых служебных методов, которые будут использоваться всеми страницами, вообще не работает.

Я попытался поместить код в App_Code, я попытался создать новый проект библиотеки и сослаться на него ... все всегда хорошо компилируется в Visual Studio, но при загрузке на сервер он просто отказывается найти пространство имен / класс или распознать сборка библиотеки. Я пробовал возиться с web.config, но не смог найти способ сослаться на сборку библиотеки (например, "*", похоже, этого не делает).

На страницах сервера написано: Информация о версии: Версия Microsoft .NET Framework: 2.0.50727.3074; Версия ASP.NET: 2.0.50727.3074

Есть ли лучший способ для служебных методов и как я могу заставить свои страницы с выделенным кодом распознавать любой класс (а еще лучше пространство имен или даже сборку), кроме самого себя?

Точная ошибка, которую я получаю: CS0246: не удалось найти тип или имя пространства имен MyCommon (вам не хватает директивы using или ссылки на сборку?)


person lidgren    schedule 06.06.2009    source источник


Ответы (6)


Я предполагаю, что у вас есть есть инструкция using, указывающая на пространство имен?

Иногда я вижу кое-что ... на сервере, вы (в IIS) отметили новую папку как «приложение»? У него должен быть винтик в IIS. В противном случае он будет искать App_Code не в том месте («приложение» сообщает ему, где находится локальный корень приложения). Щелкните правой кнопкой мыши, свойства, "создать приложение" (или что-то в этом роде - у меня нет сервера под рукой ...)

person Marc Gravell    schedule 06.06.2009
comment
В Vista (IIS7) есть опция преобразования в приложение, которая должна помочь. - person RichardOD; 07.06.2009
comment
Да, я пробовал использовать глобальное пространство имен и явные пространства имен; все они хорошо сочетаются в Visual Studio и компилированном файле, но ломаются на сервере. К сожалению, у меня есть только FTP-доступ к серверу, поэтому я не могу проверить значки ... - person lidgren; 07.06.2009
comment
Без настройки папки в IIS как приложения она не будет работать ... какой это сервер? IIS 6? IIS 7? - person Marc Gravell; 07.06.2009
comment
Я точно не знаю; это веб-отель. Но; простой случай (просто Default.aspx со страницей с выделенным кодом) работал нормально ... будет ли это работать, не отмечая папку как приложение? Возможно, помечена только корневая папка ... попробую еще. - person lidgren; 07.06.2009
comment
Это определенно похоже на то, что мне нужно исследовать. - person RichardOD; 07.06.2009
comment
АГА! Это действительно была проблема. Корневая папка, вероятно, помечена как приложение, но я попытался опубликовать веб-приложение во вложенной папке; Я перешел на публикацию только с root-правами, и, похоже, все заработало - спасибо, Марк (и всем)! - person lidgren; 07.06.2009

Лучше всего игнорировать "проекты" веб-сайта. Они уникальны в мире Visual Studio тем, что не являются проектами (не .csproj или другие подобные файлы). Они будут казаться очень странными и нелогичными для любого разработчика, не являющегося веб-сайтом.

Вместо этого используйте File-> Add New Project и выберите «ASP.NET Web Application». В результате будет создан проект веб-приложения, который будет работать гораздо больше, чем вы ожидаете. Вы даже можете добавлять классы в любую понравившуюся папку, и они будут работать так, как вы ожидаете.

person John Saunders    schedule 06.06.2009
comment
Я пробовал это ненадолго, но не смог с аналогичными проблемами; но поскольку кажется, что все согласны с тем, что веб-приложение лучше, я, вероятно, попробую еще раз. - person lidgren; 07.06.2009
comment
Это не помогает решить проблему, но я согласен с вами, Джон, что приложения лучше, чем сайты. Здесь есть сообщение в блоге: mikehadlow.blogspot.com/2009/04/ - person RichardOD; 07.06.2009
comment
@lidgren: я предлагаю вам попробовать проект веб-приложения, а затем, если у вас возникнут проблемы, создайте новый вопрос. Ваша проблема может быть не такой, как эта. - person John Saunders; 07.06.2009

Я видел эту ошибку, когда класс не в App_Code ...

С другой стороны, вы могли начать с приложения ASP.NET вместо веб-сайта. Это 2 разные модели приложений. Вариант «Приложение» немного проще в том, что касается добавления классов и сборок.

person Henk Holterman    schedule 06.06.2009

Убедитесь, что ваш вспомогательный класс находится в том же пространстве имен, что и веб-форма, или полностью определите конкретный вспомогательный метод, который вы вызываете. Можете ли вы предоставить код того, что вы пытаетесь сделать?

person Tone    schedule 06.06.2009

Убедитесь, что вы переместили свой проект на сервер с помощью публикации в Интернете сайт. Кроме того, вы можете использовать проект веб-приложения (новые - > проект-> веб-> проект веб-приложения) вместо нового веб-сайта. Вероятно, он будет вести себя так, как вы ожидаете.

person JP Alioto    schedule 06.06.2009
comment
На самом деле я тоже пробовал это, и у меня были похожие проблемы, поэтому я вернулся на веб-сайт (ctrl-s для публикации казался проще ...) - person lidgren; 07.06.2009

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

Однако, если вам необходимо придерживаться модели проекта веб-сайта, вам следует убедиться, что вы добавили ссылку на свой проект (MyCommon) в веб-приложение, а затем создать оператор using в классе, который вы хотите его использовать.

person Zoman    schedule 06.06.2009