2010-04-23 5 views
0

Je souhaite ajouter un attribut personnalisé à un service Web asmx pour déterminer si la demande est valide en fonction de l'adresse IP du client. C'est une idée similaire à AuthorizeAttribute dans ASP.NET MVC.Attribut personnalisé .NET WebService

Y a-t-il un emplacement (par exemple un module HTTP)? Je peux mettre le code pour regarder l'attribut sur le service Web et décider si j'accepte ou non la demande?

Dans mon web.config, le gestionnaire pour asmx est ScriptHandlerFactory de la DLL System.Web.Extensions.

J'ai déjà implémenté la fonctionnalité avec un module HTTP et un fichier de configuration avec une liste d'URL autorisées, mais je préférerais me débarrasser du fichier de configuration et ajouter un attribut à la classe webservice.

Merci

+0

Cela ressemble à quelque chose t Vous pouvez aussi bien configurer directement dans IIS. –

Répondre

0

Vous pouvez ajouter attribut personnalisé par exemple

 
class ValidateIP 
{ 
    public ValidateIP(string ip) 
    { 
     if(!valid) 
     throw CustomerException(); 
    } 
} 

et tout ce dont vous avez besoin est d'ajouter l'attribut à votre classe
[ValidateIP (ip)]

Full example 

 
namespace Test 
{ 
    [TriLLi("11")] 
    class Program 
    { 
     static void Main(string[] args) 
     { 
     } 
    } 
    class TriLLi : Attribute 
    { 
     public TriLLi(string ip) 
     { 
      if(!ip.Equals("10")) 
       throw new Exception("You are not allowed to acces this method"); 
     } 
    } 
}

+0

Ce n'est pas ainsi que les attributs fonctionnent. Premièrement, la classe d'attribut doit s'étendre de 'Attribute'. Les attributs eux-mêmes sont généralement utilisés pour donner une sorte d'information à/sur la méthode - ne pas exécuter les méthodes de la façon que vous décrivez – Cocowalla

+0

J'ai oublié d'hériter de la classe d'attribut mais c'est comme ça que ça fonctionne ... ce. –

+0

Allez-y et essayez-le - la méthode ValidateIP ne s'exécutera pas, car ce n'est pas ainsi que les attributs fonctionnent! – Cocowalla

Questions connexes