web-dev-qa-db-ja.com

URLクエリ文字列を介してパラメータでASMXサービスを呼び出すことは可能ですか?

単一のintパラメータを取るasmxサービスを持っています。サービスのURLを開くと、サービスの説明画面が表示されます。ここからフォームにクエリパラメータを入力し、Webサービスを呼び出すことができます。

URL /クエリ文字列から直接Webサービスを呼び出す方法はありますか?

これは機能しません:

http:// localhost:4653/MyService.asmx?op = MyWebMethod&intParameter = 1

何か案は?いくつかの展開の問題により、標準リンクからこれを実行できるようになりたいと思っています。通常のaspxページでリクエストをラップする必要がありますか?

22
Alex

メソッドをデコレートして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にエンコードされるため、改ざんの対象となりやすくなります。

48
Scott Anderson

ASMX WebサービスはSOAPを使用します。 SOAP要求はメソッドのみを呼び出すためにPOSTを使用します。Webサービスを呼び出すには、aspxページにプロキシクライアントを生成する必要があります。 GET動詞を使用してWebサービスを呼び出すには、 WCF REST などの別のアプローチを使用する必要がある場合があります。

10
Darin Dimitrov