- PR -

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

1
投稿者投稿内容
しー
会議室デビュー日: 2006/08/10
投稿数: 2
投稿日時: 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
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2006-08-10 23:41
リクエスト内容を、ネットワーク上のデータを直に見て確認してみてください。
バージョンのチェックなどを行うルーチンがあると思うのですが、それがリファラ無しで実行されているのではないでしょうか。
しー
会議室デビュー日: 2006/08/10
投稿数: 2
投稿日時: 2006-08-11 00:15
引用:

Jittaさんの書き込み (2006-08-10 23:41) より:
リクエスト内容を、ネットワーク上のデータを直に見て確認してみてください。
バージョンのチェックなどを行うルーチンがあると思うのですが、それがリファラ無しで実行されているのではないでしょうか。



Jittaさん、返信ありがとうございます。
menu.htmlからのリクエストということでしょうか?
恥ずかしながら、ネットワーク上のデータを直に見る方法がわかりません。
よろしければ教えてください。
1

スキルアップ/キャリアアップ(JOB@IT)