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

从Ajax调用服务时出现Web服务错误“无法创建类型”,ajax,web-services,asp.net-2.0,Ajax,Web Services,Asp.net 2.0,我已经下载了Ajax控件工具包 当我从Ajax控件工具箱模板创建网站时,我可以在单个文件asmx中创建一个web服务,并将其连接到工具箱中提供的不同Ajax控件 但是,如果将工具包添加到现有的ASP.NET2.0ApplictionWeb项目中,则无法在单个asmx文件中创建web服务。如果我创建一个web服务,VS也总是创建一个代码隐藏文件。因此,调用web服务或直接在浏览器中加载服务会产生以下错误: Parser Error Description: An error occurred d

我已经下载了Ajax控件工具包

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

但是,如果将工具包添加到现有的ASP.NET2.0ApplictionWeb项目中,则无法在单个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" %>
有人知道如何解决这个问题吗

谢谢


蒂姆

我最终解决了这个问题

在VS2005中,我只需要右键单击web服务并选择ViewMarkup。我刚刚更改了标记以使用正确的命名空间:

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

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

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

因此,我使用了“AjaxManager.asmx”,但将该类重命名为“AjaxService”,并且标记不匹配。在我的例子中,保留完全限定的名称空间不会引起任何问题。因此,如果您更改了类名,可能无论如何都不会重新注册,请确保更正标记,如下所示:

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

我在创建web服务时发现了一个更重要的问题和简单的解决方案。尽量避免创建代码隐藏文件


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

我通过将代码隐藏文件MyService.asmx.cs移动到App_代码目录来解决这个问题。

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


CodeBehind=~/CodeBehind.asmx.cs

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

检查已发布文件夹中指定类文件的路径是否确实存在,对我来说,App_Code文件夹不在发布的目录中,所以我手动将文件夹放在那里,它工作正常:-

你可能认为Visual Studio会自动执行此操作。。。如果你还不知道的话。除了那句话-类名和往常一样区分大小写谢谢-VS 2013仍然有这个问题!我的正好相反。它需要完整的[Namespace].[Project].[Class]名称。但是你的想法是种子:也不要忘记名称空间是区分大小写的。FML。我也犯了同样的错误。我原以为Resharper会负责重命名,但我当然应该考虑更多。