同様の質問はどれも私を助けませんでした。ここの専門家はきっとそうするでしょう。
私の問題は、WCF Restサービスをホストしていて、ローカルでしかアクセスできないことです。LAN上の他のコンピュータはそれにアクセスできません。
これが私のサービスをホストする方法です(これはコンソールアプリケーションで実行されます)
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>
LAN内の他のマシンからサービスにアクセスすると、次のエラーが発生します。
http://yaniv-pc:8080/Test/123
System.ServiceModel.EndpointNotFoundException:メッセージを受け入れることができるエンドポイントをリッスンしていませんでした。これは多くの場合、誤ったアドレスまたはSOAPアクションが原因で発生します。詳細については、InnerException(存在する場合)を参照してください。---> System.Net.WebException:リモートサーバーに接続できません---> System.Net.Sockets.SocketException:到達不能なネットワーク10.0.0.3:8080に対してソケット操作が試行されました
何か案は?