2010-08-30 6 views
1

Je suis en train d'écrire un logiciel en C# et .NET pour gérer mon magasin, qui a un site où vous pouvez aller et recevoir une visite de vendeur. Ce site a un gestionnaire en coulisses, mais je veux que le logiciel fasse cela, supprimant efficacement le gestionnaire de navigateur et la première étape vers cet objectif est de permettre au logiciel d'accéder à un script PHP qui génère le fichier XML requis. Le problème est que le mécanisme de connexion, écrit en C# et utilisant web.config, n'autorise pas le logiciel à accéder audit script, qui se trouve dans un dossier protégé pour le gestionnaire de navigateur. J'ai déjà essayé d'utiliser l'objet HttpWebRequest, l'objet WebClient avec beaucoup de combinaisons de postes, d'informations d'identification, de flux et même un user-agent spécial pour tenter de me connecter, sans succès, je ne peux télécharger que la page de connexion.Comment passer l'authentification pour certains utilisateurs sur IIS7?

Voici le code que je utilise pour télécharger des données au moment (C'est mon dernier essai, en utilisant l'en-tête spécial):

string agent = "AGENT"; //Not real name, it's just confidential 
WebClient client = new WebClient(); 
client.Headers["HTTP_USER_AGENT"] = agent; 
client.DownloadFileCompleted += new AsyncCompletedEventHandler(DownloadFileCompletedEvtHdl); 
client.DownloadProgressChanged += new DownloadProgressChangedEventHandler(DownloadProgressChangedEvtHdl); 
if (!Directory.Exists(toSavePath)) 
{ 
    Directory.CreateDirectory(toSavePath); 
} 
if (File.Exists(toSavePath + filename)) 
{ 
    File.Delete(toSavePath + filename); 
} 
client.DownloadFileAsync(new Uri(url), toSavePath + filename); 

La page de connexion est assez simple, il assings seulement un événement de clic pour le bouton de connexion pour vérifier si l'utilisateur et le mot de passe sont les mêmes dans web.config. Si vrai, vous devez rediriger la page, sinon, erreur.

Alors, quelle est la meilleure méthode pour cela? Est-il possible de configurer IIS7 pour ignorer l'authentification sur cet agent d'utilisateur spécial ou un autre en-tête personnalisé? Ou je vais dans le mauvais sens?

Merci d'avance!

Répondre

0

Ce que vous voulez faire est d'écrire un HttpModule (ou utiliser global.asax) pour vous connecter à l'événement AuthorizeRequest.

À ce stade, vous pouvez vérifier ce que permet à votre utilisateur de contourner la connexion et vous pouvez ensuite définir

context.SkipAuthorization = true

http://csharpdotnetfreak.blogspot.com/2009/04/aspnet-bypass-forms-authentication.html

+0

essayé, n'a pas travaillé, voici la Code i utilisé: <% @ application Language = "C#" %> Des idéias? – Metraton

+0

Ma réponse est correcte, vous devez faire plus de recherches pour vous assurer que vous êtes correctement lié à l'événement. Je recommande également de ne jamais faire de code C# dans le balisage de la page. Il devrait toujours être dans un fichier CS. Si vous avez des problèmes pour le déclencher dans le global.asax, créez plutôt un HttpModule. –

+0

Géré pour que cela fonctionne, merci! = D – Metraton

Questions connexes