- ひろひろ
- 常連さん
- 会議室デビュー日: 2004/07/23
- 投稿数: 36
|
投稿日時: 2006-04-21 12:39
いつもお世話になっております。
当方、Javaに関してはそこそこの知識はあるのですが、.NETに関してはまだまだわからないところがあります。
ですので、要領を得ていない質問かもしれませんがご容赦ください。
現在、私は
「Apache+Tomcatで動作するサーバーのJSPページにWindowsコントロールを埋め込み、
クライアントファイルをサーバーにアップロードする方法」を調査しています。
(ドラッグアンドドロップなどで。)
(ノータッチデプロイメントではなく、IEへのWindowsコントロールの埋め込みです。
ActiveXコントロールのような埋め込み式が客先からの要望となっています。)
http://japan.internet.com/developer/20051220/25.html
↑このあたりを参考にしながらIISから簡単なコントロールを配備するものはできたのですが、
このサンプルのプログラムを配信するHTTPサーバーをApacheに変えるとコントロール
を実行できるマシンとできないマシンに分かれてしまいます。
(実行できるマシンは、どうもIISでの成功をキャッシュしているような気がします。)
仕組み的にどうしてもサーバーはIISでないといけないのでしょうか?
ActiveXコントロールのCABファイル配信のようにApacheからWindowsコントロールを
配信することはできないのでしょうか?
ちなみに作成したサンプルは.NET 2003のC#で
コード: |
|
using System;
using System.Collections;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Windows.Forms;
using System.IO;
namespace HelloWorldCtl
{
/// <summary>
/// UserControl1 の概要の説明です。
/// </summary>
public class HelloWorldCtl : System.Windows.Forms.UserControl
{
private System.Windows.Forms.ListBox listBox1;
/// <summary>
/// 必要なデザイナ変数です。
/// </summary>
private System.ComponentModel.Container components = null;
public HelloWorldCtl()
{
// この呼び出しは、Windows.Forms フォーム デザイナで必要です。
InitializeComponent();
// TODO: InitComponent 呼び出しの後に初期化処理を追加してください。
this.listBox1.Items.Add("fileUpload");
}
/// <summary>
/// 使用されているリソースに後処理を実行します。
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if( components != null )
components.Dispose();
}
base.Dispose( disposing );
}
#region コンポーネント デザイナで生成されたコード
/// <summary>
/// デザイナ サポートに必要なメソッドです。このメソッドの内容を
/// コード]エディタで変更しないでください。
/// </summary>
private void InitializeComponent()
{
this.listBox1 = new System.Windows.Forms.ListBox();
this.SuspendLayout();
//
// listBox1
//
this.listBox1.Dock = System.Windows.Forms.DockStyle.Fill;
this.listBox1.ItemHeight = 12;
this.listBox1.Location = new System.Drawing.Point(0, 0);
this.listBox1.Name = "listBox1";
this.listBox1.Size = new System.Drawing.Size(150, 148);
this.listBox1.TabIndex = 2;
//
// HelloWorldCtl
//
this.AllowDrop = true;
this.Controls.Add(this.listBox1);
this.Name = "HelloWorldCtl";
this.ResumeLayout(false);
}
#endregion
protected void listBox1_DragEnter(object s,DragEventArgs e)
{
e.Effect = DragDropEffects.All;
}
protected void listBox1_DragDrop(object s,DragEventArgs e)
{
try
{
if (e.Data.GetDataPresent(DataFormats.FileDrop))
{
foreach (string fileName
in (string[])e.Data.GetData(DataFormats.FileDrop))
{
MessageBox.Show(fileName);
this.listBox1.Items.Add(fileName);
FileInfo info = new FileInfo(fileName);
string toFileName = "c:\\\\temp\\\\"+info.Name;
MessageBox.Show("2:"+toFileName);
File.Copy(fileName , toFileName );
MessageBox.Show("3:"+fileName);
}
}
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
}
|
HTMLページは
コード: |
|
<html>
<body>
<p>Hello World Control<br> <br></body>
<object id="HelloWorldControl1"
classid="http:HelloWorldControl.dll#HelloWorldCtl.HelloWorldCtl"
height="500" width="500" VIEWASTEXT>
</object>
<br><br>
</html>
|
です。
よろしくお願いします。
[ メッセージ編集済み 編集者: ひろひろ 編集日時 2006-04-21 13:08 ]
|
- ひろひろ
- 常連さん
- 会議室デビュー日: 2004/07/23
- 投稿数: 36
|
投稿日時: 2006-04-21 13:08
補足です。
http://japan.internet.com/developer/20051220/25.html
このサイトにある「仮想ディレクトリの作成」というのはやらずにIISからコントロールを配信することができましたので、Apacheでもできるんじゃないか?と思っています。
|
- 渋木宏明(ひどり)
- ぬし
- 会議室デビュー日: 2004/01/14
- 投稿数: 1155
- お住まい・勤務地: 東京
|
投稿日時: 2006-04-21 18:13
引用: |
|
このサンプルのプログラムを配信するHTTPサーバーをApacheに変えるとコントロール
を実行できるマシンとできないマシンに分かれてしまいます。
|
各クライアントの .NET Framework ランタイムの導入状況による差だったりはしませんか?
マネージコントロールをサーバに配置しても、.NET Framework ランタイムの配布までしてくれたりはしませんよ。
引用: |
|
仕組み的にどうしてもサーバーはIISでないといけないのでしょうか?
|
いいえ。そんなことは無いです。
引用: |
|
ActiveXコントロールのCABファイル配信のようにApacheからWindowsコントロールを
配信することはできないのでしょうか?
|
可能なはずです。
|
- Jitta
- ぬし
- 会議室デビュー日: 2002/07/05
- 投稿数: 6267
- お住まい・勤務地: 兵庫県・海手
|
投稿日時: 2006-04-21 19:34
サーバが DLL へのGET リクエストを許可しているか、とか?
# 設定できるんだっけ?
|
- 甕星
- ぬし
- 会議室デビュー日: 2003/03/07
- 投稿数: 1185
- お住まい・勤務地: 湖の見える丘の上
|
投稿日時: 2006-04-21 20:07
引用: |
|
Jittaさんの書き込み (2006-04-21 19:34) より:
サーバが DLL へのGET リクエストを許可しているか、とか?
# 設定できるんだっけ?
|
あると思いますよ。CGIのソースコードや実行バイナリダウンロードされちゃ、普通は困りますからね。
|
- 末記人
- 大ベテラン
- 会議室デビュー日: 2005/12/05
- 投稿数: 233
- お住まい・勤務地: あわにこ
|
投稿日時: 2006-04-21 20:11
こんばんは
apacheのaccess_logやerror_logにはどのようなログが書き込まれますか?
mime-typeの設定ではないでしょうか?
IEの設定で署名の無い云々というのがあった記憶がありますけど、これは関係なさそうですかね?
IISとApacheのゾーン設定などは同じなのでしょうか?
|
- ひろひろ
- 常連さん
- 会議室デビュー日: 2004/07/23
- 投稿数: 36
|
投稿日時: 2006-04-22 15:41
みなさん、レスありがとうございます。
私のほうでも、その後調査しましてコントロールがロードできなかった原因がわかってきました。
主な原因は
・.NETフレームワークランタイムがインストールされていない
・コード アクセス セキュリティ ポリシーの設定が各クライアントバラバラ
という原因でした。
ランタイムをインストールすることはもちろん、ゾーンセキュリティの設定で
完全に信頼するようにしたら、ロードされました。
(ローカル資源にもアクセスできました。)
ApacheもIISも関係ないようです。
引用: |
|
apacheのaccess_logやerror_logにはどのようなログが書き込まれますか?
mime-typeの設定ではないでしょうか?
|
Apacheのログを見てみましたが、特に変なログは出ていませんでした。
やはりクライアント側の問題のようです。
|
- 渋木宏明(ひどり)
- ぬし
- 会議室デビュー日: 2004/01/14
- 投稿数: 1155
- お住まい・勤務地: 東京
|
投稿日時: 2006-04-24 06:22
引用: |
|
引用: |
|
apacheのaccess_logやerror_logにはどのようなログが書き込まれますか?
mime-typeの設定ではないでしょうか?
|
Apacheのログを見てみましたが、特に変なログは出ていませんでした。
やはりクライアント側の問題のようです。
|
IIS 以外のWebサーバを使用する場合、Webサーバに MIME-Type の追加が必要なはずです。
過去ログに乗ってたような気がしますが。。。
|