#c# #asp.net #web-services
#c# #asp.net #веб-сервисы
Вопрос:
У меня есть веб-приложение AspNet. У него есть веб-служба .asmx. Содержимое следует:
<%@ WebService Language="C#" CodeBehind="~/App_Code/SystemNotificationsService.cs" Class="SystemNotificationsService2" %>
Обратите внимание, что codebehind не существует. Класс не существует. Тем не менее, он все равно компилируется без ошибок. Не обрабатывает ли он этот файл до времени выполнения?
Спасибо.
Комментарии:
1. Эта строка больше похожа на ссылку, а не на фактический код, поэтому на самом деле она не компилируется в том же смысле. Я никогда не подтверждал это, но я думаю, что это более или менее верно. P.S. Если нет кода, файл asmx может быть удален.
Ответ №1:
Я считаю, что все, что находится внутри App_Code
, не компилируется до тех пор, пока к нему не будет получен доступ. Это приложение для веб-сайта в старом стиле, а не веб-приложение? Если это веб-приложение, вам не следует использовать App_Code
папку, особенно если вы используете более новую версию C #, так как вы получите ошибки.
Комментарии:
1. Это было приложение для веб-сайта. Я скопировал / вставил все файлы в приложение веб-сайта в новый проект. Сначала он не запускался из-за app_code . Это вызывало повторяющиеся ссылки, пока я не переименовал папку App_Code в AppCode. В этом конкретном файле .asmx я забыл обновить codebehind, чтобы указать на новое местоположение, и был удивлен, обнаружив, что он все еще скомпилирован. Даже когда я ввел несуществующий класс в файл .asmx, он все равно скомпилировался. Я пришел к выводу, что он даже не просматривает этот файл до времени выполнения.
2. Новый проект? Новый проект — это веб-приложение или веб-сайт — у нового проекта не должно быть папки App_Code . Я не понимаю, где вы говорите «В этом конкретном файле .asmx я забыл обновить codebehind, чтобы указать его в новое местоположение». Для тестирования просто поместите C # в файл .asmx. Я бы создал новый проект WebApp и попробовал еще раз.
3. Первоначальный проект был проектом веб-сайта, я создал новый проект webapp. И скопировал содержимое старого проекта в новый проект. Таким образом, у него была папка App_Code, но в проектах webApp не должно быть папки с именем App_Code, поэтому я переименовал ее в AppCode . Я обновил все ссылки на код, которые указывали на переименованную папку. Все работает. Я был просто удивлен, обнаружив, что он полностью игнорирует файл asmx во время компиляции. Похоже, он ожидает до времени выполнения, затем просматривает имя класса.