For background information, see part 1
For message inspection code, see part 2
When a cors request is identified we now have the CorsState object available on our operation level and can act upon this. To be able to skip calling the service method in case of a preflight request we need to implement two extension points in the operation level. Message formatting and operation invocation. Since the preflight request won't have the correct requests message format, we skip the deserializing process and the message using the normal deserializator can results in errors. So in that case we skip both serialization and deserialization.
https://github.com/dhvik/Wcf-cors-behavior/blob/master/CorsFormatter.cs
When it comes to the IOperationInvoker we just skip invoking the operation if we have a preflight request. All other requests uses the original invoker.
https://github.com/dhvik/Wcf-cors-behavior/blob/master/CorsInvoker.cs
In the part 4 we will see how we bind all these extension points together for our service.
No comments:
Post a Comment