WCF 调用本地 Windows 服务,而不是服务器
本文关键字:服务器 服务 调用 Windows WCF | 更新日期: 2023-09-27 18:34:55
我有一个在Windows服务中托管的WCF服务。我正在尝试做的是调用位于客户端PC上的Windows服务(WS(和WS以调用同一客户端计算机上的客户端DLL。我已经在每台客户端PC和服务器上安装了WS。当导航到服务器上的 ASP.NET 页面并且我调用该方法时,它工作正常,但客户端 PC 不是从其本地 WS 调用其 DLL,而是调用在服务器上调用的 WS - 这不是所需的行为。此环境将安装在 LAN 上。
我有一个示例方法是获取PC名称,作为回报,我错误地获得了服务器的名称。
这是我的应用程序.config文件:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.serviceModel>
<services>
<!-- This section is optional with the new configuration model
introduced in .NET Framework 4. -->
<service name="Service.CalculatorService" behaviorConfiguration="CalculatorServiceBehavior">
<host>
<baseAddresses>
<add baseAddress="http://localhost:8000/ServiceModelSamples/service"/>
</baseAddresses>
</host>
<!-- this endpoint is exposed at the base address provided by host: http://localhost:8000/ServiceModelSamples/service -->
<endpoint address=""
binding="wsHttpBinding"
contract="Service.ICalculator" />
<!-- the mex endpoint is exposed at http://localhost:8000/ServiceModelSamples/service/mex -->
<endpoint address="mex"
binding="mexHttpBinding"
contract="IMetadataExchange" />
</service>
</services>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>
<behaviors>
<serviceBehaviors>
<behavior name="CalculatorServiceBehavior">
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="False"/>
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
</configuration>
我的服务类别:
Public Interface ICalculator
<OperationContract()> _
Function GetPCname() As String
Sub OpenPort()
<OperationContract()> _
End Interface
Public Class CalculatorService
Implements ICalculator
<DllImport("C:'App_32bit'test.dll", CharSet:=CharSet.Ansi)> _
Private Shared Function DrvOpen(ByVal cha As String, ByRef ope As T_open, ByRef out As T_open_out) As Short
End Function
Public Function GetPCname() As String Implements ICalculator.GetPCname
Return Environment.MachineName
End Function
Public Sub OpenPort() Implements ICalculator.OpenPort
'some code.
End Function
End Class
任何想法如何管理调用我的本地服务而不是服务器的Windows服务?
您应该在安装了和配置Windows服务的每台网络PC上调用方法,在服务器上调用方法意味着它只会在您的服务器上执行一次。您需要在所有计算机上调用所有方法,例如:
192.168.1.1'MyWindowsService'Method1
192.168.1.2'MyWindowsService'Method1
...
etc.
我建议创建不同的 Windows 服务,该服务只能在服务器上运行并在您的 lan 机器上调用方法。