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はスレッドセーフではないようだが、それはする必要はありません...
Thread.Sleepは現在のスレッドを中断します... context.Current.Request.QueryString ["SecretWord"] ... ProcessRequest()への呼び出しがスレッドセーフではない場合、それは起こり得るこの機能は、私はいいえと言うだろう。 –
ここでのキッカーは、インスタンス化された入力コンテキストではなく、(静的な) 'HttpContext.Current.Request'が使用されているように見えます。 –
@ AllanS.Hansenそれは私が考えていることですが、何が起こるのか確実には言えませんでした... –