4

我有一个 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 更改为字符串,问题就会消失。建议?出于测试目的,我使用 Firefox 中的此 url 调用服务:

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

有什么建议么?

4

2 回答 2

3

我正在尝试查找正式文档,但您似乎不能在 WebMethod 上使用 GUID 作为输入类型,因为它不是可以在进入的过程中验证的东西。但我找不到它的确切文档.

我很可能会将其保留为字符串参数,并让您的方法的第一行执行 Guid.Parse 以验证它是否是 GUID,如果不是,则向用户发送异常。这是我在其他需要 WebMethod 上的 GUID 的实现中看到的方式。

于 2010-02-05T19:22:49.547 回答
1

您是否尝试过将服务与实际的 SOAP 调用一起使用?

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

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

于 2010-02-05T19:29:43.293 回答