如何从客户端应用程序访问Windows服务上托管的Web服务?

时间:2014-02-11 10:45:25

标签: c# wcf web-services visual-studio client

最近我开发了一个WCF Web服务,在Internet文件的帮助下,我设法在Windows服务中托管它。我还设法在我的计算机上成功安装并启动了这个Windows服务。原则上,Web服务工作正常(调试已完成);它的任务是从位于同一台计算机上的MySQL数据库中检索一些数据。

现在我的问题是:假设我在我的产品的客户端;所以现在我想开发一个客户端应用程序,该应用程序与我在此Windows服务上托管的Web服务联系(使用)。 我该怎么做?为了让我的应用程序找到Web服务,必要的配置/过程是什么?

请注意,出于调试目的,我设法创建了一个成功访问Web服务的控制台调试应用程序。这是通过Visual Studio 2012中的“添加引用”菜单完成的,其中包含在单独调试WCF Web服务时获得的临时链接 - 关闭图5-19 here。通过使用VS提供的URL

,我发现WCF WS是工作室的一部分,其中包含了我的测试应用程序
(http://127.0.0.1:12415/LifeWS.svc)

。既然WCF WS位于Windows服务中,我不知道要使用哪个URL。

这是我当前的Windows Service App.config文件:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
      <section name="LifeWSService.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
    </sectionGroup>
  </configSections>
  <system.serviceModel>
    <services>
      <service behaviorConfiguration="LifeWSBehavior" name="Lifemed.Service.LifeWSService"> <!--LifeWSService.LifeWSService-->
        <!-- this endpoint is exposed at the base address provided by host: http://localhost:12415/Lifemed  -->
        <endpoint address=""
                  binding="wsHttpBinding"
                  contract="LifeWSService.ILifeWS" />
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
        <host>
          <baseAddresses>
            <add baseAddress="http://127.0.0.1:12415/Lifemed" />
          </baseAddresses>
        </host>
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="LifeWSBehavior">
          <serviceMetadata httpGetEnabled="true"/>
          <serviceDebug includeExceptionDetailInFaults="False"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>
  <applicationSettings>
    <LifeWSService.Properties.Settings>
      <setting name="LifeWSService_LifeServices_LifeWS" serializeAs="String">
        <value>http://127.0.0.1:1559/LifeWS.asmx</value>
      </setting>
      <setting name="LifeWSService_LifeServices_WCF_LifeWS" serializeAs="String">
        <value>http://127.0.0.1:12415/LifeWS.svc</value>
      </setting>
    </LifeWSService.Properties.Settings>
  </applicationSettings>
</configuration>

注意:在上面的代码中,有另一个Web服务的参考,即我开发的WCF Web服务的ASP.NET版本。

感谢您的帮助,

Momergil

---编辑--- 我最近设法编辑我的客户端应用程序并在另一台计算机上执行它(与我的基本系统相同)。那么,我得到了这个例外:

Console application showing the exception error

葡萄牙语线说:“没有建立联系,因为目的机器主动拒绝他们127.0.0.1:12415。

1 个答案:

答案 0 :(得分:0)

我认为它应该是{baseAddress} / {endpoint name}所以对于第一个端点(wsHttpBinding)它的http://127.0.0.1:12415/Lifemed/和对于Mex它应该是http://127.0.0.1:12415/Lifemed/mex