带Guid参数的ASMX Web服务

时间:2010-02-05 19:10:59

标签: asp.net ajax web-services asmx webmethod

我使用以下方法获得了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 个答案:

答案 0 :(得分:3)

我试图找到正式的文档,但看起来你不能在WebMethod上使用GUID作为输入类型,因为它不是可以在途中验证的东西。但我找不到确切的关于它的文件。

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

答案 1 :(得分:1)

您是否尝试使用具有实际SOAP调用的服务?

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

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