【问题标题】:asmx web service method name is not validasmx Web 服务方法名称无效
【发布时间】:2017-04-07 16:56:57
【问题描述】:

真的可以在这里使用一些帮助...

我试图在我的一个 Web 方法中使用一个对象作为参数,但我收到以下错误消息:

System.InvalidOperationException: TestParameter Web Service method name is not valid.
   at System.Web.Services.Protocols.HttpServerProtocol.Initialize()
   at System.Web.Services.Protocols.ServerProtocol.SetContext(Type type, HttpContext context, HttpRequest request, HttpResponse response)
   at System.Web.Services.Protocols.ServerProtocolFactory.Create(Type type, HttpContext context, HttpRequest request, HttpResponse response, Boolean& abortProcessing)

ASMX 代码:

Imports System.Web.Services
Imports System.Web.Services.Protocols
Imports System.ComponentModel
Imports System.Web.Script.Serialization

' To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line.
<System.Web.Script.Services.ScriptService()>
<System.Web.Services.WebService(Namespace:="http://tempuri.org/")> _
<System.Web.Services.WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> _
<ToolboxItem(False)> _
Public Class TestService
    Inherits System.Web.Services.WebService

    <WebMethod()>
    Public Function TestParameter(ByVal req As TestObject) As String
        Return New JavaScriptSerializer().Serialize(req)
    End Function

    <WebMethod>
    Public Function TestGetParameter() As String
        Return New JavaScriptSerializer().Serialize(New TestObject)
    End Function

    Public Class TestObject
        Public var1 As String = String.Empty
        Public var2 As Integer = 1
    End Class

End Class

我已经花了几个小时在谷歌上寻找,但到目前为止找不到任何有用的东西:(

我已经在我的 web.config 中添加了以下内容

  <webServices>
    <protocols>
      <add name="HttpGet"/>
      <add name="HttpPost"/>
    </protocols>
  </webServices>

还有我的“测试”ajax 调用:

   $(function () {
        debugger;
        request = { "var1": "", "var2": 1 };

        var settings = {
            async: true,
            crossDomain: true,
            contentType: "application/json; charset=utf-8",
            dataType: "jsonp",
            url: "http://server/TestService.asmx/TestParameter",
            method: "POST",
            data: "{ 'req':" + JSON.stringify(request) + "}"
        }

        $.ajax(settings).done(function (response) {
            console.log(response);
        });
    });

如您所见,它几乎不可能更简单,但它不起作用!我做错了什么??

在 IIS7.5 上运行,带有 Windows 身份验证(无匿名)和 ASP.NET v3.5;管道模式 = 经典

【问题讨论】:

    标签: vb.net web-services asmx


    【解决方案1】:

    将此属性用于方法

    【讨论】:

      猜你喜欢
      • 2012-08-06
      • 1970-01-01
      • 2016-10-12
      • 2013-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-28
      • 1970-01-01
      相关资源
      最近更新 更多