ページ 11

CentOS 6.6 で ASP.NET + サードパーティ製コンポーネント

Posted: 2015年2月23日(月) 18:25
by Goos
はじめてこちらの掲示板を利用させていただきます。

現在、Linux 環境での Web アプリの構築について勉強しています。
これまで業務では Visual Studio で Windows フォームアプリケーションの開発をしていましたが、Web アプリや Linux については勉強し始めたばかりです。

これまで Visual Studio を使っていたので、Linux 環境で ASP.NET を利用できるという Mono に興味があり、社内にテスト環境(CentOS 6.6)を構築しています。
ASP.NET に関していくつか動作確認をする予定で、現時点では Visual Studio 2008 で作成した単一ページの簡単な ASP.NET Web アプリケーションが正常に動作することが確認できました。
このサンプル Web アプリは、ボタンをクリックするとサーバー上に予め保存されている PDF をブラウザ上に表示する、といったシンプルなものです。

次のステップとして、このサンプル Web アプリに .NET Framework 上で動作するサードパーティ製のコンポーネントを追加し、このサードパーティ製のコンポーネントが機能するかどうかを検証したいのですが、ボタンがクリックされたときにこのコンポーネントに関係した処理を実行すると、以下のエラーが表示されます。
「Could not open display (X-Server required. Check you DISPLAY environment variable)」

X サーバ/X クライアントと DISPLAY 環境変数のことを指していると思われますが、どう対処して良いものかわからず困っています。
またはそもそも .NET Framework 標準ではない、サードパーティ製のコンポーネントは Mono では利用できないのでしょうか。

情報をお持ちの方いらっしゃいましらら、宜しくお願い致します。
足りない情報などありましたら再掲します。

【動作環境】
・CentOS 6.6
・Apache 2.2.15
・Mono 2.10.9
・XSP 2.10.2.0
・mod_mono 2.10

【開発環境】
・Windows 7
・Visual Studio 2008
・.NET Framework 3.5

Re: CentOS 6.6 で ASP.NET + サードパーティ製コンポーネント

Posted: 2015年2月25日(水) 09:58
by YuO
Goos さんが書きました:次のステップとして、このサンプル Web アプリに .NET Framework 上で動作するサードパーティ製のコンポーネントを追加し、このサードパーティ製のコンポーネントが機能するかどうかを検証したいのですが、ボタンがクリックされたときにこのコンポーネントに関係した処理を実行すると、以下のエラーが表示されます。
「Could not open display (X-Server required. Check you DISPLAY environment variable)」
X サーバ/X クライアントと DISPLAY 環境変数のことを指していると思われますが、どう対処して良いものかわからず困っています。
またはそもそも .NET Framework 標準ではない、サードパーティ製のコンポーネントは Mono では利用できないのでしょうか。
「.NET Framework 上で動作するサードパーティ製のコンポーネント」とはどのようなコンポーネントでしょうか。
IIS + ASP.NET上での動作をサポートしている物でしょうか。
依存するライブラリに通常ASP.NETでは使われないライブラリ,例えばSystem.Windows.Forms.dllがあったりしませんか。

コンポーネントがmonoで使えるかどうか,さらに非Windows環境で使えるかどうかは,そのコンポーネントがどのような依存関係を持っているかに依ります。
完全にCLIの部分で記述されている場合 (依存関係がBCLまで),おそらくmonoでも使えるでしょう。
BCL以外の.NET Framework 標準ライブラリに依存している場合は,monoがどこまで実装しているかによります。
オフトピック
例えば,WPFは実装されていないため,monoでは実行不可能になります。
P/Invokeを使ったネイティブAPIの呼び出しがなされている場合,非Windows環境では実行不可能になります。
オフトピック
実際には動的に解決されるため,実行は出来るが実行時に例外が発生する,ということになります。

Re: CentOS 6.6 で ASP.NET + サードパーティ製コンポーネント

Posted: 2015年2月25日(水) 21:56
by Goos
YuO さんが書きました: 「.NET Framework 上で動作するサードパーティ製のコンポーネント」とはどのようなコンポーネントでしょうか。
IIS + ASP.NET上での動作をサポートしている物でしょうか。
依存するライブラリに通常ASP.NETでは使われないライブラリ,例えばSystem.Windows.Forms.dllがあったりしませんか。
IIS + ASP.NET 上での動作はサポートされていますが、依存するライブラリまではわからないので、実際に検証してみようと思った次第です。
ですが、エラーメッセージを再度確認したところ、System.Drawing.Graphics.FromHwnd が呼び出されたところで例外が発生しているようなので、やはり System.Windows.Forms に依存しているような気がします。

希望は薄いと思いますが、サードパーティ製のコンポーネントを使用していることを抜きにして、通常であれば先のエラーが発生した場合はまず何を疑うべきか、ご存知ありませんか?