2

同様の質問はどれも私を助けませんでした。ここの専門家はきっとそうするでしょう。

私の問題は、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/123System.ServiceModel.EndpointNotFoundException:メッセージを受け入れることができるエンドポイントをリッスンしていませんでした。これは多くの場合、誤ったアドレスまたはSOAPアクションが原因で発生します。詳細については、InnerException(存在する場合)を参照してください。---> System.Net.WebException:リモートサーバーに接続できません---> System.Net.Sockets.SocketException:到達不能なネットワーク10.0.0.3:8080に対してソケット操作が試行されました

何か案は?

4

2 に答える 2

0

サービスを自己ホストしている場合は、次のように netsh コマンドを使用してポートを登録していることを確認してください。

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

また、PC のファイアウォールを無効にしてテストしてみてください

于 2013-01-14T15:26:37.023 に答える