基本上我的情况是这样的:
Windows Service --Calls--> MethodinDLL --Calls--> WCFService.
服务配置手动写在DLL端,在配置的Windows服务端写 - 如果DLL端和Windows服务端的WCF参数匹配,我感兴趣。以下更详细说明。
我会告诉你我的设置。我从DLL调用WCF服务。在DLL 中有代码,它调用WCF服务,如:
//Inside DLL
BasicHttpBinding binding = new BasicHttpBinding(SecurityMode.None);
EndpointAddress epa = new EndpointAddress("http://localhost:16593/FreeSpaceDatabase.svc");
YourServiceClient proxy = new YourServiceClient(binding, epa);
我可以手动提供参数。
现在,我有一个实际引用此DLL的Windows服务,并使用DLL(或通过DLL)调用WCF服务。 (对WCF服务的调用位于DLL中 - Windows服务没有调用WCF服务的方法)。
但我还是被迫在 Windows服务端添加
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_IFreeSpaceDatabase" />
</basicHttpBinding>
</bindings>
<client>
<endpoint address="http://localhost:16593/FreeSpaceDatabase.svc"
binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IFreeSpaceDatabase"
contract="ServiceReference1.IFreeSpaceDatabase" name="BasicHttpBinding_IFreeSpaceDatabase" />
</client>
</system.serviceModel>
</configuration>
我的问题是如果我在DLL端的代码中指定的EndpointAddress("http://localhost:16593/FreeSpaceDatabase.svc")
(如我的问题开头):
EndpointAddress epa = new EndpointAddress("http://localhost:16593/FreeSpaceDatabase.svc");
与 Windows服务中AppConfig
文件中指定的端点地址不同?是允许的吗?或者它们应该始终相同?
答案 0 :(得分:0)
您可以从配置中删除此地址,它应该可以使用。我在我的代码中有这些设置(绑定和端点),只有这个在我的配置中:
<system.serviceModel>
<bindings />
<client />
</system.serviceModel>