- PR -

ノータッチデプロイメント起動時にMicrosofut IE Execute Shellエラー

1
投稿者投稿内容
莉華
会議室デビュー日: 2004/11/18
投稿数: 5
投稿日時: 2006-03-01 10:02
現在ASP.NET2003からノータッチデプロイメント(2005)を呼び出そうとしているところで「Microsofut IE Execute Shellエラー」が出てしまいます。

<システムの流れ>
ASP.NET側よりノータッチデプロイメント(Aとします)を呼び、そこでは「ダウンロードメッセージ」を表示しています。
そのAよりまた別のノータッチデプロイメント(Bとします)を呼ぶ作りになっています。

<Aの処理>
・二重起動チェック(Mutex使用)
・「お待ちください」Form表示
・Bの起動
<AからBを起動する処理>
System.Reflection.Assembly targetAssembly = System.Reflection.Assembly.LoadFrom(起動先Url);
Type targetType = targetAssembly.GetType("起動クラス名");
object startObject = System.Activator.CreateInstance(targetType, 引数1, 引数2, 引数3);
Form startForm = (Form)startObject;

<Bの処理>
・Aよりパラメータを受け取る
・WebServiceとの連携


ASP側から呼び出す時の引数の渡し方は
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=6860&forum=7
を参考にさせて頂きました。

<手順>
1.フォルダ「NTD」作成
2.フォルダの中にA、Bを配置
2.binフォルダにハンドラdll配置
3.ハンドラのアプリケーション マッピングを作成(拡張子は.exe)
4.web.configファイル作成

これでIEより起動させると「Microsofut IE Execute Shellエラー」が出てしまい起動できません。
IISの設定やweb.configの設定を変更していると時々起動します。
しかし、IEのキャッシュを削除したりすると起動していたものが起動しなくなったりとても不安定です(起動しないほうが多い)。

exe起動以前の問題なのかもしれませんが時々正常に起動するので何が悪いのかが全く分かりません。
パラメータを渡さなくても同じエラーが出てしまうのでセキュリティの問題なのでしょうか?
単純にローカルからExeを実行するだけなら正常に起動しているので処理にエラーがあるとは思えません。

どうかよろしくお願い致します。

莉華
会議室デビュー日: 2004/11/18
投稿数: 5
投稿日時: 2006-03-01 14:24
自己レスです。

いろいろ調べたところ、ASP側から呼び出す時の引数の渡し方で作成したハンドラが
うまく動いてくれていません。

<MyHandler>
using System;
using System.Collections.Generic;
using System.Text;
using System.Web;

namespace MyHandler
{
public class SyncHandler : IHttpHandler
{
public bool IsReusable
{
get { return false; }
}
public void ProcessRequest(HttpContext context)
{
string path = context.Request.PhysicalPath;
string url = context.Request.RawUrl;
string ext = ".config";

if (url.ToLower().EndsWith(ext))
{
context.Response.WriteFile(path + ext);
}
else
{
context.Response.ContentType = "application/octet-stream";
context.Response.WriteFile(path);
}
}
}
}

<web.config>
<configuration>
<system.web>
<httpHandlers>
<add verb="*" path="*.exe" type="MyHandler.SyncHandler, MyHandler" />
<remove verb="*" path="*.config" />
<add verb="*" path="web.config" type="System.Web.HttpForbiddenHandler"/>
</httpHandlers>
</system.web>
</configuration>

作成されたdllを読むときに
http://localhost/Handler/Default.exe
で読める時と読めない時があります。
読める時はexeも起動します。

読める、読めないの差は何なのでしょうか?
よろしくお願いします。

1

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