inohilog

/var/log/inohiro.log

続・xspのコードを読んでいます

xspのコードを読んでいます - INOHILOG の続き。
xspのコードを読むのはいったんストップして、HttpWorkerRequestなどを使って要求したaspxファイルをhtmlに変換して(通常のASP.NETと同じ処理)、コンソールに表示するだけ。だけどまだうまくできてない。

コード

「MarshalByRefObject」とか初めてつかって、よくわからない。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using System.IO;
using System.Net;
using System.Web;
using System.Web.Hosting;

namespace ConsoleHosting
{
	public class ConsoleHoster : MarshalByRefObject
	{
		public void HandleRequest( string fileName )
		{
			Console.WriteLine( "======================================================" );
			HttpWorkerRequest worker = new SimpleWorkerRequest( fileName, "", Console.Out );
			System.Web.HttpRuntime.ProcessRequest( worker );
		}
	}

	public class Host
	{
		public static void Main( string[] args )
		{
			try
			{
				ConsoleHoster hoster = ( ConsoleHoster )ApplicationHost.CreateApplicationHost(
					typeof( ConsoleHoster ),
					"/test",
					Directory.GetCurrentDirectory() );
				hoster.HandleRequest( "Default.aspx" );
			}
			catch ( Exception exp )
			{
				Console.WriteLine( exp.ToString() );
			}

			//foreach ( string str in args )
			//{
			//    hoster.HandleRequest( str );
			//}

			Console.ReadKey();
		}
	}
}

例外

物理パスと仮想パスが間違っているのか。というか指定したaspxファイルをコンパイルしたdllがどこかに出てくるはず?なのに、どこにも出てこない。あとPartialキーワードを使ってコードビハインドしているばあい、そこらへんの処理はどうなってるんでしょう。

System.IO.FileNotFoundException: ファイルまたはアセンブリ 'ConsoleHosting, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'、またはその依存関係の 1 つが読み込めませんでした。指定されたファイルが見つかりません。
ファイル名 'ConsoleHosting, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' です。
   場所 System.Reflection.Assembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, Assembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection)
   場所 System.Reflection.Assembly.nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, Assembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection)
   場所 System.Reflection.Assembly.InternalLoad(AssemblyName assemblyRef, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection)
   場所 System.Reflection.Assembly.InternalLoad(String assemblyString, EvidenceassemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection)
   場所 System.Reflection.Assembly.Load(String assemblyString)
   場所 System.UnitySerializationHolder.GetRealObject(StreamingContext context)
   場所 System.Web.Hosting.HostingEnvironment.CreateInstance(Type type)
   場所 System.Web.Hosting.ApplicationManager.CreateInstanceInNewWorkerAppDomain(Type type, String appId, VirtualPath virtualPath, String physicalPath)
   場所 System.Web.Hosting.ApplicationHost.CreateApplicationHost(Type hostType,String virtualDir, String physicalDir)
   場所 ConsoleHosting.Host.Main(String[] args) 場所 C:\Documents and Settings\Administrator\デスクトップ\Local\Visual Studio 2008\Projects\ConsoleHosting\Program.cs:行 29

=== 事前バインド状態情報 ===
ログ: ユーザー = INOHIRO-VMWIN\Administrator
ログ: DisplayName = ConsoleHosting, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null (Fully-specified)
ログ: Appbase = file:///C:/Documents and Settings/Administrator/デスクトップ/Local/Visual Studio 2008/Projects/ConsoleHosting/bin/Debug/
ログ: Initial PrivatePath = C:\Documents and Settings\Administrator\デスクトップ\Local\Visual Studio 2008\Projects\ConsoleHosting\bin\Debug\bin
呼び出しているアセンブリ: (Unknown)
===
ログ: このバインドは default の読み込みコンテキストで開始します。
ログ: アプリケーション構成ファイルは見つかりませんでした。
ログ: C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\config\machine.config からのコンピュータ構成ファイルを使用します。
ログ: 現時点でポリシーは参照に適用されません (プライベート、カスタム、部分的、または場所ベースのアセンブリ バインド)。
ログ: 新しい URL file:///C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/Temporary ASP.NET Files/test/722d5666/4f0605d2/ConsoleHosting.DLL をダウンロードしようとしています。
ログ: 新しい URL file:///C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/Temporary ASP.NET Files/test/722d5666/4f0605d2/ConsoleHosting/ConsoleHosting.DLL をダウンロードしようとしています。
ログ: 新しい URL file:///C:/Documents and Settings/Administrator/デスクトップ/Local/Visual Studio 2008/Projects/ConsoleHosting/bin/Debug/bin/ConsoleHosting.DLLをダウンロードしようとしています。
ログ: 新しい URL file:///C:/Documents and Settings/Administrator/デスクトップ/Local/Visual Studio 2008/Projects/ConsoleHosting/bin/Debug/bin/ConsoleHosting/ConsoleHosting.DLL をダウンロードしようとしています。
ログ: 新しい URL file:///C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/Temporary ASP.NET Files/test/722d5666/4f0605d2/ConsoleHosting.EXE をダウンロードしようとしています。
ログ: 新しい URL file:///C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/Temporary ASP.NET Files/test/722d5666/4f0605d2/ConsoleHosting/ConsoleHosting.EXE をダウンロードしようとしています。
ログ: 新しい URL file:///C:/Documents and Settings/Administrator/デスクトップ/Local/Visual Studio 2008/Projects/ConsoleHosting/bin/Debug/bin/ConsoleHosting.EXEをダウンロードしようとしています。
ログ: 新しい URL file:///C:/Documents and Settings/Administrator/デスクトップ/Local/Visual Studio 2008/Projects/ConsoleHosting/bin/Debug/bin/ConsoleHosting/ConsoleHosting.EXE をダウンロードしようとしています。

という事で、よくわからない。