ASP.NETのお勉強

C#のお勉強はいいけど、そろそろASP.NETの勉強もしなきゃと思い、お勉強をスタート

どうせお勉強するならと、CodeZineの「ASP.NETでCometを利用したチャットを実装する」を試してみる。

このページは、Visual Studio 2005を想定しているが、Visual Web Developer 2008 Expressで試してみる。

先のサイトから、プロジェクトをダウンロードして、zipを展開する。ターゲットは、C:Users[ユーザー名]DocumentsVisual Studio 2008ProjectsSampleCometChat に。

Visual Web Developer 2008 Expressを起動して、メニューの「Webサイトを開く」を選ぶ。ダイアログが出るので、「ファイルシステム」を選んでから、先のフォルダを選択、「開く」を押す。

デバッグを始める前に、IEをセットアップして、デバッグできるようにする。IEのメニューの「ツール」-「インターネットオプション」を選ぶ。インターネットオプションダイアログがでるので、「詳細設定」タブから、「設定」の中の、「ブラウズ」-「スクリプトデバッグを使用しない (Internet Explorer)」のチェックをはずして、IEを終了しておく。

あとは、Visual Web Developer上で、F5を押すか、メニューの「デバッグ」-「デバッグの開始」でIEが起動して、実行ができる。

この状態で、クライアント側も、サーバ側もデバッグできる。しかし、デバッグ中にファイルの編集をしても、デバッグには反映されない。

新規作成でプロジェクトを作った場合、C:Users[ユーザー名]DocumentsVisual Studio 2008Projects[プロジェクト名] にslnができる。実際のファイルは、C:Users[ユーザー名]DocumentsVisual Studio 2008WebSites[プロジェクト名] にできる。こいつをコピーすれはOKな模様。

さて、Vista上でのMonoに挑戦。Monoは、1.2.6。「Mono for Windows, Gtk# and XSP」ってやつで、msiがあるので、それをインストール。

左下のすべてのプログラムの中に、Mono 1.2.6 for Windowsってのがあって、そこに、Mono-1.2.6 Command Promptがあるので、これを選択。

先のWebSitesの下に移動して、xsp2と入力すると、ポート8080でWebサーバが起動。IEでhttp://localhost:8080/ とやって表示すると。。。

あら、動きません。

Server Error in ‘/’ Application


Compilation Error

Description: Error compiling a resource required to service this request. Review your source file and modify it to fix this error.

Error message:

(0,0) : error : at Mono.CSharp.CompilerGeneratedClass..ctor (Mono.CSharp.DeclSpace parent, Mono.CSharp.MemberName name, Int32 mod, Location loc) [0x00000]
(0,0) : error : at Mono.CSharp.CompilerGeneratedClass..ctor (Mono.CSharp.DeclSpace parent, Mono.CSharp.GenericMethod generic, Int32 mod, Location loc) [0x00000]
(0,0) : error : at Mono.CSharp.ScopeInfo..ctor (Mono.CSharp.Block block, Mono.CSharp.DeclSpace parent, Mono.CSharp.GenericMethod generic) [0x00000]
(0,0) : error : at Mono.CSharp.ScopeInfo.CreateScope (Mono.CSharp.Block block) [0x00000]
(0,0) : error : at Mono.CSharp.Block.CreateScopeInfo () [0x00000]

途中略

(0,0) : error : at Mono.CSharp.TypeContainer.DoResolveFieldInitializers (Mono.CSharp.EmitContext ec) [0x00000]
(0,0) : error : at Mono.CSharp.TypeContainer.ResolveFieldInitializers (Mono.CSharp.EmitContext ec) [0x00000]
(0,0) : error : at Mono.CSharp.Constructor.Emit () [0x00000]
(0,0) : error : at Mono.CSharp.TypeContainer.EmitType () [0x00000]
(0,0) : error : at Mono.CSharp.RootContext.EmitCode () [0x00000]
(0,0) : error : at Mono.CSharp.Driver.MainDriver (System.String[] args) [0x00000]
(0,0) : error : at Mono.CSharp.Driver.Main (System.String[] args) [0x00000]


 

う~ん。原因不明。もっと定番なプロジェクトから挑戦しなきゃだめだな。

次に、Linuxの上のMonoで挑戦。

apt-get install mono
apt-get install mono-xsp2

ファイルをコピーして、同様に、xsp2。IEでアクセスすると。。。動きません。

System.TypeInitializationException: An exception was thrown by the type initializer for Mono.WebServer.XSPWorkerRequest

Server stack trace:
  at <0x00000> <unknown method>
  at Mono.WebServer.XSPApplicationHost.ProcessRequest (Int32 reqId, Int64 localEPAddr, Int32 localEPPort, Int64 remoteEPAdds, Int32 remoteEPPort, System.String verb, System.String path, System.String queryString, System.String protocol, System.Byte[] inputBuffer, System.String redirect, IntPtr socket, Mono.WebServer.SslInformations ssl) [0x00000]
  at (wrapper remoting-invoke-with-check) Mono.WebServer.XSPApplicationHost:ProcessRequest (int,long,int,long,int,string,string,string,string,byte[],string,intptr,Mono.WebServer.SslInformations)
  at (wrapper xdomain-dispatch) Mono.WebServer.XSPApplicationHost:ProcessRequest (object,byte[]&,byte[]&,int,long,int,long,int,string,string,string,string,byte[],string)
以下略

Googleで検索すると、

Mono does not support the <system.webServer> configuration section.
Remove it from web.config

ありゃ、さいですか。web.configを編集して、該当部分を削除。

やっぱり動きません。

Server error in ‘/’ application


Description: Error processing request.

Error Message: HTTP 500.

Stack Trace:

System.BadImageFormatException: Could not load file or assembly ‘/tmp/root-temp-aspnet-0/2e347ec0/App_Code.9ee5ebb.dll’ or one of its dependencies. An attempt was made to load a program with an incorrect format. File name: ‘/tmp/root-temp-aspnet-0/2e347ec0/App_Code.9ee5ebb.dll’
at <0x00000> <unknown method>
at (wrapper managed-to-native) System.Reflection.Assembly:LoadFrom (string,bool)
at System.Reflection.Assembly.LoadFrom (System.String assemblyFile) [0x00000]
at Mono.CSharp.CSharpCodeCompiler.CompileFromFileBatch
(System.CodeDom.Compiler.CompilerParameters options, System.String[] fileNames) [0x00000]
途中略
at System.Web.Compilation.AppCodeCompiler.Compile () [0x00000]
at System.Web.HttpApplicationFactory.InitType (System.Web.HttpContext context) [0x00000]
at System.Web.HttpApplicationFactory.GetApplication (System.Web.HttpContext context) [0x00000]
at System.Web.HttpRuntime.RealProcessRequest (System.Object o) [0x00000]

/tmpをのぞいてみると、App_Code.***.dllのファイルサイズが0になっている。

なんか根本的に勘違いしてるんだろうか。。。。

ちゃんと、.NET2.0にしてるんだけどなぁ。

「ASP.NETのお勉強」への1件のフィードバック

  1. ふと気がついたんだけど、Debianでapt-getしてきた、monoは1.2.2.1みたい。。。自分でコンパイルするのか。はぁ。

コメントを残す