Подтвердить что ты не робот

Ошибка Parser: не удалось создать тип

Я создал webservice и опубликовал его на локальном компьютере. Затем я загрузил его на сервер.

Теперь, когда я пытался получить доступ к webservice, он выдает следующую ошибку:

Parser Error Message: Could not create type 'webservice.myservice'

Source Error: Line 1: <%@ WebService Language="C#" CodeBehind="myservice.asmx.cs" Class="webservice.myservice" %>

Я попробовал эту ссылку, но не смог решить мою проблему.

Что мне делать?

4b9b3361

Ответ 1

Не знаю, если это что-то перетаскивает из тусклого и далекого прошлого.. но у меня была эта проблема.. исправил ее.. так что я думал, что буду делиться

Когда вы создаете веб-службу в Visual Studio (я использую 2010, но я бы представлял, что это то же самое для других), он создает файл с именем Service1.asmx

У вас возникнет соблазн переименовать его в MyService.asmx (или что-то еще)

Затем вы заглянете внутрь и увидите строку

public class Service1: System.Web.Services.WebService

который вы измените на

public class MyService: System.Web.Services.WebService

то при попытке запустить его вы получите сообщение об ошибке

Не удалось создать тип "MyProject.MyService"

cos он все еще считает, что класс называется Service1..

если вы щелкните правой кнопкой мыши файл .asmx и выберите разметку вида, вы увидите, что он все еще говорит

<%@ WebService Language="C#" CodeBehind="MyService.asmx.cs" Class="MyProject.Service1" %>

измените его на

<%@ WebService Language="C#" CodeBehind="MyService.asmx.cs" Class="MyProject.MyService" %>

сохранить его.. попробуйте..

работал у меня..

Ответ 2

У меня была такая же проблема, и я долго искал ее!

Я пробовал много вещей, включая следующее:

Никто из меня не работал. После некоторого поиска, тестирования и проклятия я, наконец, нашел проблему: Приложение (webservice) было неправильно размещено.

Позвольте мне пояснить немного:

У меня был проект, содержащий два решения: одним из решений был веб-сайт, который я создал (html, javascript и т.д.), другое решение содержало папку с бизнес-логикой, моделью базы данных и веб-сервисами. Очевидно, что папка webservices содержала мои файлы .asmx и код для них.

  • Project
    • Ядро данных
      • Модель базы данных
      • Бизнес-логика
      • Webservices
        • myWebservice.asmx
    • Сайт

Я принимал их следующим образом:

  • Мой сайт был размещен как новый сайт с папкой веб-сайта в виде корневой папки
  • Мои веб-службы, которые я размещал как приложение на своем веб-сайте, с папкой webservices как root

Более визуально:

  • IIS 7
    • Мой сайт = > Указание на папку "Веб-сайт"
      • Приложение Webservices = > Указание на папку "Веб-службы" в ядре данных

В результате появился следующий URL-адрес: http://website/webservices/myWebservice.asmx ", который дал мне ошибку" Не удалось создать тип".

Теперь, немного поиграв, я попробовал разместить мое приложение webservice, начиная с ядра данных, как root, вместо папки webservice.

Визуально:

  • IIS 7
    • Мой сайт = > Указание на папку "Веб-сайт"
      • Приложение Webservices = > Указание на папку "Data Core" .

Очевидно, использование того же url, что и раньше, дало бы мне ошибку "Файл не найден". Однако, используя следующий URL-адрес " http://website/webservices/webservices/myWebservice.asmx", я наконец получил мою страницу работающих веб-сервисов!

Небольшой пробой URL:

  • http://website/= > Мой сайт из папки "Веб-сайт"
    • webservices/= > Эквивалент папки "Data Core"
      • webservices/= > Папка "webservices" в папке "Data Core"
        • myWebservice.asmx = > Файл webservice в папке "webservices" в папке "Data Core"

Я предполагаю, что, поскольку я принимал свои веб-службы непосредственно из папки "webservices" в Data Core, сервер не смог найти скомпилированную DLL веб-служб (которая находится в папке "bin" ), так как я был хостинг на более глубоком уровне.

После изменения конфигурации и размещения веб-сервисов из папки "Data Core" сервер IIS мог "видеть" папку bin и успешно обслуживать веб-службы. При использовании правильного URL-адреса, который является ^ _ ^

Надеюсь, это ясно и поможет вам в решении проблем!

Ответ 3

Еще одна вещь, которая может вызвать проблему. Не создает приложение для проекта, бросая сам IIS.

Пуск → Поиск IIS

Откройте его!

Щелкните правой кнопкой мыши веб-сайт по умолчанию или веб-сайт, на котором вы планируете опубликовать его.

Добавить приложение... Введите псевдоним. "MyWebService"... Выберите физический путь. в моем случае был C:\inetpub\wwwroot\MyWebService, который является моим стандартным веб-сайтом.

Затем, когда вы публикуете бросить Visual Studio, выберите эту папку. или просто скопируйте в него свои файлы кода.

Ответ 4

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

Например, мой веб-сервис находился в SiteProject_1/SiteProject_2/service.asmx

Первоначально SiteProject_1 был тем, что я преобразовал в приложение в IIS. Я смог решить проблему, удалив это приложение в IIS и вместо этого включив SiteProject_2 в приложение.

Ответ 5

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

У меня был веб-сервис, который прекрасно работал в течение нескольких месяцев в решении с другими частями приложения, над которым я работаю. Вчера мне нужно было что-то исправить в ветке релиза, поэтому я открыл Visual Studio для копии решения в другом каталоге. Visual Studio решила быть полезной и незаметно переназначить все мои виртуальные каталоги в IIS туда, где программы будут находиться в папке релиза (если я попытался создать их, чего у меня не было). Теперь, когда я попытался запустить свой веб-сервис, IIS указывал на версию выпуска, в которой была asmx, но нет папки bin.

Открыв вкладку веб-свойств в моем решении для разработки и щелкнув Создать виртуальный каталог, переназначил ее обратно в версию для разработки, и все снова стало хорошо с миром.