2

我是 Windows 8 Metro 应用程序开发的新手,请让我帮助解决这个问题。

我想在我的 Metro 应用程序中使用 Web 服务,但服务参考 url 是动态的。

在我的应用程序中,将为用户提供在文本框中指定 url 的规定,因此我需要连接到该 Web 服务,这意味着服务参考 url 将发生变化。

到目前为止,我正在以传统方式连接到 Web 服务,例如通过添加服务引用并创建实例并使用该实例调用该 Web 服务中的所有方法来提供特定的服务引用。

但是,1)如果服务参考网址发生变化,我应该如何使用 Web 服务。2)访问该服务内的各个服务方法(通过传递一些参数作为输入来调用该方法)。

提前致谢。

4

1 回答 1

1

如果您有不同位置的相同服务,只需使用“添加服务引用...”添加它并在服务客户端构造函数中添加指定的 URL:

var svc = new DataServiceClient("BasicHttpBinding_DataService", 
    "http://url.com/DataService.svc");

BasicHttpBinding_DataService是来自客户端配置的(生成的)绑定名称(在执行“添加新的 Web 引用...”时自动生成):

例子ServiceReferences.ClientConfig

<configuration>
    <system.serviceModel>
        <bindings>
            <basicHttpBinding>
                <binding name="BasicHttpBinding_DataService" maxBufferSize="2147483647"
                    maxReceivedMessageSize="2147483647">
                    <security mode="TransportWithMessageCredential" />
                </binding>
            </basicHttpBinding>
        </bindings>
        <client>
            <endpoint address="https://localhost:44300/Services/DataService.svc"
                binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_DataService"
                contract="DataService.DataService" name="BasicHttpBinding_DataService" />
        </client>
    </system.serviceModel>
</configuration>

上面的代码可用于将地址(例如https://localhost:44300/Services/DataService.svc)更改为运行时生成的地址...

看看这个:http ://blog.rsuter.com/?p=281

于 2012-07-30T19:19:26.283 回答