代码之家  ›  专栏  ›  技术社区  ›  3Dave

带guid参数的asmx webservice

  •  4
  • 3Dave  · 技术社区  · 14 年前

    我有一个使用以下方法的ASMX Web服务

        [WebMethod]
        public string LoadRegions(Guid id)
        {
            throw new NotImplementedException();
        }
    

    当我尝试调用此方法时,我收到以下异常:

    System.InvalidOperationException: LoadRegions Web Service method 
    name is not valid.
    at System.Web.Services.Protocols.HttpServerProtocol.Initialize()
    

    如果我将参数类型从guid更改为string,那么问题就消失了。建议?为了测试的目的,我从firefox使用此URL调用服务:

    http://localhost:81/services/ContactService.asmx/LoadRegions
    ?id=6C388126-5787-4B63-AAFE-5BCC4EA4DF83
    

    有什么建议吗?

    2 回复  |  直到 14 年前
        1
  •  3
  •   Mitchel Sellers    14 年前

    我正试图找到正式的文档,但似乎您不能在WebMethod上使用guid作为输入类型,因为它不是一种可以在进入时进行验证的类型。但我找不到确切的文件。

    我很可能把它作为一个字符串参数,让方法的第一行执行一个guid。解析以验证它是一个guid,如果不是,则向用户发送一个异常。这是我在其他需要WebMethod上的GUID的实现中看到的方法。

        2
  •  1
  •   Ruddy    14 年前

    您使用服务和实际的SOAP调用尝试过这种方法吗?

    我认为HTTP GET不允许您指定 复杂的 类型。

    我也很确定 6C388126-5787-4B63-AAFE-5BCC4EA4DF83 只代表一个guid给我们人类,它是一个字符串给一台计算机-本质上你有一个类型不匹配,他们不是一个用适当的参数定义的方法(就操作系统而言)。