VS2008 と .NET 3.5 を使用しています。
これは私の場合です:
1) 外部サービス:
私は外部サービスを使用し (そのコードについての知識はありません。私にとってはブラック ボックスです)、いくつかの引数を取るそのメソッドを呼び出します。そのうちの 1 つは、私が書くべき WCF サービスのアドレスです (2) を参照)。呼び出しは次のようになります。
string Url = "http://public-ip:8072/Service.svc";
string content = extClient.Method1(Url, email, param1, param2...);
Method1 の本体のどこかで、2) から私のサービスを呼び出します。
2) 私のサービス:
public class Service : IService
{
public const string ReplyAction = "http://public-ip:8072/Message_ReplyAction";
public const string RequestAction = "http://public-ip:8072/Message_RequestAction";
public Message SetData(Message requestXml)
{
// Do something
}
}
Web.config:
<system.serviceModel>
<serviceHostingEnvironment>
<baseAddressPrefixFilters>
<add prefix="http://public-ip:8072/"/>
</baseAddressPrefixFilters>
</serviceHostingEnvironment>
<behaviors>
<serviceBehaviors>
<behavior name="Parus.ServiceBehavior">
<serviceMetadata httpGetEnabled="true" httpGetUrl="http://local-ip:8072/Service.svc"/>
<serviceDebug includeExceptionDetailInFaults="true"/>
</behavior>
</serviceBehaviors>
</behaviors>
<services>
<service behaviorConfiguration="Parus.ServiceBehavior" name="Parus.Service">
<endpoint address="http://public-ip:8072/Service.svc" binding="basicHttpBinding" contract="Parus.IService">
</endpoint>
<endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange"/>
</service>
</services>
</system.serviceModel>
私のサービスは、ローカルで使用すると機能しますが、世界に公開すると機能しません。つまり、1) の Method1 はまったく呼び出さないということです。私はさまざまなことを試しましたが、今のところ何も起こりません。ファイアウォールがオフの場合は機能しません。また、ファイアウォールのポート 8072 の例外が追加されている場合は機能しません。
Web.config ファイルで何か間違ったことをしたか、IIS でいくつかの設定が抜けていたと思います。Web.config ファイルの public-ip アドレスと local-ip アドレスに注意してください。多分私は彼らと間違えました。わからない。