- - PR -
WEBページからClickOnceアプリの起動について
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2006-08-10 12:14
QueryStringを判別して,別のWEBページへの遷移とClickOnceアプリの起動を振分ける処理の検証をしています。
[test.aspx] menu.htmlからsubmitされる <%@ Page Language="VB" %> <% Dim strRef, strTerm strTerm = Request.QueryString("TERM") If strTerm = "S" Then Server.Transfer("aaa.aspx") ElseIf strTerm = "R" Then Response.ContentType="application/x-ms-application" Response.Expires = -1 Response.AddHeader("Pragma","no-cache") Response.WriteFile("bbb.application") 'ClickOnceアプリの配置マニフェスト Response.End() Else Response.Write("パラメータエラー!") Response.End() End If %> WEBページから"〜/test.aspx?TERM=R"という形式で実行しています。 上記のコードでは特に問題なく実行されますが,必ずmenu.htmlから起動されるようにするために(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.aspx") ElseIf strTerm = "R" Then Response.ContentType="application/x-ms-application" Response.Expires = -1 Response.AddHeader("Pragma","no-cache") Response.WriteFile("bbb.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 | ||||
|
投稿日時: 2006-08-10 23:41
リクエスト内容を、ネットワーク上のデータを直に見て確認してみてください。
バージョンのチェックなどを行うルーチンがあると思うのですが、それがリファラ無しで実行されているのではないでしょうか。 | ||||
|
投稿日時: 2006-08-11 00:15
Jittaさん、返信ありがとうございます。 menu.htmlからのリクエストということでしょうか? 恥ずかしながら、ネットワーク上のデータを直に見る方法がわかりません。 よろしければ教えてください。 |
1