Pb d'accès à une base depuis le réseau mais pas depuis un poste local

Résolu
neo557 Messages postés 34 Date d'inscription mardi 13 janvier 2004 Statut Membre Dernière intervention 30 août 2006 - 26 avril 2006 à 15:55
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 - 28 avril 2006 à 23:41
Bonjour,

J'ai un problème avec une appli qui accède à une base de données.

Lorsque je lance mon exe depuis mon poste local ou depuis un autre poste quelconque (pourvu que l'exe se trouve dans C:\qqchose), je n'ai pas de soucis. Mais je tente de lancer l'exe depuis le réseau (sur un lecteur réseau par exemple) l'application me renvoi une erreur :




Request for the permission of type 'System.Data.SqlClient.SqlClientPermission, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed.




J'ai tenté de mettre les lignes suivantes sans succès :






public

Form1()




{



         InitializeComponent();




         System.Data.SqlClient.


SqlClientPermission pSql = newSqlClientPermission(System.Security.Permissions.PermissionState
.Unrestricted);




         pSql.Assert();


}

Est-ce que c'est déjà arrivé à qqun ? pouvez-vous m'aider svp...




Merci d'avance

Nelson

7 réponses

MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
26 avril 2006 à 17:21
Non, c'est sur ton poste que tu dois faire la manip
En gros, avec l'utilitaire de configuration fourni avec le framework, tu donne le droit fulltrust aux les assemblys qui se trouvent dans le dossier sur ton partage reseau.

En francais ca donne

<hr>Pour accorder une confiance totale à un assembly ou à un dossier situé sur un ordinateur réseau ou un lecteur mappé

Remarque   Vous devez être administrateur pour accorder une confiance totale à un assembly ou à un dossier situé sur un ordinateur réseau, et le niveau de confiance doit être accordé au niveau de l'ordinateur plutôt qu'au niveau de l'utilisateur.<ol type= "1"><li>Dans le Panneau de configuration , ouvrez Outils d'administration.
</li><li>Exécutez Configuration Microsoft .NET Framework 1.1.
Remarque   Il peut y avoir plusieurs outils similaires dont le nom contient Microsoft .NET Framework. Vérifiez que l'outil de configuration que vous utilisez correspond à votre version du runtime.</li><li>Dans l'arborescence affichée sur le côté gauche, développez les nœuds Stratégie de sécurité du runtime, Ordinateur, Groupes de codes, puis All_Code.
</li><li>Cliquez avec le bouton droit sur LocalIntranet_Zone sous All_Code, puis cliquez sur Nouveau.
Cela suppose que le serveur que vous ciblez se trouve dans la zone Intranet local. S'il a été ajouté à la zone Sites de confiance dans Internet Explorer, cliquez plutôt avec le bouton droit sur Trusted_Zone. Si l'assembly se trouve sur un lecteur mappé, vous devez utiliser LocalIntranet_Zone.

</li><li>Entrez un nom et une description qui vous aideront à identifier le projet. Cliquez sur Suivant.
</li><li>Sélectionnez URL dans la liste. Tapez le chemin d'accès complet de l'assembly, ou le chemin d'accès au dossier Bin du projet suivi d'un astérisque (par exemple,
\\ServerName\FolderName\ExcelProject1.dll
ou
http://ServerName/FolderName/ExcelProject1_bin/*
). Cliquez sur Suivant.
Remarque   Si vous tapez le chemin d'accès du dossier Bin, une confiance totale sera accordée à tous les assemblys contenus dans ce dossier et dans ses sous-dossiers sur votre ordinateur. Si vous ne savez pas avec certitude si ces dossiers sont sécurisés, des autorisations aussi larges peuvent constituer un risque en matière de sécurité.</li><li>Sélectionnez Utiliser un jeu d'autorisations existant, puis FullTrust dans la liste. Cliquez sur Suivant.
</li><li>Cliquez sur Terminer. </li></ol>Utilisation de l'outil Stratégie de sécurité d'accès au code (Caspol.exe)
Vous pouvez également accorder une confiance totale à un dossier à partir d'une invite de commandes en utilisant l'Outil de ligne de commande Stratégie de sécurité d'accès au code (Caspol.exe).

Vous pouvez accorder un niveau de confiance à un dossier sur votre ordinateur local au niveau de l'utilisateur avec des autorisations d'utilisateur normales. Pour accorder un niveau de confiance à un emplacement réseau, vous devez disposer de privilèges d'administrateur et modifier la stratégie de sécurité au niveau de l'ordinateur.

Conseil   Tapez les commandes manuellement. Le fait de copier et coller les commandes dans l'invite de commandes peut entraîner des erreurs Option inconnue.Pour accorder une confiance totale à un dossier local

<li>Tapez la commande suivante dans l'invite de commandes Visual Studio .NET : caspol -u -ag All_Code -url
C:\<FolderName>\<FolderName>\* FullTrust -n "<Name>" -d "<Description>"

</li>Pour accorder une confiance totale à un dossier réseau

<li>Tapez la commande suivante dans l'invite de commandes Visual Studio .NET : caspol -m -ag LocalIntranet_Zone -url
\\<ServerName>\<FolderName>\* FullTrust -n "<Name>" -d "<Description>"

</li><hr>

Mx
MVP C# 
3
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
26 avril 2006 à 16:05
Salut,

Regarde ici si cela peut t'aider

Mx
MVP C# 
0
neo557 Messages postés 34 Date d'inscription mardi 13 janvier 2004 Statut Membre Dernière intervention 30 août 2006 1
26 avril 2006 à 17:03
Je ne suis pas un pro en anglais, mais dans le lien que tu m'a donné ils parlent de donner des droits à un répertoire (je ne comprend pas le lien avec Office dont il parle), or je n'ai pas vraiment envie de modifier la sécurité sur les serveurs de ma boîte. Si je n'ai pas d'autre solution je le ferai, mais si il existe un moyen de le faire juste en modifiant un peu l'appli jsuis preneur...




Nelson
0
neo557 Messages postés 34 Date d'inscription mardi 13 janvier 2004 Statut Membre Dernière intervention 30 août 2006 1
26 avril 2006 à 17:12
J'ai entendu parlé d'une clef de registre qu'il faudrait activé... ça vous dit qqchose ?

Nelson
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
neo557 Messages postés 34 Date d'inscription mardi 13 janvier 2004 Statut Membre Dernière intervention 30 août 2006 1
27 avril 2006 à 11:17
Oh honte à moi, tu avais raison, cette commande fonctionne chez moi :

caspol -m -ag LocalIntranet_Zone -url \\<ServerName>\<FolderName>\* FullTrust -n "<Name>" -d "<Description>"

Bon c'est quand même dommage que ce soit qqchose qu'il faut déployer sur tout les postes, mais la c'est de la faut à Microsoft.


Merci beaucoup vraiment tu m'a beaucoup aidé.

Nelson
0
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
27 avril 2006 à 17:53
Oui enfin bon, quand ce n'est pas assez sécurisé, c'est la faute a Microsoft, et quand Microsoft met la sécurité en avant, c'est la faute a Microsoft...

Moi je trouve que c'est très bien comme cà ^^

Mx
MVP C# 
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
28 avril 2006 à 23:41
Par définition un élément distant est moins sûr qu'un élément local.
Et moi ça me ferait mal qu'un élément potentiellement non sûr puisse accèder / corrompre les données (potentiellement confidentielles / critiques) de ma base.
Donc je dirais plutôt : vive les zones à confiance limitée :-)

/*
coq
MVP Visual C#
*/
0
Rejoignez-nous