2012-03-21 21 views
0

私は40種類のWebメソッドを持つWebサービスを持っています。 HttpContextを使用して要求を送信したメソッドをWebサービスに取り込むことはできますか?WebサービスメソッドをHttpContextから呼び出す方法を教えてください。

すべてのメソッドがアクティブになり、私はHttpContextにのみアクセスできるという抽象的な一般的なコマンドがあるので、必要です。

ありがとうございます!

答えて

2

私はあなたの質問を修正理解していれば、あなたがHttpRequestPathInfoプロパティを使用することができます:"/MyWebMethod"

string methodName = HttpContext.Current.Request.PathInfo; 

文字列methodNameは、スラッシュの接頭辞(/)とメソッド名になります。

+0

ありがとうが、それは空の文字列とメソッド名ではなく返す –

+0

@DorCohen:どのようにクライアントで使用するURLを見ていますか? 'someBase/MyWebService.asmx/MyWebMethod'のように? 'web.config'の' 'にURLマッピングモジュールを使用していますか? – Oleg

+0

No:someBase/MyWebService.asmx –

-1

あなたはおそらく必要があります。

HttpContext.Current 

しかし、あなたは、ASPX互換モードがオンになってきたことを確認し、そうでなければ、あなたはまたの名前を保存することができます

そのプロパティにアクセスすることはできないでしょうこのようなアイテムの配列に機能:

void myServiceMethod() 
{ 
    HttpContext.Current.Items["MethodName"] = "myServiceMethod"; 
    // ... 
    // here comes your method implementation 
} 

、その後、あなたはどこにでもHttpContext.Current.Items["MethodName"]

を読むことができます

colection HttpContext.Current.Itemsは常に現在の要求に対してのみ有効なので、要求関連の情報の格納場所として使用できます。

リクエストに応答すると、それはごみです。

+0

これはWebサービスのasmxパスだけで、特定のメソッドではありません - http://dc.dc.com/AgentWS/AgentService.asmx –

+0

次に、メソッド名をHttpContext.Current.Itemsに最初に保存しますメソッドの実装におけるもの 現在の要求のスコープ内のどこにでも名前を読み取ることができます。 –

+0

@DorCohen私はあなたのニーズを反映するために私の答えを更新しました。 –

関連する問題