2012-12-25 4 views
1

Ни один из подобных вопросов мне не помог. Я уверен, что эксперты здесь ...Не удается получить доступ к службе 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

Любые идеи?

+0

Проверьте брандмауэры. Посмотрите, можете ли вы сначала просмотреть плоский файл html на сервере. Затем попробуйте свое обслуживание. –

+0

Что такое IP-адрес 'yaniv-pc'? проверьте, является ли оно '10.0.0.3' или нет. –

+0

Вы используете этот автономный режим или используете его через Visual Studio? –

ответ

0

Предполагая, что вы себя хостинг для вашего сервиса убедитесь, что вы зарегистрировали свой порт с помощью команды NETSH, как показано ниже:

netsh http add urlacl url=http://+:8080/ user=\everyone 

Также попробуйте протестировать его с вашим ПК брандмауэр отключен

0

Вы должны попробуйте отключить брандмауэр или попробуйте добавить правило с портом в брандмауэр.