1

クエリ文字列パラメータをテストできます。

Request.QueryString["value"].IsEmpty()
Request.QueryString["value"].Isint()
Etc.

しかし、クエリ文字列がまったくないことをどのように回避できますか?つまり、ユーザーが各フォルダーまたはサブフォルダーにアクセスできるようにしたいのです。preventthe root

    http://localhost:16838/auth/provider.cshtml

instead of:

    http://localhost:16838/auth/provider.cshtml?providerId=7

クエリ文字列(ページ拡張子まで)を削除するcannot perform runtime binding on a null referenceと、コードの次の部分がまだ実行されているため、エラーが発生します。

redirect代わりに、私はユーザーに400 BAD REQUEST:になってもらいたいです。

The request could not be understood by the server due to malformed syntax.
The client SHOULD NOT repeat the request without modifications
4

2 に答える 2

1

クエリの刺し傷の値がまったくないことを確認したい場合は、チェックできますRequest.ServerVariables["QUERY_STRING"]

http://msdn.microsoft.com/en-us/library/system.web.httprequest.servervariables.aspx

ただし、ほとんどの場合、個々の値を確認する必要があり、これを実行できるはずです。

if(Request.QueryString["key"] == null || Request.QueryString["key"].IsEmpty()) 
{
  // redirect
}
于 2012-09-27T18:05:07.507 に答える
0

ユーザーは、クエリ文字列値を省略して「フォルダのルートにアクセス」することはできません。http://localhost:16838/auth/provider.cshtml代わりに要求した場合に発生するのは、値を持つhttp://localhost:16838/auth/provider.cshtml?providerId=7ことに依存するコードが爆発する可能性があるということだけです。Request["providerId"]

クエリ文字列値が存在するかどうかをテストする場合は、IsEmpty()を使用するだけで済みます。

if(Request["providerId"].IsEmpty()){
    //the value is missing. Redirect ot a safe page or provide a default value
} else {
    //run your code
}
于 2012-09-27T19:21:10.153 に答える