根据stackoverflow,这是一个非常受欢迎的问题,但是我没有发现任何可以解释这种情况的东西:
我有一个WebService
<WebService(Namespace:="https://testingStuff.com/webservices/")>
<WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)>
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()>
<System.Web.Script.Services.ScriptService()>
Public Class TestWebService
Inherits System.Web.Services.WebService
<WebMethod(EnableSession:=True)>
Public Sub Test(ByVal p1 As String, ByVal p2 As String, ByVal p3 As String)
Try
...
...
当我转到... https://testingStuff.com/App_Controls/TestWebService.asmx并选择“测试方法”时,我看到每个文本带有文本框的表单。我正在为它们输入值,然后单击“调用”。结果是这个例外
System.InvalidOperationException: Missing parameter: p1.
at System.Web.Services.Protocols.ValueCollectionParameterReader.Read(NameValueCollection collection)
at System.Web.Services.Protocols.UrlParameterReader.Read(HttpRequest request)
at System.Web.Services.Protocols.HttpServerProtocol.ReadParameters()
at System.Web.Services.Protocols.WebServiceHandler.CoreProcessRequest()
我也遇到类似的异常,但是如果我在soapUI中尝试这样做:
使用https://testingStuff.com/App_Controls/TestWebService.asmx/TEST?p1=value1&p2=value2&p3=value3
并且选择了Method:POST的REST
原始异常看起来像这样
{"Message":"Invalid web service call, missing value for parameter: \u0027p1\u0027.","StackTrace":" at System.Web.Script.Services.WebServiceMethodData.CallMethod(Object target, IDictionary`2 parameters)\r\n at System.Web.Script.Services.WebServiceMethodData.CallMethodFromRawParams(Object target, IDictionary`2 parameters)\r\n at System.Web.Script.Services.RestHandler.InvokeMethod(HttpContext context, WebServiceMethodData methodData, IDictionary`2 rawParams)\r\n at System.Web.Script.Services.RestHandler.ExecuteWebServiceCall(HttpContext context, WebServiceMethodData methodData)","ExceptionType":"System.InvalidOperationException"}
我发现的类似问题大多包含“检查参数名称”或将“获取”切换为“发布答案”。在这种情况下不是这样
我显然缺少了一些东西,所以您能帮我理解一下什么吗?
编辑:
有趣的事情要指出。如果我在本地进行测试,则将值放入并按invoke即可正常工作。但是,在SoapUI情况下,缺少参数的问题仍然存在。
编辑2:
我尝试从不带参数的REST POST方法调用(本地,基于“ Hello World” .asmx),并且...我工作得很好。所以我猜测出于某种原因POST只是丢弃了参数,然后抱怨他想念它们……是的...
仍然实际