2016-07-04 15 views
0

私は就職の面接を持っていたし、私は次のことを頼まれた:リクエストはASHXハンドラで他のリクエスト値を取得しますか?

のは2つの要求がASHX(ハンドラ)に正確に同じ時を送ったとしましょう。

まず要求:http://www.secretwordHandler.com/?SecretWord=ABRA

2番目のリクエスト:http://www.secretwordHandler.com/?SecretWord=KADABRA

これはASHXです:

public void ProcessRequest (HttpContext context) { 

     Random rnd = new Random(); 
     int randomSleepTime = rnd.Next(1000, 10001); 

     Thread.Sleep(randomSleepTime); 

     string secretWord = HttpContext.Current.Request.QueryString["SecretWord"]; 

     Thread.Sleep(randomSleepTime); 

     //What is the secret Word?? 
     Console.WriteLine(secretWord); 

    } 

は、それが最初の要求は、第2の要求の結果を取得することは可能ですか?

私はHttpContext.Currentはスレッドセーフではないようだが、それはする必要はありません...

+1

Thread.Sleepは現在のスレッドを中断します... context.Current.Request.QueryString ["SecretWord"] ... ProcessRequest()への呼び出しがスレッドセーフではない場合、それは起こり得るこの機能は、私はいいえと言うだろう。 –

+1

ここでのキッカーは、インスタンス化された入力コンテキストではなく、(静的な) 'HttpContext.Current.Request'が使用されているように見えます。 –

+0

@ AllanS.Hansenそれは私が考えていることですが、何が起こるのか確実には言えませんでした... –

答えて

1

スレッドの睡眠は、私は混乱しましたので、それに対する答えについては私は認めなければならない確認されませんでした。 Understanding the SynchronizationContext in ASP.NET

あなたの質問に答えるには:最初のリクエストが2番目のリクエストの結果を得ることはできません。

関連する問題