Ни один из подобных вопросов мне не помог. Я уверен, что эксперты здесь ...Не удается получить доступ к службе WCF REST с любого другого компьютера в моей локальной сети.
Моя проблема заключается в том, что у меня есть служба WCF Rest, и я могу получить доступ к ней только локально. Любой другой компьютер в локальной сети не сможет получить к нему доступ.
Это, как я разместить свою службу (это запустить в консольное приложение)
WebServiceHost host = new WebServiceHost(typeof(MyRestService), new Uri("http://Yaniv-PC:8080/Test"));
Вот Договор обслуживания:
[ServiceContract]
public interface IMyRestService
{
[OperationContract]
[WebInvoke(Method = "GET",
ResponseFormat = WebMessageFormat.Xml,
BodyStyle = WebMessageBodyStyle.Wrapped,
UriTemplate = "/{id}")]
string GetData(string id);
}
А вот файл app.config (только раздел ServiceModel)
<system.serviceModel>
<services>
<service behaviorConfiguration="MyRestServiceBehavior" name="ServiceHostApp.MyRestService">
<endpoint address="" binding="webHttpBinding" contract="ServiceHostApp.IMyRestService" behaviorConfiguration="web">
<identity>
<dns value="Yaniv-PC" />
</identity>
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="MyRestServiceBehavior">
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="false"/>
</behavior>
</serviceBehaviors>
<endpointBehaviors>
<behavior name="web">
<webHttp/>
</behavior>
</endpointBehaviors>
</behaviors>
</system.serviceModel>
Когда я открываю браузер и перейти к: http://yaniv-pc:8080/test/123
я получаю это:
<?xml version="1.0"?>
<GetDataResponse xmlns="http://tempuri.org/">
<GetDataResult>You sent server 123</GetDataResult>
</GetDataResponse>
Когда я получить доступ к службе от другой машины в моей локальной сети я получаю эту ошибку:
System.ServiceModel.EndpointNotFoundException: There was no endpoint listening at
http://yaniv-pc:8080/Test/123
that could accept the message. This is often caused by an incorrect address or SOAP action. See InnerException, if present, for more details. ---> System.Net.WebException: Unable to connect to the remote server ---> System.Net.Sockets.SocketException: A socket operation was attempted to an unreachable network 10.0.0.3:8080
Любые идеи?
Проверьте брандмауэры. Посмотрите, можете ли вы сначала просмотреть плоский файл html на сервере. Затем попробуйте свое обслуживание. –
Что такое IP-адрес 'yaniv-pc'? проверьте, является ли оно '10.0.0.3' или нет. –
Вы используете этот автономный режим или используете его через Visual Studio? –