C# で Web サービス インターフェイスを使用する場合、サーバーに返される IP アドレスにはポート番号が伴います。ただし、場合によってはそのポートが使用できない場合(転送にnginxを使用する場合など)、サーバー側で処理する必要があります(処理内容は以下のコードです)。さらに、構成ファイルの web.config の system.web に何かを追加する必要があります:
<webServices>
<protocols>
<追加 name="HttpGet"/>
<add name="HttpPost"/>
<add 名前="HttpSoap"/>
プロトコル>
<soapExtensionReflectorTypes>
追加 type="CommMethod.OuterPortReflector,CommMethod"/>
soapExtensionReflectorTypes& gt;
ウェブサービス >
注: 1. type の内容はクラス名とパッケージ名です。これは、msdn の人が書いたこととは多少異なります (バージョンの問題である可能性があります) (http://blogs.msdn.com/b/kaevans/archive/2005/11/16/493496.aspx)。
2. プロトコルにコンテンツがない場合、post リクエストと get リクエストが正しく認識されない可能性があります (私は検証していませんが、ブログで同様の問題を見たことがあります)。
3.stackoverflow ソース アドレス: http://stackoverflow.com/questions/1531448/asp-net-web-service-changes-port-on-invoke
コード:
//---- -------------------------------------------------- ------------------
//
// * Copyright (C)
// * バージョン:
// * 著者 : ying83811
// * ファイル名 : innerPortReflector.cs
// * 履歴 : ying83811 によって作成されました
//
//------------- -------------------------------------------------- -------
System を使用;
System.Collections.Generic を使用;
System.Linq を使用;
System.Text を使用;
System.Web.Services.Description を使用;
名前空間 Better517Na.KoreaProductInterface.CommMethod
{
///
ReflectMethod を書き換える
/ //
public override void ReflectDescription()
️
。 foreach ( design.services の Service
{
FORTACH (service.ports のポート port) {
Foreach (serviceACH Ions)
{o SOAPADDDRESSBINDING BINDING = SOAPADDRSSSBIDING としての拡張;
if (null! = バインディング)
{ binding.location = binding.location.replace(portnum、string.empty);
}
上記では、WebService のポート番号の変更を、関連する側面も含めて紹介しています。PHP チュートリアルに興味のある友人に役立つことを願っています。