我遇到问题,ASP.Net神秘地丢失了我的一个QueryString参数。我有以下网址(从我的浏览器地址栏粘贴):
//Short example
http://localhost/AllAboutThatWeb/SPARQL?partialResults=True&query=SELECT%20*%20WHERE%20{%3Fs%20%3Fp%20%3Fo}&timeout=1000
//Long example
http://localhost/AllAboutThatWeb/SPARQL?query=PREFIX%20rdf%3A%20%3Chttp%3A%2F%2Fwww.w3.org%2F1999%2F02%2F22-rdf-syntax-ns%23%3E%0D%0APREFIX%20rdfs%3A%20%3Chttp%3A%2F%2Fwww.w3.org%2F2000%2F01%2Frdf-schema%23%3E%0D%0APREFIX%20xsd%3A%20%3Chttp%3A%2F%2Fwww.w3.org%2F2001%2FXMLSchema%23%3E%0D%0APREFIX%20aat%3A%20%3Chttp%3A%2F%2Fwww.dotnetrdf.org%2FAllAboutThat%2F%3E%0D%0ASELECT%20*%20WHERE%20{%3Fs%20%3Fp%20%3Fo}&timeout=1000&partialResults=True
但是partialResults参数总是丢失,如果我调试应用程序然后我发现Request.QueryString.AllKeys数组甚至不包含“partialResults”键,它包含“查询”和“超时”键。无论参数排序如何,都会发生这种情况,将参数置于不同的顺序仍会导致partialResults参数消失。
这些URL适用于我的应用程序中的ASP.Net Generic Handler,它是由我的应用程序中的另一个页面使用URL编码生成的,用于在使用Response.Redirect将请求传递给Handler之前对每个参数的数据值进行编码。
关于参数丢失原因的任何想法?
答案 0 :(得分:2)
尝试使用partialResultz
或其他此类代替partialResults
并检查Request.QueryString.AllKeys
。如果在使用其他名称时出现,则应用程序的某些部分正在提取参数。
此外,永远不要将原始SQL放在用户可编辑的地方,即使它只能由少数人访问。我能看到的唯一例外是,如果你有一个应用程序,用户应该编写自己的SQL,或者你只是为你编写一个测试应用程序。
答案 1 :(得分:-1)
“默认超时= 4;”将其写入连接字符串(以秒为单位)