単一のintパラメータを取るasmxサービスを持っています。サービスのURLを開くと、サービスの説明画面が表示されます。ここからフォームにクエリパラメータを入力し、Webサービスを呼び出すことができます。
URL /クエリ文字列から直接Webサービスを呼び出す方法はありますか?
これは機能しません:
http:// localhost:4653/MyService.asmx?op = MyWebMethod&intParameter = 1
何か案は?いくつかの展開の問題により、標準リンクからこれを実行できるようになりたいと思っています。通常のaspxページでリクエストをラップする必要がありますか?
メソッドをデコレートしてHTTP GETリクエストを許可すると、次のように探していることを実行できます。
[WebMethod]
[ScriptMethod(UseHttpGet=true)]
public string MyNiftyMethod(int myint)
{
// ... code here
}
そしてweb.configを編集します:
<system.web>
<webServices>
<protocols>
<add name="HttpGet"/>
</protocols>
次に、このメソッドを次のように呼び出すことができます。
http://mysite.com/Service.asmx/MyNiftyMethod?myint=12345
編集:GET要求を実行するこの方法には、いくつかのセキュリティリスクが伴うことに注意してください。 seHttpGetのMSDNドキュメント によると:
UseHttpGetプロパティをtrueに設定すると、アプリケーションのセキュリティリスクが生じる可能性があります機密データまたはトランザクションを使用している場合。 GETリクエストでは、メッセージはブラウザによってURLにエンコードされるため、改ざんの対象となりやすくなります。
ASMX WebサービスはSOAPを使用します。 SOAP要求はメソッドのみを呼び出すためにPOSTを使用します。Webサービスを呼び出すには、aspxページにプロキシクライアントを生成する必要があります。 GET動詞を使用してWebサービスを呼び出すには、 WCF REST などの別のアプローチを使用する必要がある場合があります。