2010-07-05 119 views
2

的标记和代码隐藏我的.NET Web服务文件的内容如下(几乎VS生成的内容):.NET Web服务“无法创建类型”

Services.asmx:

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

Services.asmx.vb:

Imports System.Web.Services 
Imports System.Web.Services.Protocols 
Imports System.ComponentModel 

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

    <WebMethod()> _ 
    Public Function HelloWorld() As String 
     Return "Hello World" 
    End Function 
End Class 

当我尝试访问Web服务,我得到:

分析器错误信息:无法创建类型“服务”

我试过在排位标记中的服务类规范与命名空间,但没有成功。

当我将代码隐藏在与.asmx相同的文件中时,一切正常。

+1

从项目中排除asmx文件及其代码(右键单击“从项目中排除”),添加一个新的asmx文件。它是否编译? – 2010-07-06 00:03:56

+0

是的,它编译。 – Hans 2010-07-06 02:15:08

回答

2

我会说这是一个与名称空间匹配的类名有关的问题。你有没有尝试将服务类重命名为其他东西?

+0

我试着重新命名这个类。我还通过VS向项目添加了一个新的“Web服务”。它将其命名为WebService1.asmx。我没有触及其中的任何生成的代码,但“http://localhost/WebService1.asmx”也会产生相同的错误。 – Hans 2010-07-06 02:17:55

3

因此,当我将构建配置更改为任何CPU时,它的工作原理是因为包含类型的.dll最终位于bin文件夹中。当构建配置设置为x86时,.dll只在bin/x86/Debug或bin/x86/Release中结束,而IIS看起来不是这样。似乎很傻。我错过了什么吗?

1

事实上,我有两个文件夹(x86和x64)用于两种配置,而IIS只在主bin文件夹中查找dll。我复制了dll文件,并立即生效。

0

我有这个问题编译的web项目。名称全部匹配,在另一个解决方案中工作正常

注意到这是一个'网络'项目。删除项目并将其添加回现有项目,并返回时未被识别为“Web”项目 - 然后编译并运行良好。