Global.asax.cs Application_BeginRequest - 抛出 WebFaultException

Global.asax.cs Application_BeginRequest - Throw WebFaultException

WCF 有没有一种方法可以根据收到的请求类型检查某些逻辑?这可以在实际的服务端点代码中完成吗?

例如:

服务初始化后,我的服务收到 PUT 请求。在 myService.svc.cs 中,我希望逻辑看起来像这样:

if httpRequest.Type == PUT
{
    //Do Something
} 

这可能吗?我确信有比为每个 PUT 类型的操作合约添加逻辑更好的方法来处理请求。如果这个问题没有意义,我深表歉意,我是 WCF 的新手,正在努力学习。如果您需要澄清剂,请告诉我。

编辑:

这是 myService.svc.cs 目前的样子:

[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single, ConcurrencyMode = ConcurrencyMode.Multiple)]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public partial class MyService: IMyService
{
    public async Task<someObject> GetMethod1 () // Some GET Method
    { 
        doSomethingForGetRequests();
        //method implementation
    }

    public async Task<someObject> GetMethod2 () // Some GET Method
    { 
        doSomethingForGetRequests();
        //method implementation
    }

    public async Task<someObject> PutMethod1 () // Some PUTMethod
    { 
        doSomethingForPutRequests();
        //method implementation
    }

    doSomethingForPutRequests()
    {
       if(config.IsReadOnly)
       {
           throw new WebFaultException(HttpStatusCode.BadRequest);
       }
    }
}


我想知道是否有一个地方可以在请求到达这些方法之前将 doSomethingForGetRequest() 和 doSomethingForPutRequest() 放在中心位置,这样我就不必将这些方法添加到我的每个服务中方法。

global.asax.cs Application_BeginRequest() 是否适合这个逻辑?

也许消息检查器可以帮助您,它会在到达服务的每个请求上调用。

IDispatchMessageInspector 定义了启用自定义检查或修改服务应用程序中的入站和出站应用程序消息的方法。

您可以查看这些帖子:
Detect if action is a POST or GET method
Call the method automatically for each and every request in the WCF REST