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 アドレスを適切に使用しているかどうかわかりません。たぶんそれは別のものです...
助けていただければ幸いです。