使用ApplicationHost.CreateApplicationHost()创建Asp.Net帖子,
发布时间:2020-12-16 09:58:16 所属栏目:asp.Net 来源:网络整理
导读:我正在尝试使用 CreateApplicationHost为一个简单的Web服务器创建一个Asp.Net应用程序主机,但是当它尝试创建我的编组对象的实例时,我得到一个System.IO.FileNotFoundException: host = (MyMarshaller)ApplicationHost.CreateApplicationHost((MyMarshaller)
我正在尝试使用
CreateApplicationHost为一个简单的Web服务器创建一个Asp.Net应用程序主机,但是当它尝试创建我的编组对象的实例时,我得到一个System.IO.FileNotFoundException:
host = (MyMarshaller)ApplicationHost.CreateApplicationHost((MyMarshaller),virtualDir,physicalDir); 我相信这个错误是因为它无法找到包含类MyMarshaller的程序集 – 如果我把这个程序集放在physicalDir的bin目录中,那么一切正常,但是我不想这样做(我也不想将我的程序集放在GAC中). 有什么方法可以控制CreateApplicationHost查找程序集的位置吗? (注意,MyMarshaller类与上面的代码行在同一个程序集中进行了对比) 解决方法
简短的回答是不可能做到这一点,但
Cassini消息来源揭示了另一种解决方案.
更新 以上链接不再有效,但CodePlex上的CassiniDev project似乎非常接近(可能是衍生作品)并包含相同的解决方案. 解决方案是避免使用CreateApplicationHost并“自己动手” – 在这种情况下使用反射来创建内部“BuildManagerHost”类型的实例并调用“RegisterAssembly”,就像这样 /// <remarks> /// This is Dmitry's hack to enable running outside of GAC. /// There are some errors being thrown when running in proc /// </remarks> private object CreateWorkerAppDomainWithHost(string virtualPath,string physicalPath,Type hostType,int port) { // create BuildManagerHost in the worker app domain //ApplicationManager appManager = ApplicationManager.GetApplicationManager(); Type buildManagerHostType = typeof(HttpRuntime).Assembly.GetType("System.Web.Compilation.BuildManagerHost"); IRegisteredObject buildManagerHost = ApplicationManager.CreateObject(_appId,buildManagerHostType,virtualPath,physicalPath,false); // call BuildManagerHost.RegisterAssembly to make Host type loadable in the worker app domain buildManagerHostType.InvokeMember("RegisterAssembly",BindingFlags.Instance | BindingFlags.InvokeMethod | BindingFlags.NonPublic,null,buildManagerHost,new object[] { hostType.Assembly.FullName,hostType.Assembly.Location }); // create Host in the worker app domain // FIXME: getting FileLoadException Could not load file or assembly 'WebDev.WebServer20,Version=4.0.1.6,Culture=neutral,PublicKeyToken=f7f6e0b4240c7c27' or one of its dependencies. Failed to grant permission to execute. (Exception from HRESULT: 0x80131418) // when running dnoa 3.4 samples - webdev is registering trust somewhere that we are not return ApplicationManager.CreateObject(_appId,hostType,false); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc – 没有CreateMap的简单转换时的Automapper错误
- 什么时候在asp.net WebService中调用Application_End
- Global.asax中的ASP.NET MVC Application_Error处理程序
- 在ASP.NET中下载文件的实现代码
- Asp.net 通用万级数据分页代码[修正下载地址]
- asp.net-mvc – ASP.NET MVC请求处理序列
- asp.net-mvc – 在两个不同的强类型视图中渲染一个局部视图
- 在ASP.NET MVC中为复杂数据验证放置数据管理规则的位置?
- asp.net – HttpPostedFileBase.SaveAs方法问题
- asp.net – 在MVC中控制SQL注入
推荐文章
站长推荐
- asp.net – AWS SNSClient发布请求的超时错误
- asp.net – 进程服务应用程序池“经典.NET AppPo
- asp.net – 太多的Cookie OpenIdConnect.nonce导
- asp.net – iTextSharp可以栅格化/导出为JPEG或其
- asp.net – ‘没有重载的方法’ToString’采取’
- .net – asp:GridView文本框始终返回空值
- asp.net – C#可选对象操作MVC参数
- asp.net – 我应该有多少DBContext
- asp.net-mvc-3 – 当两个网格位于同一页面时进行
- asp.net-mvc – 以编程方式隐藏全局菜单项的Razo
热点阅读