2010-12-08 3 views
0

Est-il possible d'obtenir la méthode d'authentification d'un service de rapport SQL? J'ai une application pour déployer des RDL (trouvé here par ailleurs). Il a le code suivant (simplifié):Obtenir la méthode d'authentification d'un service de rapport SQL

ReportingService2005 ws = new ReportingService2005(); 
ws.Url = url; 
ws.Credentials = System.Net.CredentialCache.DefaultCredentials; 
ws.CreateReport(....) 
// and so on 

Mais si un serveur a besoin d'un nom d'utilisateur et mot de passe? Comme ce morceau de code sera utilisé sur plusieurs serveurs, j'aurais besoin d'une méthode pour demander la méthode d'authentification en premier. Si sa sécurité intégrée, je pourrais utiliser le code ci-dessus. Sinon, je pourrais demander à l'utilisateur un nom d'utilisateur et un mot de passe.

J'ai essayé avec ws.GetSystemProperties de demander la propriété EnableIntegratedSecurity, mais je reçois toujours une exception (407 authentification proxy requise). Je pourrais attraper l'exception, puis demander un nom d'utilisateur et un mot de passe, mais je préfère ne pas utiliser ce style d'exception.

+1

Quel est le problème dans le style d'exception? Mettre en cache la méthode d'authentification pour l'URL de ce serveur et cela n'arrivera qu'une seule fois. – Sam

+0

C'est vrai, mais s'il y a un moyen de le demander, ce serait bien. J'ai toujours appris que la logique utilisant des exceptions est mauvaise, ce à quoi je suis d'accord. S'il n'y a pas d'autre moyen, je vais l'utiliser cependant. – Peter

Répondre

0

Voyant que Noone est de répondre à cette plus, et ne sera probablement jamais, je vais supposer que je vais devoir utiliser l'exception à sens unique:

Si le code ci-dessus ne fonctionne pas, attraper l'exception et demander un nom d'utilisateur et un mot de passe. Puis appelez CreateReport avec ces informations d'identification. S'il y a une autre exception, manipulez-la avec élégance ...

Questions connexes