我正在尝试为网站创建网络服务,但我收到了“无法创建类型”的网站服务。从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
这是错误:
答案 0 :(得分:1)
Class
指令上的WebService
属性似乎与后面代码中的类定义不匹配。
ESI-AP.InvAutoComplete.AutoComplete
是名为AutoComplete
的名为ESI-AP.InvAutoComplete
的类,名为InvAutoComplete.AutoComplete
。
您的代码定义AutoComplete
,类是InvAutoComplete
(与指令匹配),但名称空间是{{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”。
我希望这有帮助,祝你好运。