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 をダウンロードしようとしています。
という事で、よくわからない。