ASMX web服务与GUID参数
我有以下方法的ASMX Web服务ASMX web服务与GUID参数
[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
有什么建议吗?
我试图找到正式的文档,但它似乎无法使用GUID作为WebMethod上的输入类型,因为它不是可以在路上进行验证的东西。但是我找不到关于它的确切文档。
我很可能会把它作为一个字符串参数,并让你的方法的第一行做一个Guid.Parse来验证它是一个GUID,如果没有,发送给用户一个异常。这是我在其他需要WebMethod上的GUID的实现中看到它完成的方式。
我认为这就是我要去的方式,尽管最终是一个非常简单的数据类型需要经过这个额外的步骤,这令人讨厌。如果您发现明确声明不支持guid的链接,请将其添加到您的帖子中。 – 2010-02-05 19:28:13
您是否尝试过使用带有实际SOAP调用的服务?
我不认为HTTP GET将允许您指定复杂的类型。
我也很肯定6C388126-5787-4B63-AAFE-5BCC4EA4DF83
只代表一个GUID给我们人类,它是一个字符串到计算机 - 本质上你有一个类型不匹配,他们不是一个方法定义的适当的参数(至于操作系统被关注到)。
您可以随时将参数类型更改为字符串并执行Guid.Parse。 – 2010-02-05 19:15:02
@ klausbyskov是的,但我宁愿有框架句柄Guid反序列化,而不是必须添加什么应该是不必要的代码来验证服务器上的类型。 – 2010-02-05 19:22:01