我在配置了IIS的计算机上运行WCF自托管服务。自托管服务开始时没有问题,我可以在启动并运行后实际访问?wsdl路径。为什么我不能从机器外部打我的WCF服务,但我可以在本地?
如果我尝试点击机器上的以下地址,它会加载关于svcutil.exe以及如何访问该服务的网页。
http://myspecialservice:9000/
http://192.168.1.230:9000/
但是,如果我尝试从另一台机器中击中相同的地址。我什么也没得到。没有错误,页面不能被加载。而且我已经过测试,以确保我在使用主机名时解决了正确的IP地址问题。
另外,我已经配置了可以在具有高级安全性的Windows防火墙中允许的服务的.exe。适用于所有以太网配置文件和任何端口。任何建议都会有所帮助。同样,我知道该服务在本地可以在机器上访问,并且工作正常。看来我缺少某个机器配置。
<?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,而不是指定一个规则来进行service.exe让我打的服务在本地网络上。现在我正试图从外部世界中获得服务。我为路由器添加了一条规则,将任何来自端口9000的流量推送到服务器本身,但我没有收到任何东西。
EDIT 2
我已经安装了网络监视器至网络服务器,我可以确认路由器通过流量返回到服务器本身。然后服务器尝试发送回应。
编辑3
是没有意义的我任何责任。服务器有两个nics,我的目标是从路由器到服务器的1个IP。我将其更改为另一个IP,它从外部工作,任何解释或答案?
如何更改配置文件中的baseAddress以匹配您想要的服务可访问的地址? –
您正在使用IIS,而不是IIS-Express? (后者默认不允许远程连接) –
正确使用IIS。我试图改变基地址,它似乎并不重要。 – meanbunny