ASP.NET重写Web方法



我在C#ASP中有几个WebMethod。NET web应用程序。我想改变他们所有人的行为来验证每个请求。想象一下下面的代码:

[WebMethod]
public static void DoSomething() 
{
    if (ValidateRequest())
    {
        HttpContext.Current.Response.StatusCode = 400;
        // do some other stuff
        return;
    }
    // rest of method
}

当然,我注意到ValidateRequest()方法调用在我的大部分WebMethods中是常见的。我有没有办法把它连接起来,让所有的WebMethod都自动具有相同的行为?我可以为该方法添加第二个属性来实现这一点吗?

在Global.asax文件的Begin request中添加验证请求。

现在,您需要某种代码来检查是否应该验证请求。

我不确定如何在网络表单中做到这一点。。。但是,我要做的是:

使用RequestPath属性(如果方法和类名与您的服务URL匹配,则获取它们)

HttpContext.Current.Request.Path;

然后,我将创建一个方法属性,也许可以使用反射来查看是否应该验证请求。(见下面的链接)

http://msdn.microsoft.com/en-us/library/z919e8tw.aspx

从这一点开始,您只需要用"[Validate]"属性标记您的方法,一切都应该正常工作。

 public class Global : HttpApplication
    {
        protected void Application_BeginRequest(object sender, EventArgs e)
        {
          if(ShouldValidate() && !IsValidRequest()){
              //add your custom error status here perhaps
              Response.StatusCode = 400
              Response.StatusDescription = "Something Bad happened"
              HttpContext.Current.Response.End()
          }
        }

最新更新