我对WCF DataServices(OData)相当新,我需要知道在客户端实例化实体容器的最佳方法,而无需对URI进行硬编码。似乎MSDN上的所有示例都描述了如下实例化客户端:
Uri uri = new Uri("http://www.someservice.svc");
DataServiceContext svc = new DataServiceContext(uri);
然而,我知道我必须在某处遗漏某些东西,因为硬编码这样的服务地址没有任何意义。首先,当您从开发到测试再到QA再到生产时,如果每个环境可能有不同的URI,您如何动态更改地址?
感谢您对此的任何见解。
答案 0 :(得分:4)
将您的DataService网址放入,例如您的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只是一个字符串 - 您可以从几乎任何配置源中获取它。
答案 1 :(得分: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);