微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在Linux上使用xsp运行ASP.NET应用程序时缺less方法错误

我有MVC和Razor标记网站的ASP.NET,我想在我的Linux VPS上运行它。

我有单声道3.2.8和xsp4 3.0.0.0版本,都从Ubuntu存储库(安装使用apt-get install mono-complete mono-xsp4 )

当我将我的网站上传到服务器并在网站文件夹中运行xsp4时,它会启动并打印出正在侦听端口8080.但是,当我使用Web浏览器导航到我的网站时,它显示运行时错误,xsp4将此输出到控制台

Missing method System.Web.HttpApplication::RegisterModule(Type) in assembly /usr/lib/mono/gac/System.Web/4.0.0.0__b03f5f7f11d50a3a/System.Web.dll,referenced in assembly /tmp/root-temp-aspnet-0/55726984/ assembly/shadow/df4b0596/52105b83_8d5b5e15_00000001/Microsoft.Owin.Host.SystemWeb.dll Missing method RegisterallAreas in assembly /tmp/root-temp-aspnet- 0/55726984/assembly/shadow/dc5a60b8/51013ead_8d5b5e15_00000001/<website_name>.dll,type System.Web.Mvc.AreaRegistration

这是一个新的Ubuntu 14.04安装。 我正在使用Visual Studio 2013在Windows上开发我的网站。任何想法如何解决这些错误

我们可以从共享path运行batch file(.bat)吗?

Mono的VB.Net支持是否准备好用于生产站点

在.NET 2.0中发送电子邮件时出现“现有连接被强制closures”的错误

/ bin浏览错误404

Linux或OS X中的Web API 2.1

如何将VB.NET Web应用程序发布到我的Azure Windows 2012 R2 VM

一个有经验的Asp.net程序员应该知道什么时候跳进PHP

开发一个数据parsing器,不确定从哪里开始?

如何使用OWIN / Katana来保护ASP.NET MVC Web Api?

如何覆盖Response.Redirect,以防止端口随它而来

关于这个问题的上游错误报告位于这里 。

建议的解决方法,直到错误被修复,并且实现的方法是使用Microsoft.Web.Infrastructure.DynamicmoduleeHelper.DynamicmoduleeUtility.Registermodulee而不是HttpApplication.Registermodulee 。

这里的问题描述了一种解决方法,即将HttpApplication.Registermodulee更改为OWIN中的PreApplicationStart.cs中的Microsoft.Web.Infrastructure.DynamicmoduleeHelper.DynamicmoduleeUtility.Registermodulee (之前的主服务器已经具有相关的IFDEF for NET 4.0,但它已被还原出于某种原因),或者包含它们指定的DLL,或者手动在web.config注册该模块。

不需要对OWIN进行任何代码更改的替代方法是在Mono中实现缺少的方法,并修复该错误,然后将修复返回到您的Mono版本。

这不是一个完整的答案,但也许我可以帮助别人进一步得到一点。

在Mono的dev分支(当时是v3.99)上填充了一些不相关的空白(比如AppendTrailingBackslash(),GetBufferlessInputStream()和其他一些函数)之后,我能够得到一个MVC5应用程序来运行OK在Ubuntu上使用XSP4。

然后我尝试使用OWIN和SignalR的单声道版本。

我做了上面提到的Appleman1234,在HttpApplication.cs中实现Registermodulee()来做什么Microsoft.Web.Infrastructure.DynamicmoduleeHelper.DynamicmoduleeUtility.Registermodulee()。 这似乎工作,并注入模块的字符串到system.web / httpmodulees部分没有错误

这与在我的system.web中手动指定OwinHttpHandler相结合:

<system.web> <compilation debug="true" targetFramework="4.5" /> <httpRuntime targetFramework="4.5" /> <customErrors mode="Off" /> <httpHandlers> <add verb="*" path="*" type="Microsoft.Owin.Host.SystemWeb.OwinHttpHandler,Microsoft.Owin.Host.SystemWeb" /> </httpHandlers> </system.web>

并在我的启动配置()中调用认的MapSignalR():

var appBuilder = app.MapSignalR();

并在黑客的一些SignalR代码(我得到一些ReadOnlyException在一个NameValueCollection,因为它试图从请求标题删除接受编码…我想我会到那以后),我想我知道了初始化到我至少可以浏览到/ signalr的位置,并返回一些有意义的错误(缺少connectionId,未知协议等)。 我没有去实际测试SignalR功能,但是我正在通过使用一个单独的客户端程序来完成这个功能

我主持这个使用xsp4 /单声道4.5。

然而,在这样做的时候,我认为我对其他的处理程序/管道进行了破坏,因为我无法真正浏览网站中的其他任何东西(样式表,脚本等),因为我得到了404

另请注意:

(1) HttpRuntime.UsingIntegratedPipeline在XSP4的上下文中返回false。

(2)我不得不注释掉HttpApplication.cs/AsyncInvoker::Invoke()异常,最初抛出这个异常:

throw new Exception("This is just a dummy");

鉴于此,Mono中是否还没有足够的异步和其他支持来使OWIN / SignalR正常工作? 我在想,既然UsingIntegratedPipeline返回false,这是XSP4的禁止

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐