【问题标题】:Mono ASP.Net MVC EntityFramework ExceptionMono ASP.Net MVC EntityFramework 异常
【发布时间】:2014-10-10 14:10:06
【问题描述】:

我正在尝试使用 MVC 4 技术和 EntityFramework 运行基于 ASP.Net 的 MVC 应用程序。

public ActionResult Test()
{
    DbEntities entities = new DbEntities();
    ViewBag.AddressBookList = entities.ADDRESSBOOK.Take(100).ToList();
    return View();
}

问题是我在调用 /Home/Test 时遇到了这个异常。它一定是由 EntityFramework 引起的,因为整个应用程序都可以正常工作,除非我尝试使用 EntityFramework 检索数据库的数据。当我在 Visual Studio (IIS) 中对其进行测试时,它可以正常运行,没有任何错误。

系统信息

  • 窗口
  • 网络框架 4.0
  • ASP .Net MVC 4
  • 实体框架 6
  • Mono 3.2.3(最新 Windows 版本)
  • 带有 fastcgi-mono-server4 的 nginx FastCGI

System.UriFormatException

无效的 URI:无法确定 URI 的格式: System.Data.Resources.SqlClient.SqlProviderServices.ProviderManifest.xml

堆栈跟踪

at System.Uri..ctor (System.String uriString, Boolean dontEscape) [0x00000] in <filename unknown>:0
at System.Uri..ctor (System.String uriString) [0x00000] in <filename unknown>:0
at Mono.Xml.Schema.XmlSchemaValidatingReader..ctor (System.Xml.XmlReader reader, System.Xml.XmlReaderSettings settings) [0x00000] in <filename unknown>:0
at System.Xml.XmlReader.CreateValidatingXmlReader (System.Xml.XmlReader reader, System.Xml.XmlReaderSettings settings) [0x00000] in <filename unknown>:0
at System.Xml.XmlReader.CreateFilteredXmlReader (System.Xml.XmlReader reader, System.Xml.XmlReaderSettings settings) [0x00000] in <filename unknown>:0
at System.Xml.XmlReader.Create (System.Xml.XmlReader reader, System.Xml.XmlReaderSettings settings) [0x00000] in <filename unknown>:0
at System.Data.Entity.Core.SchemaObjectModel.Schema.Parse (System.Xml.XmlReader sourceReader, System.String sourceLocation) [0x00000] in <filename unknown>:0
at System.Data.Entity.Core.SchemaObjectModel.SchemaManager.ParseAndValidate (IEnumerable`1 xmlReaders, IEnumerable`1 sourceFilePaths, SchemaDataModelOption dataModel, System.Data.Entity.Core.SchemaObjectModel.AttributeValueNotification providerNotification, System.Data.Entity.Core.SchemaObjectModel.AttributeValueNotification providerManifestTokenNotification, System.Data.Entity.Core.SchemaObjectModel.ProviderManifestNeeded providerManifestNeeded, IList`1& schemaCollection) [0x00000] in <filename unknown>:0
at System.Data.Entity.Core.SchemaObjectModel.SchemaManager.ParseAndValidate (IEnumerable`1 xmlReaders, IEnumerable`1 sourceFilePaths, SchemaDataModelOption dataModel, System.Data.Entity.Core.Common.DbProviderManifest providerManifest, IList`1& schemaCollection) [0x00000] in <filename unknown>:0
at System.Data.Entity.Core.SchemaObjectModel.SchemaManager.LoadProviderManifest (System.Xml.XmlReader xmlReader, System.String location, Boolean checkForSystemNamespace, System.Data.Entity.Core.SchemaObjectModel.Schema& schema) [0x00000] in <filename unknown>:0
at System.Data.Entity.Core.Common.DbXmlEnabledProviderManifest.Load (System.Xml.XmlReader reader) [0x00000] in <filename unknown>:0
at System.Data.Entity.Core.Common.DbXmlEnabledProviderManifest..ctor (System.Xml.XmlReader reader) [0x00000] in <filename unknown>:0
at System.Data.Entity.SqlServer.SqlProviderManifest..ctor (System.String manifestToken) [0x00000] in <filename unknown>:0
at System.Data.Entity.SqlServer.SqlProviderServices.GetDbProviderManifest (System.String versionHint) [0x00000] in <filename unknown>:0
at System.Data.Entity.Core.Common.DbProviderServices.GetProviderManifest (System.String manifestToken) [0x00000] in <filename unknown>:0 

【问题讨论】:

    标签: c# asp.net asp.net-mvc entity-framework mono


    【解决方案1】:

    此问题是由实体框架生成无效 XML 引起的。出于某种原因,Microsoft 的 XmlReader 实现不遵循规范,而 Mono 则遵循规范。对于大多数 Mono 用户来说幸运的是,这个问题在将近一年前在 Mono 中得到了修复。您可以在此处查看拉取请求:

    https://github.com/mono/mono/pull/756

    很遗憾,这对您没有帮助,因为最新版本的 Mono for Windows 已经有一年多的历史了。您可以在以下位置更深入地查看该问题:

    https://entityframework.codeplex.com/workitem/1632

    如果您想下载 Entity Framework 源代码并使用已修补的代码从头开始构建,这也可能会有所帮助。如果您能找到正确的方法,您还可以手动编辑有问题的 XML,使其有效并且不再导致 Mono XML Reader 抛出异常。

    当然,由于您已经在 Windows 上运行,您可以简单地使用 IIS 并完全避免该问题。

    【讨论】:

    • 非常感谢您的评论,祝您今天愉快! :-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-06
    • 2011-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多