我在C#ASP.NET Web应用程序中有几个WebMethods。我想改变所有这些行为来验证每个请求。想象一下下面的代码:
[WebMethod]
public static void DoSomething()
{
if (ValidateRequest())
{
HttpContext.Current.Response.StatusCode = 400;
// do some other stuff
return;
}
// rest of method
}
我当然注意到ValidateRequest()方法调用对于我的大部分WebMethod都是通用的。无论如何我可以连接它,以便所有WebMethods自动具有相同的行为?我可以在方法中添加第二个属性来实现此目的吗?
答案 0 :(得分:0)
在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()
}
}