簡體   English   中英

Mono ASP.Net MVC EntityFramework異常

[英]Mono ASP.Net MVC EntityFramework Exception

我正在嘗試使用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)中測試它時,它可以正常運行,沒有任何錯誤。

系統信息

  • 視窗
  • Net Framework 4.0
  • ASP .Net MVC 4
  • 實體框架6
  • Mono 3.2.3(最新Windows版本)
  • nginx FastCGI與fastcgi-mono-server4

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 

此問題是由實體框架生成無效的XML引起的。 由於某些原因,Microsoft的XmlReader實施不遵循規范,而Mono則遵循。 幸運的是,對於大多數Mono用戶而言,該問題已於一年前在Mono中修復。 您可以在此處查看拉取請求:

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

不幸的是,這對您沒有幫助,因為最新版本的Mono for Windows已經使用了一年多。 您可以在以下位置更深入地了解該問題:

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

如果您想下拉實體框架源代碼並使用修補的代碼從頭開始構建,這也可能會有所幫助。 如果您可以找出正確的方法,則還可以手動編輯有問題的XML,使其有效並且不再導致Mono XML Reader引發異常。

當然,由於您已經在Windows上運行,因此只需使用IIS即可完全避免該問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM