ASP.NET Linux部署 Mono 遇到的问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ASP.NET Linux部署 Mono 遇到的问题相关的知识,希望对你有一定的参考价值。
系统:Centos7
虚拟机:VM
我按照这样导入:rpm --import "http://keyserver.ubuntu.com/pks/lookup?op=get&search=0x3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF"
执行 yum-config-manager --add-repo http://download.mono-project.com/repo/centos/
错误提示:
我不知道这个这个是什么错误提示 我并没有管。
按着网上的教程 我继续执行:yum -y install yum-utils和rpm -qa | grep yum
但是当我执行第二命令的时候(我也不知道是错误的还是正确的)
就这样 不知道是对的 还是错的。
紧着再执行:yum –y install mono-complete.x86_64
就是这样子的 根本没有安装mono
希望哪位大神能够指点一下我,或者有一个很好的 例子也可以。事情很急
无法在 Mono 3 上的 xsp 上运行 asp.net 4.5 应用程序
【中文标题】无法在 Mono 3 上的 xsp 上运行 asp.net 4.5 应用程序【英文标题】:Unable to run an asp.net 4.5 app on xsp on Mono 3 【发布时间】:2012-12-24 01:33:01 【问题描述】:我已经从源代码(tarball)构建了 Mono 3.0.2,并从最新的 tarball 和 Github 上的最新版本构建了 XSP,但是我无法使用 .net 4.5 运行相对简单的 asp.net 应用程序,因为它认为 web.config 中的 'targetFramework="4.5"' 无效。构建应用程序并运行控制台 .net 4.5 应用程序工作正常。
这是有问题的 web.config:
<?xml version="1.0"?>
<!--
For more information on how to configure your ASP.NET application, please visit
http://go.microsoft.com/fwlink/?LinkId=169433
-->
<configuration>
<appSettings>
<add key="owin:HandleAllRequests" value="true" />
<add key="owin:SetCurrentDirectory" value="true" />
</appSettings>
<system.web>
<compilation debug="true" targetFramework="4.5" />
<httpRuntime targetFramework="4.5" />
</system.web>
</configuration>
这是 xsp4 抛出的异常:
An exception has occurred while generating HttpException page:
System.NullReferenceException: Object reference not set to an instance of an object
at System.Web.Util.HttpEncoder.GetCustomEncoderFromConfig () [0x00000] in <filename unknown>:0
at System.Lazy`1[System.Web.Util.HttpEncoder].InitValue () [0x00000] in <filename unknown>:0
The actual exception which was being reported was:
System.Web.HttpException: Initial exception ---> System.Configuration.ConfigurationErrorsException: Error deserializing configuration section httpRuntime: Unrecognized attribute 'targetFramework'. (/home/srobbins/Projects/nancykatana/NancyKatana/Web.config line
1)
at System.Configuration.ConfigurationSection.DeserializeSection (System.Xml.XmlReader reader) [0x00000] in <filename unknown>:0
at System.Configuration.Configuration.GetSectionInstance (System.Configuration.SectionInfo config, Boolean createDefaultInstance) [0x00000] in <filename unknown>:0
at System.Configuration.ConfigurationSectionCollection.get_Item (System.String name) [0x00000] in <filename unknown>:0
at System.Configuration.Configuration.GetSection (System.String path) [0x00000] in <filename unknown>:0
at System.Web.Configuration.WebConfigurationManager.GetSection (System.String sectionName, System.String path, System.Web.HttpContext context) [0x00000] in <filename unknown>:0
at System.Web.Configuration.WebConfigurationManager.GetSection (System.String sectionName) [0x00000] in <filename unknown>:0
at System.Web.HttpRuntime..cctor () [0x00000] in <filename unknown>:0
--- End of inner exception stack trace ---
还有一些关于版本/配置的信息:
xsp-2.11
Build Environment
Install prefix: /usr/local
Datadir: /usr/local/share
Libdir: /usr/local/lib
Build documentation: yes
Mono 2.0 compiler: /usr/local/bin/gmcs
Mono 4.0 compiler: /usr/local/bin/dmcs
Target frameworks: .NET 2.0, .NET 4.0
Build SQLite samples: yes
srobbins@ubuntu-vm:~/Downloads/xsp$ /usr/local/bin/mono --version
Mono JIT compiler version 3.0.2 (tarball Tue Jan 8 08:23:06 GMT 2013)
Copyright (C) 2002-2012 Novell, Inc, Xamarin Inc and Contributors. www.mono-project.com
TLS: __thread
SIGSEGV: altstack
Notifications: epoll
Architecture: x86
Disabled: none
Misc: softdebug
LLVM: supported, not enabled.
GC: Included Boehm (with typed GC and Parallel Mark)
srobbins@ubuntu-vm:~/Downloads/xsp$
如果我从 web.config 中删除 targetFramework 元素,那么错误就会消失,但我只会得到 404,因此没有一个 http 模块被连接。
有什么想法吗?有人告诉我 xsp4 应该可以正常工作,但据我所知,它似乎根本没有更新到可以处理 4.5。
【问题讨论】:
“从最新的 tarball 和 Github 上的最新版本构建 XSP”是什么意思?你要么从 tarball 构建,要么从 github 构建 并且 AFAIK 压缩包已经很老了,所以你应该从 github 构建 很简单,我都建了,都试过了,都出现了同样的问题。 在尝试github之前有没有正确卸载之前的? 我首先尝试了 github,并确保我对所有内容都进行了核对。 【参考方案1】:尝试编辑该文件:
vi /opt/mono/bin/xsp4
(您的位置可能不同,因为您自己编译了它,所以您应该知道文件存储在哪里)
在里面换行:
exec /opt/mono/bin/mono $MONO_OPTIONS "/opt/mono/lib/mono/4.0/xsp4.exe" "$@"
有了这个:
exec /opt/mono/bin/mono $MONO_OPTIONS "/opt/mono/lib/mono/4.5/xsp4.exe" "$@"
然后复制可执行文件:
cp /opt/mono/lib/mono/4.0/xsp4.exe /opt/mono/lib/mono/4.5/
我希望 Mono 的人在未来让它更加流畅,所以我们不需要手动执行此操作,但对我来说,这种手动解决方法有效!
同样,我在 CentOS 下完成了此操作,因此在 Ubuntu 上可能会有所不同。
【讨论】:
【参考方案2】:我在 MVC 4 和 Mono 3 中遇到了同样的问题。最奇怪的是,这个错误突然出现了。还原我的更改没有帮助。最终我最终删除了我的解决方案文件夹并签出了一个新版本。那一定已经删除了一些创建的文件。之后,一切都像以前一样工作。
【讨论】:
以上是关于ASP.NET Linux部署 Mono 遇到的问题的主要内容,如果未能解决你的问题,请参考以下文章
在 Linux 上部署 ASP.NET MVC:最佳实践、工具和惊喜
连接到 MS Access 的 Mono 和 ASP.NET Web 应用程序