Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在不硬编码URI的情况下实例化WCF DataServices客户端_Wcf_Wcf Client_Wcf Data Services_Odata - Fatal编程技术网

如何在不硬编码URI的情况下实例化WCF DataServices客户端

如何在不硬编码URI的情况下实例化WCF DataServices客户端,wcf,wcf-client,wcf-data-services,odata,Wcf,Wcf Client,Wcf Data Services,Odata,我对WCF数据服务(OData)相当陌生,我需要知道在客户端实例化实体容器的最佳方法,而不必硬编码URI。MSDN上的所有示例似乎都描述了如下实例化客户机: Uri uri = new Uri("http://www.someservice.svc"); DataServiceContext svc = new DataServiceContext(uri); 然而,我知道我一定是遗漏了什么,因为这样硬编码一个服务地址没有任何意义。首先,当您从开发到测试再到QA再到生产时,当每个环境可能具有不

我对WCF数据服务(OData)相当陌生,我需要知道在客户端实例化实体容器的最佳方法,而不必硬编码URI。MSDN上的所有示例似乎都描述了如下实例化客户机:

Uri uri = new Uri("http://www.someservice.svc");
DataServiceContext svc = new DataServiceContext(uri);
然而,我知道我一定是遗漏了什么,因为这样硬编码一个服务地址没有任何意义。首先,当您从开发到测试再到QA再到生产时,当每个环境可能具有不同的URI时,如何动态地更改地址


感谢您对此的深入了解。

将您的数据服务URL放入您的
设置
文件中,或者干脆放入
app.config

Uri uri = new Uri(ConfigurationManager.AppSettings["ServiceURI"]);
DataServiceContext svc = new DataServiceContext(uri);
并且在您的
app.config
(或web应用的
web.config
)中:


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


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

将您的数据服务URL放入您的
设置文件或纯
app.config

Uri uri = new Uri(ConfigurationManager.AppSettings["ServiceURI"]);
DataServiceContext svc = new DataServiceContext(uri);
并且在您的
app.config
(或web应用的
web.config
)中:


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


URI只是一个字符串-您可以从任何可能的配置源获取它。

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

Uri base=application.current.host; Uri relService=newURI(“..\someservice.svc”,System.UriKind.Relative)

Uri服务=新的Uri(基本,relService);
DataServiceContext svc=新的DataServiceContext(服务)

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

Uri base=application.current.host; Uri relService=newURI(“..\someservice.svc”,System.UriKind.Relative)

Uri服务=新的Uri(基本,relService);
DataServiceContext svc=新的DataServiceContext(服务)

我想到了这一点——只是把它放在AppSettings中,但我认为必须有一种更“以框架为中心”的方法来实现这一点。在接受你的答案之前,我会等一等,看看是否有其他人提出了更好的方法,但可能就是这样。我想到了——只是把它放在AppSettings中,但我认为必须有一种更“以框架为中心”的方法来实现这一点。在接受你的答案之前,我会等一等,看看是否有其他人提出了更好的方法,但可能就是这样。