1

WCF サービス (.NET 3.5) を IIS 5.1 (WinXP) に展開し、ローカル コンピューターからアクセスできるようにしました。ただし、ローカル コンピューター以外からはアクセスできません。

これが私のweb.configファイルです:

<system.serviceModel>
  <serviceHostingEnvironment>
    <baseAddressPrefixFilters>
      <add prefix="http://222.22.22.222:8072/"/>
    </baseAddressPrefixFilters>
  </serviceHostingEnvironment>
  <behaviors>
    <serviceBehaviors>
      <behavior name="Parus.ServiceBehavior">
        <serviceMetadata httpGetEnabled="true" httpGetUrl="http://111.1.11.111:8072/AsurReceiveData/Service.svc"/>
        <serviceDebug includeExceptionDetailInFaults="true"/>
        <MyInspector />
      </behavior>
    </serviceBehaviors>
  </behaviors>
  <services>
    <service behaviorConfiguration="Parus.ServiceBehavior" name="Parus.Service">
      <endpoint address="http://222.22.22.222:8072/AsurReceiveData/Service.svc" binding="basicHttpBinding" contract="Parus.IService">
      </endpoint>
      <endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange"/>
    </service>
  </services>
  <extensions>
    <behaviorExtensions>
      <add name="MyInspector" type="Parus.MessageInspectorExtension, Parus, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"/>
    </behaviorExtensions>
  </extensions>
</system.serviceModel>

コンピュータのローカル IP アドレスは 111.1.11.111:8072 です。コンピューターのパブリック IP アドレスは 222.22.22.222:8072 です。

私がしたこと?IIS 5.1 に新しい TCP ポートを追加しました (既定の Web サイトのプロパティ -> [Web サイト] タブ -> [詳細設定] ボタンをクリック -> [追加] ボタンをクリックし、新しいポートを追加します: 8072)。

プロジェクトの URL は次のようになります。

http://111.1.11.111:8072/ServiceFolder

サービスは次のようになります。

public class Service : IService
{
    public const string ReplyAction = "http://222.22.22.222:8072/AsurReceiveData/Message_ReplyAction";
    public const string RequestAction = "http://222.22.22.222:8072/AsurReceiveData/Message_RequestAction";

    public Message SetData(Message requestXml)
    {
        using (StreamWriter writer = File.CreateText(@"Path\Body.xml"))
        {
            writer.WriteLine(requestXml.ToString());
        }
        Message response = Message.CreateMessage(MessageVersion.Default, ReplyAction, requestXml.ToString());

        return response;
    }
}

ローカル IP アドレスとパブリック IP アドレスを適切に使用しているかどうかわかりません。たぶんそれは別のものです...

助けていただければ幸いです。

4

1 に答える 1

0

コンピューターにファイアウォールがあり、すべての着信通話をブロックしています。ファイアウォールをオフにするか、8072 ポートを開いて、他のコンピューターから wcf サービスと通信できるようにする必要があります。

于 2012-12-11T08:51:25.763 に答える