I have a fatal error thrown from my c# code where I have customized forms web browser to support browser autocomplete functionality. The exception gets thrown only on .net 4.0 framework, when we try to obtain the WebBrowserSite COM interfaces.
error thrown at _baseIDocHostUiHandler = (WebBrowserNativeMethods.IDocHostUIHandler) Marshal.GetTypedObjectForIUnknown(_unkInnerAggregated, typeof (WebBrowserNativeMethods.IDocHostUIHandler));
Code:
// constructor
public AutoCompleteWebBrowserSite(WebBrowser host) :
base(host)
{
// get the CCW object for this
_unkOuter = Marshal.GetIUnknownForObject(this);
Marshal.AddRef(_unkOuter);
try
{
// aggregate the CCW object with the helper Inner object
_inner = new AutoCompleteHelper(this);
_unkInnerAggregated = Marshal.CreateAggregatedObject(_unkOuter, _inner);
// obtain private WebBrowserSite COM interfaces
try
{
_baseIDocHostUiHandler = (WebBrowserNativeMethods.IDocHostUIHandler) Marshal.GetTypedObjectForIUnknown(_unkInnerAggregated, typeof (WebBrowserNativeMethods.IDocHostUIHandler));
}
catch(Exception)
}
finally
{
Marshal.Release(_unkOuter);
}
}
Any reason and solution for this exception? This does not happen on machines with framework 4.5.
Basically need to remove all the code from constructor (mainly _baseIDocHostUiHandler)
And then in the WebBrowserSite implementation, try returning the default implementation value for each of the methods.
similarly for other methods.