私が現在試している非常識な回避策HttpCapabilitiesDefaultProvider
は、 static を返す独自のものを注入することですHttpBrowserCapabilities
。秘訣は、常に同じ機能オブジェクトを返すことです。したがって、base.GetBrowserCapabilities
IE9 を使用しながら呼び出すことで、Newtonsoft を使用してシリアライゼーションを作成し、この文字列をソースに保存することで、ブラウザーに関係なく IE9 のような機能オブジェクトを構築できます。要求を開始しました。
public class CustomerHttpCapabilitiesProvider : HttpCapabilitiesDefaultProvider
{
private const string m_IE9Definition = "{\r\n \"$type\": \"System.Web.Mobile.MobileCapabilities, System.Web.Mobile\",\r\n \"UseOptimizedCacheKey\":..... ";
private readonly static Lazy<MobileCapabilities> m_Capabilities = new Lazy<MobileCapabilities>(() => JsonConvert.DeserializeObject<MobileCapabilities>(m_IE9Definition), true);
public override HttpBrowserCapabilities GetBrowserCapabilities(HttpRequest request)
{
return m_Capabilities.Value;
}
}
次に、プロバイダを次のように割り当てますApplication_Start
。
HttpCapabilitiesBase.BrowserCapabilitiesProvider = new CustomerHttpCapabilitiesProvider();
ただし、これは実際にはテストされておらず、この変更の影響が正確に何であるかは不明です.