我正在努力让它发挥作用。我有一个多个相同的 - 使用EF安装在不同服务器上的WCF服务。他们每个人都在不同的SQL Server实例上访问不同的数据库。
我正在尝试创建一个允许我同时连接到Instance1.MyDatabase和Instance2.MyDatabase的方法。
我只能在app.config中创建1个端点地址,因为EF数据只有1个合同。这是app.config中的端点
<endpoint address="http://Server01/DataService/Data.svc"
binding="basicHttpBinding"
contract="Query.IPSIData"
bindingConfiguration="WCFHttpBinding" behaviorConfiguration="WCFHttpBehavior" />
在为Entity Framework对象创建数据上下文对象时,我尝试使用两个不同的URI。
Context1 = new DevEntities(service1URI)
Context2 = new DevEntities(service2URI)
Context1返回数据和Context2会发生什么,而创建和查询没有错误,不会返回任何记录。我已尝试在配置中输入新端点,但它不会编译,因为两个端点都使用相同的合同。
有解决方法吗?
答案 0 :(得分:0)
好吧,即使发布这个问题我也觉得很蠢。如果您在发布之前获得术语,它会有所帮助。如果您在配置文件中引用了正确的服务,它也会有所帮助。
我在配置中有很多信息。没有任何借口,但无论如何我都会使用它。
因此,要使用相同的Entity Framework WCF服务定义访问两个不同的服务,它实际上只是为正确的服务创建端点!我有拼写错误,这就是为什么它没有工作。
首先,您需要在appSettings中引用URI:
<add key="ProductionDataUri" value="http://ProdServer/ProdService.svc"/>
<add key="QADataUri" value="http://QAServer/QAService.svc"/>
其次,您需要为端点提供webHttpBinding:
<webHttpBinding>
<binding name="WCFWebBinding" openTimeout="00:10:00" closeTimeout="00:10:00" sendTimeout="00:10:00" receiveTimeout="00:30:00" maxBufferPoolSize="2147483647" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647">
<readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
</binding>
</webHttpBinding>
第三,您需要两个端点来匹配URI:
<endpoint address="http://QAServer/QAService.svc"
binding="webHttpBinding" bindingConfiguration="WCFWebBinding"
name="WCFQAWebBinding" contract="*"/>
<endpoint address="http://ProdServer/ProdService.svc"
binding="webHttpBinding" bindingConfiguration="WCFWebBinding"
name="WCFProductionWebBinding" contract="*"/>
完成。