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>
EDIT 1
그래서 방화벽의 포트 9000을 여는 대신 service.exe 나 로컬 네트워크에서 서비스를 칠 수에 대한 규칙을 지정. 이제 나는 바깥 세상에서 봉사하기 위해 노력하고 있습니다. 내 라우터에 포트 9000에서 서버 자체로 트래픽을 밀어 넣을 규칙을 추가했지만 아무것도 얻지 못하고 있습니다.
EDIT 2
내가 네트워크는 웹 서버에 모니터링하고 내가 라우터가 서버 자체에 다시 트래픽을 전달하고 있는지 확인할 수 있습니다 설치했습니다. 그런 다음 서버는 응답을 다시 보내려고합니다.
EDIT 3
무엇이든지 나에게 아무 의미도하지 않습니다. 서버에는 2 개의 닉스가 있습니다. 라우터에서 서버로 1 개의 IP를 타겟팅했습니다. 나는 그것을 다른 IP로 바꾸었고 외부에서 설명이나 응답을 통해 작동합니까?
서비스에 연결할 수있는 주소와 일치하도록 config 파일의 baseAddress를 변경하는 방법은 어떻습니까? –
IIS-Express가 아닌 IIS를 사용하고 있습니까? (후자는 기본적으로 원격 연결을 허용하지 않습니다.) –
IIS를 사용하여 수정하십시오. 내가 기본 주소를 변경하려고했는데 그것은 중요하지 않습니다. – meanbunny