DOBON.NET DOBON.NETプログラミング掲示板過去ログ

WEBページからClickOnceアプリの起動について

  • 題名: WEBページからClickOnceアプリの起動について
  • 著者: しー
  • 日時: 2006/08/04 19:37:17
  • ID: 17000
  • この記事の返信元:
    • (なし)
  • この記事への返信:
    • (なし)
  • ツリーを表示
環境/言語:[Windows 2000 Prp SP4,IIS 5.0,.NET Framework 2.0]
分類:[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

DOBON.NET | プログラミング道 | プログラミング掲示板