2009-08-02 3 views
1

Ich erhalte die folgende Ausnahme beim Versuch, eine ASP.NET MVC-Anwendung mit mittlerem Vertrauen (unter Verwendung von Linq-to-SQL) auf Cassini 3.5.0.2 zu durchsuchen:Cassini-Ausnahmen bei mittlerer Vertrauensstellung ASP.NET MVC-Anwendung mit Linq-to-SQL

Could not load file or assembly 'Cassini, Version=3.5.0.2, Culture=neutral, PublicKeyToken=da0fefd60d522a7d' 
or one of its dependencies. Failed to grant permission to execute. (Exception from HRESULT: 0x80131418) 

mit einer inneren Ausnahme:

Execution permission cannot be acquired. 

Stack trace: 
at System.Security.SecurityManager.ResolvePolicy(Evidence evidence, PermissionSet reqdPset, PermissionSet optPset, 
    PermissionSet denyPset, PermissionSet& denied, Boolean checkExecutionPermission) 
at System.Security.SecurityManager.ResolvePolicy(Evidence evidence, PermissionSet reqdPset, PermissionSet optPset, 
    PermissionSet denyPset, PermissionSet& denied, Int32& securitySpecialFlags, Boolean checkExecutionPermission) 

Die gleiche Anwendung funktioniert auf IIS7 und auf interne VS2008 Webserver. Cassini arbeitet ohne Probleme mit ASP.NET MVC-Anwendungen, die nicht Linq-to-SQL verwenden.

Sowohl die ASP.NET MVC-Anwendung als auch das Linq-to-SQL-Repository-Projekt haben [assembly: System.Security.AllowPartiallyTrustedCallers] angewendet, um in mittlerer Vertrauenswürdigkeit zu arbeiten.

Hat jemand einen Hinweis auf dieses Problem?

EDIT

Die Ausnahme auf dieser Linie von Server.cs geworfen wird:

return appManager.CreateObject(appId, hostType, virtualPath, physicalPath, false); 

Antwort

4

[http://blogs.msdn.com/dmitryr/archive/2009/04/23/cassini-support-for-friendly-urls-routing.aspx#9855758]

Leider ist dies ein Nebeneffekt des Single-EXE Cassini. In der Worker-App-Domäne wird Cassini EXE als nicht vertrauenswürdiger Code behandelt.

Damit es in der mittleren Vertrauensstellung funktioniert, müssen Sie entweder mit der Definition des mittleren Vertrauens arbeiten (damit die von Ihrem Schlüssel signierten Assemblys volle Vertrauenswürdigkeit erhalten) oder CASSINI wie in früheren Versionen in GAC versetzen.

Danke,

Dmitry