C#CompactFramework动态访问SOAP Webservice

时间:2013-06-06 06:20:14

标签: c# .net web-services soap compact-framework

我正在尝试为支持.Net CompactFramework 3.5的扫描程序上运行的Windows CE设备创建一个小应用程序。 我遇到的问题是,我必须连接到具有多个IP地址的Web服务。在默认的.Net Framework中,我可以将使用wsdl.exe创建的WebReference的属性URL-Behavior更改为“Dynamic”,然后我应该能够引用配置文件中定义的IP地址。 但在CompactFramework中却不是这样。 我已将属性已更改为动态修改WebReference的构造函数为:

public partial class WS_SCAN_WSDL : System.Web.Services.Protocols.SoapHttpClientProtocol {
    public WS_SCAN_WSDL(String ls_webserviceLocation) {
        this.Url = ls_webserviceLocation+"/WS_SCAN_WSDL";
    }

    [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://192.1.2.4:8085/MYSCAN/WS_SCAN/SearchItems", RequestNamespace = "http://192.1.2.4:8085/MYSCAN/WS_SCAN", ResponseNamespace = "http://192.1.2.4:8085/MYSCAN/WS_SCAN", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
    public System.Data.DataSet SearchItems([System.Xml.Serialization.XmlElementAttribute(IsNullable=true)] string iXMLString, out int sqlcode) {
        object[] results = this.Invoke("SearchItems", new object[] {
                    iXMLString});
        sqlcode = ((int)(results[1]));
        return ((System.Data.DataSet)(results[0]));
    }
    [...]
}

现在调用webservice时:

WS_SCAN_WSDL lsrv_myService = new WS_SCAN_WSDL("http://192.1.2.4:8085/MYSCAN");
一切正常。如果我将它称为:

WS_SCAN_WSDL lsrv_myService = new WS_SCAN_WSDL("http://194.3.1.6:8082/MYSCAN");

什么都行不通。 WebService可以在两个Locations上使用,但第二个调用会引发WebException,我无法继续。

是否有可能为.Net CompactFramework创建动态WebService代理?

//编辑: 也许我已经解决了主要问题,但我不确定是否如此。 Web服务描述如下:

<definitions name="MY_SCAN_WSDL" targetNamespace="http://192.1.2.4:8085/MYSCAN">
    <types>
    [...]

和其他Webservice描述说:

<definitions name="MY_SCAN_WSDL" targetNamespace="http://194.3.1.6:8082/MYSCAN">
    <types>
    [...]

问题是否可能由不同的命名空间引起?两个Web服务是否可能在不同的IP上具有相同的命名空间?或者可以在运行时更改此内容吗?

0 个答案:

没有答案