«Не удалось загрузить тип» в веб-сервисе, преобразованном в VB.NET.
-
09-06-2019 - |
Вопрос
Я написал простой веб-сервис на C#, используя SharpDevelop (который я только что получил и мне очень нравится).
Клиент хотел, чтобы это было в VB, и, к счастью, есть функция Convert To VB.NET.Это здорово.Перевел весь код, и он собирается.(Я долгое время пользовался «Блокнотом», поэтому могу показаться немного старомодным.)
Но я получаю эту ошибку, когда пытаюсь загрузить службу сейчас.
Parser Error Message: Could not load type 'flightinfo.Soap' from assembly 'flightinfo'. Source Error: Line 1: <%@ WebService Class="flightinfo.Soap,flightinfo" %>
Я удалил корзины и перестроил их, а также искал в Google (и stackoverflow).Я просмотрел файлы проекта на наличие остатков C#.
Есть идеи?
Решение
В VB.NET объявления пространства имен относятся к пространству имен проекта по умолчанию.Итак, если пространство имен по умолчанию для проекта установлено на X.Y, все между Namespace Z
и End Namespace
будет в пространстве имен X.Y.Z.В C# необходимо указать полное имя пространства имен независимо от пространства имен проекта по умолчанию.Таким образом, если бы проект C# имел пространство имен по умолчанию X.Y, файлы CS все равно включали бы пространство имен namespace X.Y
декларация.Если после преобразования в VB и пространство имен по умолчанию, и объявления пространств имен в файлах остаются прежними, вы получаете классы в пространстве имен X.Y.X.Y.Итак, в вашем случае класс Soap теперь находится в пространстве имен Flightinfo.flightinfo.Таким образом, есть три возможных решения:
измените файл asmx на
удалить пространство имен по умолчанию из проекта
- удалите объявления пространства имен из файлов vb
Другие советы
<%@ WebService Class="flightinfo.Soap,flightinfo" %>
Как называется ваш класс?
Проблема может быть связана с тем, что проекты VB.NET и C# используют разные соглашения об именах для сборок проекта и способы использования пространства имен проекта.По крайней мере, там я бы начал искать.