测试表单仅适用于来自本地机器的请求-仅适用于某些方法

本文关键字:适用于 请求 方法 表单 测试 机器 | 更新日期: 2023-09-27 18:17:22

当我在网上冲浪时,我得到了下面的消息。我在很多地方读到,我应该在我的webconfig中添加HttpGet和HttpPost,但它已经在那里了。我尝试过使用两种方法,看起来相同,返回相同的类型,但有一个少输入参数,然后一个工作良好,一个得到"测试表单仅适用于来自本地机器的请求"。

我知道这与参数的数量无关,因为我还有一个方法,有更多的参数,但它工作得很好…

为什么是不同的行为?

测试表单仅对来自本地机器的请求可用

<webServices>
  <protocols>
    <add name="HttpGet"/>
    <add name="HttpPost"/>
  </protocols>
</webServices>
    //This gets "The test form is only available for requests from the local machine"
    [WebMethod]
    public int DoSomething(string param1, string param2, string param3, string param4, bool param5, DateTime param6, DateTime param7,
        double param8, double param9, string param10, string param11, int param12, int param13,
        string param14, int param15,DateTime? param16)
    {
        return 0;
    }
    //This method works fine
    [WebMethod]
    public int DoSomething2(string param1, string param2, string param3, string param4, bool param5, DateTime param6, DateTime param7,
        double param8, double param9, string param10, string param11, int param12, int param13,
        string param14, int param15)
    {
        return 0;
    }

编辑:问题的原因似乎是可空参数

测试表单仅适用于来自本地机器的请求-仅适用于某些方法

生成错误的web方法有一个可空的DateTime (DateTime?)参数。似乎可空类型本身并不是可序列化的。也许您可以使用string参数,然后在后端验证它。只是个建议。