我有一个在配置了IIS的机器上运行的WCF自托管服务。自托管服务可以顺利启动,并且一旦它启动,我实际上可以访问?wsdl路径。
如果我尝试在该机器上访问以下地址,它会加载有关svcutil.exe的网页,并介绍如何访问该服务。
然而,如果我尝试从另一台机器访问相同的地址,什么也没有发生。没有错误,页面无法加载。我已经测试过使用主机名时是否解析到正确的IP地址。
此外,我已配置服务的.exe在Windows防火墙高级安全性中允许。对于所有以太网配置文件和任何端口。任何建议都将有很大帮助。再次说明,我知道该服务在本地机器上是可访问的,并且它正常工作。似乎我在某个地方缺少了机器配置。
如果我尝试在该机器上访问以下地址,它会加载有关svcutil.exe的网页,并介绍如何访问该服务。
http://myspecialservice:9000/
http://192.168.1.230:9000/
然而,如果我尝试从另一台机器访问相同的地址,什么也没有发生。没有错误,页面无法加载。我已经测试过使用主机名时是否解析到正确的IP地址。
此外,我已配置服务的.exe在Windows防火墙高级安全性中允许。对于所有以太网配置文件和任何端口。任何建议都将有很大帮助。再次说明,我知道该服务在本地机器上是可访问的,并且它正常工作。似乎我在某个地方缺少了机器配置。
<?xml version="1.0"?>
<configuration>
<system.diagnostics>
<trace autoflush="true">
<listeners>
<add name="TextWriter" type="System.Diagnostics.TextWriterTraceListener" initializeData="trace.log"/>
<add name="Console" type="System.Diagnostics.ConsoleTraceListener"/>
<remove name="Default"/>
</listeners>
</trace>
</system.diagnostics>
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="CustomHttpBinding" maxReceivedMessageSize="2147483647">
<readerQuotas maxStringContentLength="2147483647"/>
</binding>
</basicHttpBinding>
</bindings>
<client/>
<services>
<service name="MyService.Data.Service" behaviorConfiguration="serviceBehavior">
<clear/>
<endpoint address="JobsHttp" binding="basicHttpBinding" contract="MyService.Data.IWhereItSits" bindingConfiguration="CustomHttpBinding"></endpoint>
<endpoint binding="mexHttpBinding" name="httpmex" contract="IMetadataExchange"></endpoint>
<host>
<baseAddresses>
<add baseAddress="http://myspecialservice:9000/"/>
</baseAddresses>
</host>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="serviceBehavior">
<serviceMetadata httpGetEnabled="true"/>
<dataContractSerializer maxItemsInObjectGraph="2147483647"/>
<serviceDebug includeExceptionDetailInFaults="true"/>
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup></configuration>
编辑 1
在防火墙上打开9000端口而不是指定服务.exe的规则使我能够在本地网络上访问该服务。现在我正在尝试从外部世界访问该服务。我已经在路由器上添加了一条规则,将来自9000端口的任何流量推送到服务器本身,但我没有得到任何东西。
编辑 2
我已经在Web服务器上安装了网络监视器,并确认路由器将流量传回服务器本身。然后服务器尝试发送响应。
编辑 3
对我来说毫无意义。该服务器有两个网卡,我从路由器对服务器进行了目标1 IP的定位。我将其更改为另一个IP,从外部就可以正常工作。有什么解释或答案吗?