仅在通过 Windows 服务使用 WCF 时“无端点侦听”
Posted
技术标签:
【中文标题】仅在通过 Windows 服务使用 WCF 时“无端点侦听”【英文标题】:"No Endpoint listening" only when consuming WCF via windows service 【发布时间】:2016-02-16 15:43:12 【问题描述】:我已经在 IIS(远程主机:godaddy)中部署了 WCF Web 服务,并尝试通过 Windows 服务使用。但是当我尝试通过 Windows 服务消费时出现以下错误。
“异常:在http://mydomainname.com/vfolder1/vfolder2/HelloService.svc/HelloService 处没有侦听端点”可以接受该消息。这通常是由不正确的地址或 SOAP 操作引起的。有关详细信息,请参阅 InnerException(如果存在)。
但是当我通过 Windows 窗体使用相同的服务时,它可以正常工作。
以下是我的 WCF Web 服务配置 (web.config)
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="mexBehaviour">
<serviceMetadata httpGetEnabled="true"/>
</behavior>
</serviceBehaviors>
</behaviors>
<services>
<service name="HelloService.HelloService" behaviorConfiguration="mexBehaviour">
<endpoint address="HelloService" binding="basicHttpBinding" contract="HelloService.IHelloService"></endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"></endpoint>
<host>
<baseAddresses>
<add baseAddress="http://mydomainname.com/vfolder1/vfolder2/"/>
</baseAddresses>
</host>
</service>
</services>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
以下是我的 WCF 客户端配置 (app.config)
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_IHelloService" />
</basicHttpBinding>
</bindings>
<client>
<endpoint address="http://mydomainname.com/vfolder1/vfolder2/HelloService.svc/HelloService"
binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IHelloService"
contract="HelloService.IHelloService" name="BasicHttpBinding_IHelloService" />
</client>
</system.serviceModel>
以下是 Windows 窗体中的代码
private void button1_Click(object sender, EventArgs e)
HelloService.HelloServiceClient client = new HelloService.HelloServiceClient();
label1.Text = client.GetMessage(textBox1.Text);
下面是 Windows 服务中的代码
public static void write_data()
try
HelloService.HelloServiceClient clNt = new HelloService.HelloServiceClient();
for (int i = 0; i < 10; i++)
Write_Log(clNt.GetMessage(i.ToString()));
clNt.Close();
catch (Exception ex)
Write_Log("Exception: " + ex.Message.ToString());
当我们最初在本地网络 (IIS) 中开发和托管时,我们从未遇到任何问题。这是我们在 WCF 中的第一个项目,涉及远程主机。试图查看所有类似的帖子,但都在谈论完全不工作。不存在与我们的场景类似的东西。
感谢您的大力帮助。
【问题讨论】:
windows服务在什么用户下运行?我注意到内置用户在网络方面的功能存在很大差异。 【参考方案1】:问题已解决。我们的公司政策不允许服务在“本地系统”权限下运行时与 Internet 通信。我暂时更改为使用我的用户凭据运行,它通过了。
【讨论】:
以上是关于仅在通过 Windows 服务使用 WCF 时“无端点侦听”的主要内容,如果未能解决你的问题,请参考以下文章
如何在 ajax 客户端中使用作为 Windows 服务运行的 wcf 服务
使用 WCF 通过 Windows 服务和 Windows 窗体应用程序进行通信