2014-10-10 2 views
0

MVC 4 기술과 EntityFramework를 사용하여 ASP.Net을 기반으로하는 MVC 응용 프로그램을 실행하려고합니다.모노 ASP.Net MVC EntityFramework 예외

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 닷넷 MVC 4
  • EntityFramework 6
  • 모노 3.2.3 (최신 Windows 버전)
  • 의 nginx fastcgi-mono-server4가 포함 된 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 

답변

0

이 문제는 잘못된 XML을 생성하는 Entity Framework 때문에 발생합니다. 어떤 이유로 모노의 경우 XmlReader의 Microsoft 구현이 사양을 따르지 않습니다. 다행스럽게도 대부분의 Mono 사용자는 거의 1 년 전에 Mono로 패치되었습니다. 당신은 여기에 끌어 오기 요청을 볼 수 있습니다 : Windows 용 모노의 최신 버전이 오래된 년 이상이기 때문에 도움이되지 않는 불행하게도

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

. 당신이 엔티티 프레임 워크 소스를 아래로 당겨 패치 코드를 처음부터 구축하려는 경우에도 도움이 될 수 있습니다 어떤

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

: 당신은 더 많은 깊이 문제를 볼 수 있습니다. 적절한 방법을 찾아 낼 수 있다면 문제가되는 XML을 수동으로 편집하여 XML이 유효하고 더 이상 Mono XML Reader가 Exception을 throw하지 않게 할 수 있습니다.

물론 이미 Windows에서 실행 중이므로 IIS를 사용하여이 문제를 완전히 피할 수 있습니다.

+0

의견을 보내 주셔서 감사합니다. 좋은 하루 되세요! :-) –