2014-12-04 4 views
0

Я пытаюсь создать веб-службу для веб-сайта, но при запуске службы из visual studio получаю ошибку «Не могу создать тип». У меня нет идей, и я хотел бы знать, можете ли вы помочь мне найти проблему.Asp.net Web Service Не удалось создать тип

.asmx (название проекта ESI-AP)

<%@ WebService Language="VB" CodeBehind="InvAutoComplete.asmx.vb" Class="ESI-AP.InvAutoComplete.AutoComplete" %>  

.asmx.vb

Imports System 
Imports System.Collections.Generic 
Imports System.Linq 
Imports System.Web 
Imports System.Web.Services 
Imports System.Web.Services.WebService 

Namespace InvAutoComplete 

<WebService(Namespace:="http://tempuri.org/")> _ 
<WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> _ 
<System.ComponentModel.ToolboxItem(False)> _ 
<System.Web.Script.Services.ScriptService> 
Public Class AutoComplete 
    Inherits System.Web.Services.WebService 

    <WebMethod()> _ 
    Public Function GetStates(prefixText As String, count As Integer) As List(Of String) 

     Dim statesTemp As List(Of String) = New List(Of String) From {"Alaska", "Alabama", "California", "North Dakota"} 
     Dim states As New List(Of String) 

     For Each SingleState As String In statesTemp 
      If SingleState.ToLower.Contains(prefixText.ToLower) Then 
       states.Add(SingleState) 
      End If 
     Next 

     Return states 

    End Function 

End Class 

End Namespace 

Здесь ошибка:

enter image description here

+0

Добро пожаловать в переполнение стека! ASMX - это устаревшая технология и не должна использоваться для новой разработки. WCF или ASP.NET Web API должны использоваться для всех новых разработок клиентов и серверов веб-сервисов. Один из намеков: Microsoft отстранила [ASMX Forum] (http://social.msdn.microsoft.com/Forums/en-US/asmxandxml/threads) в MSDN. –

ответ

1

Похоже, что атрибут Class в директиве WebService не соответствует определению класса в вашем коде.

ESI-AP.InvAutoComplete.AutoComplete является класс называется AutoComplete внутри имен называется ESI-AP.InvAutoComplete.

Ваш код позади определяет InvAutoComplete.AutoComplete, то класса является AutoComplete (соответствует директиве), но имена является InvAutoComplete, который не совпадает с пространством имен.

+0

Привет, кабэн, хорошо поймать! По какой-то причине я не опубликовал последний пример, который у меня был. Я редактировал свой пост с правильным пространством имен. Проблема все еще происходит. –

+0

@ Pier-Luc Тот факт, что название проекта «ESI-AP» не обязательно влияет на пространство имен. Поскольку вы явно сказали, что пространство имен в вашем кодебеле является 'InvAutoComplete', пространство имен в вашей директиве должно также быть' InvAutoComplete' – kaveman

+0

Да, класс в директиве в настоящее время является ESI-AP.InvAutoComplete.AutoComplete –

0

Fisrtly позвольте мне сказать вам, что я не эксперт vb.net, но помещение так же, как C#

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

<%@ WebService Language="VB" CodeBehind="InvAutoComplete.asmx.vb" Class="InvAutoComplete.AutoComplete" %> 

Предполагая, что ваш проект вебсервис находится в том же решение как ваш сайт, что вам нужно делать дальше, это добавить ссылку проекта WebService на ваш сайт так что «WebService. dll 'находится внутри папки bin на веб-сайте. После «небольшая хитрость здесь» создать папку на вашем сайте структуры и называем это сказать «WebServices» создать .asmx файл там (нет кода позади) и добавить к HTML

<%@ WebService Language="VB" CodeBehind="InvAutoComplete.asmx.vb" Class="InvAutoComplete.AutoComplete" %> 

Запуск веб-сайт, как вы, как правило, идите к http://yourlocalhost:xxxx/webservices/InvAutoComplete.asmx и, надеюсь, это сделает трюк.

При развертывании на веб-сервере (удаленно) не забудьте создать тот же файл strucutre, и каждый раз, когда вы хотите обновить веб-сервис, вам просто нужно заменить «webservice.dll» в папке bin на веб-сайте.

Надеюсь, это поможет и удачи.

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