从Ajax调用服务时Web服务错误“无法创建类型”

时间:2009-05-20 15:56:55

标签: ajax web-services asp.net-2.0

我已经下载了Ajax Control工具包

当我从Ajax控件工具包模板创建一个网站时,我可以在一个文件(asmx)中创建一个Web服务,并将其连接到工具包中提供的不同Ajax控件。

但是,如果我将Toolkit添加到现有的ASP.Net 2.0应用程序Web项目中,则无法在单个asmx文件中创建Web服务。如果我创建一个Web服务VS也总是创建一个代码隐藏文件。由于此调用Web服务(或直接在浏览器中加载服务),因此会生成以下错误:

Parser Error 
Description: An error occurred during the parsing of a resource required to service this request. Please review the following specific parse error details and modify your source file appropriately.

Parser Error Message: Could not create type 'AddAjaxToApplication.List'.
Source Error: 

Line 1:  <%@ WebService Language="C#" CodeBehind="List.asmx.cs" Class="AddAjaxToApplication.List" %>

有谁知道如何解决这个问题?

谢谢,

7 个答案:

答案 0 :(得分:23)

我最后解决了这个问题。

在VS 2005中,我只需右键单击Web服务并选择“查看标记”即可。我刚刚更改了标记以使用正确的命名空间:

Line 1:  <%@ WebService Language="C#" CodeBehind="List.asmx.cs" Class="List" %>

我刚刚从命名空间中删除了项目名称以匹配List.asmx使用的命名空间,并且此错误消失了。

答案 1 :(得分:1)

在我的实例中,我重命名了类与.asmx文件不同的类,因此当从.aspx代码引用该文件时,它会生成此错误。

所以我有'AjaxManager.asmx',但是已经将该类重命名为'AjaxService',并且标记不匹配。在我的情况下,保留完全限定的命名空间不会导致任何问题。因此,如果您更改了类名(可能还没有推荐),请确保更正标记,如下所示:

<%@ WebService Language="vb" CodeBehind="AJAXManager.asmx.vb" Class="MyProject.UI.AjaxService" %>

答案 2 :(得分:1)

我在创建Web服务时发现的另一个重要事项和简单的解决方案。 尽量避免在文件后面创建代码

我在iis 7中的虚拟目录中访问Web服务时遇到同样的问题,然后我创建了内联代码asmx文件,然后访问它,它是可访问的

答案 3 :(得分:1)

我通过将文件MyService.asmx.cs后面的代码移到App_Code目录来解决了这个问题。

答案 4 :(得分:1)

我通过确保在MyService.dll下面的/bin文件夹中部署了Web.config来解决了这个问题。

答案 5 :(得分:1)

检查Published文件夹中是否确实存在指定类文件的路径,对我来说,App_Code文件夹不存在于已发布的目录中,因此我手动将文件夹放在那里,它完美地运行: - )

答案 6 :(得分:0)

我通过像这样提供代码隐藏的完整路径来解决这个问题

代码隐藏= “〜/ codebehind.asmx.cs”