我在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());
}
}
当我们最初开发&amp;托管在本地网络(IIS)中,我们从未遇到任何问题。这是我们在WCF中的第一个涉及远程主机的项目。试图查看所有类似的帖子,但所有人都谈论完全不工作。没有类似于我们的场景。
感谢大家的帮助。
答案 0 :(得分:1)
问题已解决。我们的公司政策不允许该服务在“本地系统”下运行时与互联网进行通信。特权。我暂时更改为使用我的用户凭据运行,它已经通过。