1 Answer

This is a known issue with libraries which assume that System.Net.WebRequest.Create(Uri) always returns an instance of System.Net.HttpWebRequest:

var request = (HttpWebRequest)WebRequest.Create(uri);

However, after registering Rebex HttpRequestCreator, WebRequest.Create returns instances of Rebex.Net.HttpRequest which inherit from System.Net.WebRequest (not from System.Net.HttpWebRequest), which means the code above would fail.

Unfortunately, there is not much we can do about this. HttpRequest does not inherit from HttpWebRequest because it did not have a suitable constructor until .NET 4.5, and even that is not intended to actually be used by third-party code and produces an error on compilation. Using the protected serialization constructor doesn't seem quite right either because it has been made obsolete in .NET 2.0 already.

So the only reasonable solution at the moment is to modify third-party libraries to accept instances of System.Net.WebRequest as well (or modify them to use Rebex HttpRequest instead of .NET's HttpWebRequest). Unfortunately, in case of closed-source third-party libraries, that persuading the vendor to make the library compatible with System.Net.WebRequest might be a challenge.

Thanks for the reply. I have replace the HttpWebRequest and responses with the rebex one. It looks good, only the cookies and ClientCertificates are not supported or must be implemented different.
thx for help