Asp.net Web服务无法创建类型

时间:2014-12-04 14:59:30

标签: asp.net vb.net asmx

我正在尝试为网站创建网络服务,但我收到了“无法创建类型”的网站服务。从visual studio启动服务时出错。我没有想法,我想知道你是否可以帮助我找到问题。

.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

2 个答案:

答案 0 :(得分:1)

Class指令上的WebService属性似乎与后面代码中的类定义不匹配。

ESI-AP.InvAutoComplete.AutoComplete是名为AutoComplete的名为ESI-AP.InvAutoComplete,名为InvAutoComplete.AutoComplete

您的代码定义AutoCompleteInvAutoComplete(与指令匹配),但名称空间是{{1}} ,这不是同一个名称空间。

答案 1 :(得分:0)

Fisrtly让我告诉你,我不是vb.net专家,但前提与C#相同

我注意到上述答案对你不起作用。但是,首先,您需要修复标记,特别是.asmx文件中的属性,以便它反映您的命名空间和类名,因此对于给定的后端文件。

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

假设您的网络服务项目与您的网站位于同一解决方案,接下来需要做的是添加网络服务项目的参考到您的网站,以便'webservice.dll'位于网站的bin文件夹中。 之后'轻微的技巧'在你的网站结构中创建一个文件夹并称之为'webservices'在那里创建一个.asmx文件(后面没有代码)并将其添加到html

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

按照正常情况运行网站,然后转到http://yourlocalhost:xxxx/webservices/InvAutoComplete.asmx,希望这样做可以解决问题。

当部署到Web服务器(远程)时,记得创建相同的文件结构,每次要更新Web服务时,只需要替换网站bin文件夹中的“webservice.dll”。

我希望这有帮助,祝你好运。