我有一个应用程序进行Web服务调用以获取MSI的URL,具体取决于用户的计算机是32位还是64位。
调用GetURLByOS需要2个方法(1.字符串AuthenticationInfo,2。int osBit)。在我调试时,我可以看到身份验证信息。调用Web服务时,osBit的值为8(64位)。但实际上在Web服务中它的值会丢失(0)。
有人可以帮我弄清楚整数值丢失的原因吗?
更新: 我正在加入这个过程。在客户端,我看到值8被传入。在Web服务调用中,我看到0。 这是一个SOAP Web服务调用。 这是客户端上的WSDL代码:
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://mydomain.com/product/1.0/GetURLByOs", RequestNamespace = "http://mydomain.com/product/1.0", ResponseNamespace = "http://mydomain/product/1.0", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
public string GetURLByOs(string eTicket, int OsBitType)
{
object[] results = this.Invoke("GetURLByOs", new object[] {
eTicket, OsBitType});
return ((string)(results[0]));
}
以下是实际的网络服务:
[WebMethod]
public string GetURLByOs(string eTicket, int osBitType)
{
return MyFacade.GetUrl(eTicket, osBitType);
}
BTW,当我将参数更改为string类型时,它会正确传递(值“8”)。只有当我将它作为整数传递时,该值才会被清零。
答案 0 :(得分:3)
我发现了什么问题。在(客户端)WSDL代码上,参数是OsBitType。但在实际的Web服务上,参数是osBitType。将Web服务参数更改为OsBitType后,它正常工作。
奇怪的是,如果参数是字符串,则不会发生这种情况。
答案 1 :(得分:1)
对于我的情况,在更新Web服务引用后,它运行正常。