2009-05-26 12 views
0

J'ai une application Web dans .Net dans laquelle j'utilise les contrôles Ajax dans certaines pages. Ces pages fonctionnent dans localhost, mais lorsqu'elles sont hébergées, les pages dans lesquelles Ajax est inclus affichent une erreur de suivi.Impossible de charger le fichier ou l'assemblage

Erreur de serveur dans l'application '/ Allforkids'.

Exception de sécurité

Description: L'application a tenté d'effectuer une opération non autorisée par la politique de sécurité. Pour accorder à cette application l'autorisation requise, contactez votre administrateur système ou modifiez le niveau de confiance de l'application dans le fichier de configuration.

Détails de l'exception: System.Security.SecurityException: Demande d'autorisation de type 'System.Security.Permissions.FileIOPermission, mscorlib, Version = 2.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089' a échoué.

Erreur Source:

Une exception non gérée a été générée pendant l'exécution de la demande Web actuelle. Les informations concernant l'origine et l'emplacement de l'exception peuvent être identifiées à l'aide de la trace de la pile d'exceptions ci-dessous.

Stack Trace:

[SecurityException: Request for the permission of type 'System.Security.Permissions.FileIOPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed.] 
    System.Security.CodeAccessSecurityEngine.Check(Object demand, StackCrawlMark& stackMark, Boolean isPermSet) +0 
    System.Security.CodeAccessPermission.Demand() +58 
    System.Reflection.Assembly.VerifyCodeBaseDiscovery(String codeBase) +118 
    System.Reflection.Assembly.get_CodeBase() +35 
    System.Web.Handlers.ScriptResourceHandler.GetCodeBaseWithAssert(Assembly assembly) +31 
    System.Web.Handlers.ScriptResourceHandler.GetLastWriteTime(Assembly assembly) +36 
    System.Web.Handlers.ScriptResourceHandler.GetAssemblyInfoInternal(Assembly assembly) +61 
    System.Web.Handlers.ScriptResourceHandler.GetAssemblyInfo(Assembly assembly) +62 
    System.Web.Handlers.RuntimeScriptResourceHandler.System.Web.Handlers.IScriptResourceHandler.GetScriptResourceUrl(Assembly assembly, String resourceName, CultureInfo culture, Boolean zip, Boolean notifyScriptLoaded) +325 
    System.Web.Handlers.ScriptResourceHandler.GetScriptResourceUrl(Assembly assembly, String resourceName, CultureInfo culture, Boolean zip, Boolean notifyScriptLoaded) +33 
    System.Web.UI.ScriptManager.GetScriptResourceUrl(String resourceName, Assembly assembly) +89 
    System.Web.UI.ScriptRegistrationManager.RegisterClientScriptResource(Control control, Type type, String resourceName) +111 
    System.Web.UI.ScriptManager.RegisterClientScriptResource(Control control, Type type, String resourceName) +9 

Informations sur la version: Microsoft .NET Framework Version: 2.0.50727.3082; ASP.NET Version: 2.0.50727.3082

Quelqu'un peut-il donner une solution appropriée pour se débarrasser de cette erreur?

Répondre

1

Cela ressemble à quelque chose dont vous avez besoin d'évoquer avec votre hébergeur. Il semblerait de l'erreur qu'un paramètre de configuration dans le serveur d'hébergement interdit l'accès aux fichiers locaux.

Vous pouvez essayer d'ajouter ceci à votre web.config:

<system.web> 
    ... 
    <trust level="Medium" originUrl="" /> 
    ... 
</system.web> 

Mais, si le fournisseur d'hébergement a un paramètre dans le machine.config qui annule et remplace, il ne fera pas une différence. Ici plus information sur cela.

+0

J'ai eu un problème similaire avec mon fournisseur d'hébergement CrystalTech et ils ont fini par déplacer mon site vers un autre serveur. – ichiban

1

Il peut s'agir d'autorisations de sécurité sur votre dossier/fichiers. Ecrivez-vous des fichiers (comme une base de données Access)? Assurez-vous que votre compte machine ASP.Net (tel que PCName \ ASPNET) sur le serveur a accès au dossier.

0

Voici le code de la classe Assemblée:

private void VerifyCodeBaseDiscovery(String codeBase) 
    {     
     if ((codeBase != null) && 
      (String.Compare(codeBase, 0, s_localFilePrefix, 0, 5, true, CultureInfo.InvariantCulture) == 0)) { 
      System.Security.Util.URLString urlString = new System.Security.Util.URLString(codeBase); 
      new FileIOPermission(FileIOPermissionAccess.PathDiscovery, urlString.GetFileName()).Demand(); 
     } 
    } 

L'exception est levée sur la méthode demandant FileIOPermissionAccess.PathDiscovery au fichier contenant le script .Demand().

Je suppose que le processus de travail IIS ne dispose pas d'un accès READ/BROWSE au chemin contenant le script.

Si vous enregistrez vos propres scripts dans ScriptManager, vérifiez le chemin du fichier (règle générale, les scripts ne doivent pas être dans un dossier parent (par exemple, .. \ Scripts)).

Si cette exception concerne les ressources de script AJAX Extensions, il se peut qu'il y ait un problème avec l'installation des extensions AJAX. Vous devez demander à votre fournisseur d'hébergement de le vérifier.

PS. Y at-il plus à la trace de la pile? Il semble étrange que le premier appel de la pile soit "RegisterClientScriptResource".

Questions connexes