質問

私は、.NET Webサービスを作成しました。このWebサービスは、制御外のクライアントによって使用されます(私のサーバーは、PHPで作成されたライブサーバーのシミュレータです)。 Webサービスは必要に応じて機能しますが、クライアントには、呼び出しに.asmx拡張子またはそれに関する拡張子を追加する機能がありません。基本的には http:// localhost / soap / MyWebService を使用しますが、IISは http://localhost/soap/MyWebService.asmx 。 IISが.asmx拡張子なしでリクエストに応答する方法はありますか?

役に立ちましたか?

解決

ASP.NETを介してすべての要求をルーティングするワイルドカードマッピングを追加します。

http: //professionalaspnet.com/archive/2007/07/27/Configure-IIS-for-Wildcard-Extensions-in-ASP.NET.aspx

着信リクエスト http:// localhost / soap / MyWebService http:// localhost / soap / MyWebServiceにマップできるように、URLの書き換えも行う必要があります。 .asmx

http://weblogs.asp.net/scottgu/archive/2007/02/26/tip-trick-url-rewriting-with-asp-net.aspx

基本的に、 Application_BeginRequest メソッドに次のようなものを追加できます。

string path = Request.Path;
if (path.Contains("/soap/") && !path.EndsWith(".asmx"))
    Context.RewritePath(path + ".asmx");

まだテストしていません(HACKです)が、開始する必要があります。

他のヒント

それ自体をディレクトリに配置し、IISでデフォルトのドキュメントとして設定することもできます。

サーバー上:C:/mywebsite.com/mywebservice/mywebservice.asmx

IISでmywebservice.asmxをデフォルトのドキュメントとして設定します

ウェブ上: http://mywebsite.com/mywebservice

PHPクライアントに何か非常に悪い点があるように思えます。サービスのURLを何らかの方法で解釈すべきではありません。サーバーメタデータまたはクライアント構成で指定されているURLはすべて、使用するURLです。

PHPについては知りませんが、PHPがURLにあるドットの数を気にするのが理にかなっている理由を教えてください。私のサービスが http:// localhost / foo / bar または" http:// localhost / foo / barasmx?PHP = 0 "。

phpではwsdlのみを呼び出す必要があり、asxmや.netが行うそのような愚かなことは必要ありません。

1つの簡単な例

$wsdl = "http://domain/wsdlfile.wsdl"; //url to wsdl 
$client = new SoapClient($wsdl,array('trace' => 1,'encoding' => 'UTF-8','exceptions' => 0)); 
$Return = $client->callfunction();
echo htmlspecialchars($client->__getLastResponse());

それだけです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top