strRef = Request.ServerVariables("HTTP_REFERER") If Right(strRef, 9) <> "menu.html" Then Response.Write("直接起動できません!") Response.End() Else strTerm = Request.QueryString("TERM") If strTerm = "S" Then Server.Transfer("aaa.htm") ElseIf strTerm = "R" Then Response.ContentType="application/x-ms-application" Response.Expires = -1 Response.AddHeader("Pragma","no-cache") Response.WriteFile("WakeUp.application") 'ClickOnceアプリの配置マニフェスト Response.End() Else Response.Write("パラメータエラー!") Response.End() End If End If
分類:[ASP.NET]
2006/08/04(Fri) 23:30:34 編集(投稿者)
QueryStringを判別して,別のWEBページへの遷移とClickOnceアプリの起動を振分ける処理の検証をしています。
[test.aspx]
<%@ Page Language="VB" %>
<%
Dim strRef, strTerm
strTerm = Request.QueryString("TERM")
If strTerm = "S" Then
Server.Transfer("aaa.html")
ElseIf strTerm = "R" Then
Response.ContentType="application/x-ms-application"
Response.Expires = -1
Response.AddHeader("Pragma","no-cache")
Response.WriteFile("WakeUp.application") 'ClickOnceアプリの配置マニフェスト
Response.End()
Else
Response.Write("パラメータエラー!")
Response.End()
End If
%>
WEBページから"〜/test.aspx?TERM=R"という形式で実行しています。
上記のコードでは特に問題なく実行されますが,必ずWEBページから起動されるようにするために(IEの履歴やアドレスバーからの直接起動を防ぎたい),次のようにHTTP_REFERERによる起動制御を追加したところ,
strRef = Request.ServerVariables("HTTP_REFERER")
If Right(strRef, 9) <> "menu.html" Then
Response.Write("直接起動できません!")
Response.End()
Else
strTerm = Request.QueryString("TERM")
If strTerm = "S" Then
Server.Transfer("aaa.htm")
ElseIf strTerm = "R" Then
Response.ContentType="application/x-ms-application"
Response.Expires = -1
Response.AddHeader("Pragma","no-cache")
Response.WriteFile("WakeUp.application") 'ClickOnceアプリの配置マニフェスト
Response.End()
Else
Response.Write("パラメータエラー!")
Response.End()
End If
End If
strTerm = "R"の処理で「アプリケーションを起動できませんでした。」となり,詳細のログを見ると,「〜/test.aspx?TERM=R のライセンス認証により例外が発生しました。〜/test.aspx?TERM=R からマニフェストを読み取っているときに例外が発生しました。マニフェストが無効であるか、ファイルを開くことができなかった可能性があります。」とあります。
その他の処理は問題ありません。
なぜこんなことになるのでしょうか?
対処方法がわかれば教えてください。
必要であれば,詳細ログを全文提示します。
レガシーASPの経験はありますが,ASP.NETは今回はじめてなので,何かとんちんかんなコードを書いているのかもしれませんが,宜しくお願いいたします。
長文失礼しました。
[環境]
サーバ:Windows 2000 Prp SP4,IIS 5.0,.NET Framework 2.0
クライアント:Windows XP Prp SP2,IE 6 SP2,.NET Framework 2.0,Visual Studio 2005