2009-05-20 8 views
2

En particulier, je dois valider le certificat de sécurité X.509 entrant par rapport à une base de données pour autoriser l'accès à mon service Web. Pour ce faire, j'ai besoin d'obtenir une copie du certificat envoyé par le client. Je pense que je sais comment faire, si je peux comprendre comment accéder à l'objet http Request - un objet ASP.NET intrinsèque.Comment accéder aux objets ASP.NET intrinsèques à partir du code de service Web (C#)?

J'ai trouvé le code suivant qui décrit comment créer un composant qui va le faire, et comment le charger dans le code-behind de l'événement Page Load sur une page aspx. C'est génial, j'ai beaucoup appris de l'article, mais cela ne résout toujours pas mon problème - il n'y a pas de page web, donc pas d'événement de chargement de page.

COMMENT: accès ASP.NET objets à partir de composants .NET Intrinsic en utilisant Visual C# .NET http://support.microsoft.com/kb/810928

J'utilise C# et .NET 3.5, mais je ne suis pas en utilisant les fonctions de codage avancées de C# (lambdas, méthodes d'extension, etc.). Je n'ai pas encore pris le temps d'apprendre à les utiliser ...

Des conseils, des pointeurs, des exemples de code seraient très appréciés. Merci, Dave

+0

En aparté - vous pouvez le trouver beaucoup plus facile avec WCF –

+0

Bien sûr, mais - c'est une autre technologie que je n'ai pas eu le temps d'explorer. Ce que j'ai, c'est un service Web fonctionnel qui nécessite maintenant une authentification en deux parties. – DaveN59

Répondre

4

Si c'est un service Web ASMX (qui est, la "page"/point d'entrée est somefile.asmx, il doit être aussi simple que d'accéder l'objet de la demande à partir de là

. Exemple: Dans Visual Studio, créez une application de service Web et collez le code suivant dans service1.asmx.cs: (l'exemple ci-dessous renvoie les noms de tous les en-têtes figurant dans la requête Web)

contenu de service1.asmx.cs)

 

using System; 
using System.Web; 
using System.Web.Services; 

namespace WebServiceIntrinsicObjects 
{ 
    /// 
    /// Summary description for Service1 
    /// 
    [WebService(Namespace = "http://tempuri.org/")] 
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] 
    [System.ComponentModel.ToolboxItem(false)] 
    // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
    // [System.Web.Script.Services.ScriptService] 
    public class Service1 : System.Web.Services.WebService 
    { 

     [WebMethod] 
     public string HelloWorld() 
     { 
      // HERE'S THE LINE: just get the request object from HTTPContext.Current (a static that returns the current HTTP context) 
      string test = string.Join(",", HttpContext.Current.Request.Headers.AllKeys); 
      return test; 
     } 
    } 
} 
 
+0

Ça y est! Je savais que c'était simple, mais une heure ou deux de recherche sur le web a donné plus de confusion que de clarté. Merci! – DaveN59

+0

Content de pouvoir aider! – JMarsch

Questions connexes