1

我对 WCF DataServices (OData) 相当陌生,我需要知道在客户端上实例化实体容器而不对 URI 进行硬编码的最佳方法。似乎 MSDN 上的所有示例都描述了像这样实例化客户端:

Uri uri = new Uri("http://www.someservice.svc");
DataServiceContext svc = new DataServiceContext(uri);

但是,我知道我一定在某个地方遗漏了一些东西,因为像这样硬编码服务地址没有任何意义。一方面,当您从开发到测试再到 QA 到生产时,当每个环境可能有不同的 URI 时,如何动态更改地址?

感谢您对此的任何见解。

4

2 回答 2

4

将您的 DataService URL 放入例如您的Settings文件或简单的app.config

Uri uri = new Uri(ConfigurationManager.AppSettings["ServiceURI"]);
DataServiceContext svc = new DataServiceContext(uri);

在您的app.config(或web.config网络应用程序)中:

<appSettings>
  <add key="ServiceURI" value="http://www.someservice.svc" />
</appSettings>

或者从数据库配置表中获取它.....或或或或或......有很多选择!

URI 只是一个字符串——您几乎可以从您可能拥有的任何配置源中获取它。

于 2010-06-25T14:29:46.737 回答
1

如果您正在使用 Silverlight 应用程序,您可以使用 application.current.host 访问 xap 的 Uri
然后您可以添加相对 Uri 来获取服务 Uri:

Uri base = application.current.host; Uri relService = new Uri("..\someservice.svc", System.UriKind.Relative);

Uri service = new Uri(base, relService); DataServiceContext svc = new DataServiceContext(service);

于 2010-06-25T15:24:50.910 回答