向ASMX Web服务方法添加自定义属性

3

我有一些在asmx Web服务中的Web方法,目前看起来像这样:

[WebMethod(false, System.EnterpriseServices.TransactionOption.NotSupported)]
[ScriptMethod(ResponseFormat = ResponseFormat.Xml)]
public XElement GetSomeData(int dataId)
{
    // Do something.
}

我想要实现以下类似的功能:
[WebMethod(false, System.EnterpriseServices.TransactionOption.NotSupported)]
[ScriptMethod(ResponseFormat = ResponseFormat.Xml)]
[EnableSomeCustomSecurityCheck(true)]
public XElement GetSomeData(int dataId)
{
    // Do something.
}

在这里,“EnableSomeCustomSecurityCheck”告诉程序需要验证一个额外的令牌参数。我希望避免将这段代码复制到每个需要它的方法中:

[WebMethod(false, System.EnterpriseServices.TransactionOption.NotSupported)]
[ScriptMethod(ResponseFormat = ResponseFormat.Xml)]
public XElement GetSomeData(int dataId, string securityToken)
{
    SomeClass.CheckSecurityToken(securityToken);

    // Do something.
}

我有些不知道从哪里开始。有人能指点我如何在不失去asmx处理程序已有功能的情况下添加此功能吗?


在每个方法中添加一行代码和在每个方法中添加一个属性有什么区别?你试图实现什么样的好处? - pmartin
使用 WCF 会更容易些。 - John Saunders
1
@pmartin:因为我不相信它描述了方法本身需要如何工作,而是描述了框架应该如何反应。 - Ocelot20
1个回答

1

您可以在方法上放置属性,然后让Soap Extension检查该属性并相应地执行。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接