我使用以下方法获得了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
有什么建议吗?
答案 0 :(得分:3)
我试图找到正式的文档,但看起来你不能在WebMethod上使用GUID作为输入类型,因为它不是可以在途中验证的东西。但我找不到确切的关于它的文件。
我很可能将其保留为字符串参数,并让方法的第一行执行Guid.Parse以验证它是否为GUID,否则,向用户发送异常。这是我在其他需要WebMethod上的GUID的实现中看到它的方式。
答案 1 :(得分:1)
您是否尝试使用具有实际SOAP调用的服务?
我认为http GET不允许您指定复杂的类型。
我也很确定6C388126-5787-4B63-AAFE-5BCC4EA4DF83
只代表我们人类的GUID,它是计算机的字符串 - 基本上你有一个类型不匹配,它们不是用正确的参数定义的方法(目前为止)就操作系统而言。)