webservice - unknown web method parameter name met

2020-04-08 11:37发布

I called a webservice for fetching items in fullcalendar. The method is never called and firebug gives this error:

*"POST [http]://localhost:50536/FullCalendar/ServicioFullCalendar.asmx/GetEventosCalendario POST [http]://localhost:50536/FullCalendar/ServicioFullCalendar.asmx/GetEventosCalendario

500 Internal Server Error 1.01s" "unknown web method parameter name methodname"*

Here is the asmx.vb code:

    <System.Web.Script.Services.ScriptService()> _
<System.Web.Services.WebService(Namespace:="http://localhost/uva/")> _
<System.Web.Services.WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> _
<ToolboxItem(False)> _
Public Class ServicioFullCalendar
    Inherits System.Web.Services.WebService

    <ScriptMethod(ResponseFormat:=ResponseFormat.Json)> _
    <WebMethod(MessageName:="ObtieneEventos")> _
    Public Shared Function GetEventosCalendario(ByVal startDate As String, ByVal endDate As String) As String
        Try
            Return CalendarioMensualDAO.Instance.getEventos(startDate, endDate)

        Catch ex As Exception
            Throw New Exception("FullCalendar:GetEventos: " & ex.Message)
        Finally

        End Try
    End Function

The webservice is "loaded" from the fullcalendar as follows:

events: "ServicioFullCalendar.asmx/GetEventosCalendario",

3条回答
forever°为你锁心
2楼-- · 2020-04-08 12:15

That was the mistake: the method had to be "not Shared", and without the "Messagename":

<ScriptMethod(ResponseFormat:=ResponseFormat.Json)> _
<WebMethod()> _
Public Function GetEventosCalendario(ByVal startDate As String, ByVal endDate As String) As String
    Try
        Return CalendarioMensualDAO.Instance.getEventos(startDate, endDate)

    Catch ex As Exception
        Throw New Exception("FullCalendar:getEventos: " & ex.Message)
    Finally

    End Try
End Function
查看更多
够拽才男人
3楼-- · 2020-04-08 12:21

I recommend you use Fiddler to look at the network traffic and see what's being sent to the service. Then figure out why it's being sent that way.

It seems likely that you really are somehow sending a parameter named "methodname".

查看更多
Deceive 欺骗
4楼-- · 2020-04-08 12:21

I had the same problem and after spending a lot of time realized that the method was marked as protected and not PUBLIC. I made it public and it started working.

查看更多
登录 后发表回答