如何解决Web Service方法名无效?

问题描述

出现以下错误

system.invalidOperationException:CheckPageAccess Web 服务方法名称无效。 在 System.Web.Services.Protocols.HttpServerProtocol.Initialize() 在 System.Web.Services.Protocols.ServerProtocolFactory.Create(Type type,HttpContext context,HttpRequest request,HttpResponse response,Boolean& abortProcessing)

我的网络方法

[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public void CheckPageAccess(string userid,Pages PageNo,bool IsPresentApprover = false)
{

Ajax 请求

this.CheckPageAccess = function (UserID) {                         
    var response = $http({
        url: "WebServicenName.asmx/CheckPageAccess",dataType: 'json',params: { 'userid': UserID,'PageNo': PageNo,'IsPresentApprover': IsPresentApprover},contentType: 'application/json;charset=utf-8',method: 'GET',async: true,cache: false,headers: { 'Accept': 'application/json','Pragma': 'no-cache' },});
    return response;
}

这在调试模式下工作正常,但是当我发布上述 web 方法时,将不会显示在托管链接中。

解决方法

从命令行运行 aspnet_regiis -i

C:\Windows\Microsoft.NET\Framework64\v4.0.30319>aspnet_regiis -i

如果问题仍然存在,请将以下代码添加到system.webServer > handlers下的第一行

<add name="ScriptHandlerFactory" path="*.asmx" verb="*" type="System.Web.Script.Services.ScriptHandlerFactory,System.Web.Extensions,Version=3.5.0.0,Culture=neutral,PublicKeyToken=31BF3856AD364E35" modules="ManagedPipelineHandler" scriptProcessor="" resourceType="Unspecified" requireAccess="Script" allowPathInfo="false" preCondition="integratedMode" responseBufferLimit="4194304"/>