Ajax发布返回错误

时间:2016-11-12 22:51:24

标签: c# jquery asp.net ajax web-services

当我发布到我的asmx Web服务时,会返回此错误:

  

无法创建类型' myProjectName.AutoCompleteWebService'。

我在StackOverflow和许多其他网站上尝试了所有答案,但没有人在我的案例中工作。

JQuery的

$("#txtSearchKeyWord").autocomplete({
   source: function (request, response) {
       $.ajax({
          url: "AutoCompleteWebService.asmx/IndentifySearch",
          data: "{ 'keyWord': '" + request.term + "','Lang': 'En' }",
          dataType: "json",
          type: "POST",
          contentType: "application/json; charset=utf-8",
          dataFilter: function (data) { return data; },
          success: function (data) {
                 $(currentElement).css({ "background": "rgb(255, 255, 255) none repeat scroll 0% 0% / auto padding-box border-box" });
                 response($.map(data.d, function (item) {
                     return {
                        value: item
                     }
                 }))
          },
          error: function (XMLHttpRequest, textStatus, errorThrown) {
                alert(textStatus);
          }
       });
  },
  open: function (event, ui) {
       //$(".ui-autocomplete").css("left", (parseInt($(".ui-autocomplete").css("left").replace("px", "")) - 114).toString() + "px");
  },
  minLength: 3,
  appendTo: "#Autocontainer"
});

ASMX

<%@ WebService Language="C#" CodeBehind="AutoCompleteWebService.asmx.cs" Class="RoyalTours.AutoCompleteWebService" %>

C#

[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ScriptService]

public class autocomp : System.Web.Services.WebService
{
   [WebMethod]
   public List<string> IndentifySearch(string keyWord)
   {
      string currentPageURL = HttpContext.Current.Request.Url.AbsolutePath;
      List<Package> olstPackage = null;
      olstPackage = new PackageRepository().SearchPackage(keyWord);
      List<string> olstResult = null;
      if (olstPackage.Count > 0)
      {
          olstResult = new List<string>();
          for (int indexCountry = 0; indexCountry < olstPackage.Count; indexCountry++)
          {
              olstResult.Add(olstPackage[indexCountry].KeyWord);

              if (olstPackage.Count <= 0)
              {
                  olstResult.RemoveAt(indexCountry);
              }
            }
       }
       return olstResult;
   }

}

1 个答案:

答案 0 :(得分:3)

我冒昧地猜测这是您的.asmx.asmx.cs文件之间课程不匹配的问题。

.asmx页面的顶部,请确保您的Class属性与class页面顶部的.asmx.cs相匹配,如下所示:

<强>代码隐藏

public class myService: System.Web.Services.WebService

前端

<%@ WebService Language="C#" CodeBehind="myService.asmx.cs" Class="MyProject.MyService" %>

如果使用Visual Studio创建新的Web服务(其默认名称类似于Service1.asmx),然后将其重命名为MyService.asmx,这是相当常见的习惯。但重要的是要注意,更新类引用以及文件名,因此在您忘记的情况下会引起头疼。

编辑:继续前进并编辑您的问题以清理代码,只是意识到您实际上已经包含了页面的标记和代码隐藏。

就像我怀疑的那样,你的课程并不匹配。看看:

<强>的.asmx

Class="RoyalTours.AutoCompleteWebService"

<强> .asmx.cs

public class autocomp