最近在花时间封装一个Razor模板+NanUI的Winform组件,发现了有个神奇地方,,由于需要使用CfxResourceHandler,用于把对cshtml文件的请求,编译成html并返回给CEF,这时候发现了个神奇的事情,每条cshtml连接会请求2次,而且header是一样的,这样会导致每个页面都构建两次,浪费资源

 

经过对比后发现第二次请求的返回的html并不会被加载到cef中,至于去了哪里,不清楚,,对比两次request之后,终于有了发现,,第一次有效请求和第二次无效请求的差别就在于,request的ResourceType属性的取值上,,有效的request.ResourceType==CfxResourceType.MainFrame或者CfxResourceType.SubFrame,而无效的那次请求为SubResource,经查文档注释后,SubResource为默认类型或未知类型,如此一来,就简单处理了,,只要响应MainFrame/SubFrame并返回html后即可:
private void OnProcessRequest(object sender, Chromium.Event.CfxProcessRequestEventArgs e)
{
    if (RazorResourceLoader.ExistsHandler(fileName))
   {
        if (request.ResourceType==CfxResourceType.SubResource)
         {
                callback.Continue();
                e.SetReturnValue(true);
                return;
         }
   }
}
private void OnGetResponseHeaders(object sender, Chromium.Event.CfxGetResponseHeadersEventArgs e)
{
            if (_request.ResourceType== CfxResourceType.SubResource)
            {
                e.ResponseLength =0;
                e.Response.MimeType ="text/*";
                e.Response.Status = 200;    //这里一定要返回200,否则在控制台会出现一行404的错误
                e.Response.StatusText = "OK";
            }

else

{  //TODO:处理正常返回

}

}

上述的神奇,估计是CEF的问题,,应该也会影响到CefSharp

C#使用NanUI或ChromiumFx碰到的坑(一)的更多相关文章

  1. 那些在BAE上部署node.js碰到的坑

    在BAE上使用node.js半年多了,其中碰到了不少因为BAE云环境限制碰到的坑 写下来大家碰到了,也不用那么麻烦的去看好几天代码了,直接对症下药 官方公布的坑有: BAE是使用package.jso ...

  2. spring boot -- 无法读取html文件,碰到的坑

    碰到的坑,无法Controller读取html文件 1. Controller类一定要使用@Controller注解,不要用@RestController 2. resource目录下创建templa ...

  3. 运行Appium碰到的坑们

    运行Appium的时候,碰到的那些坑 1. java命令会出现error:could not open ...jvm.cfg 出现这种情况大多是因为电脑上之前安装过JDK,卸载重装之后,运行java命 ...

  4. 关于使用nodejs的mysql查询时碰到的坑

    今天在编写登录模块时,碰到一个隐蔽的坑,故记录一番 在使用Node.js的mysql模块的query方法时,查询语句使用了 `select password from login where name ...

  5. 微信小程序里碰到的坑和小知识

    本文作者:dongtao   来自:授权地址 本人低级程序员,以下bug不能确保在其它地方可以以相同的原因复现.同时, 出现很多bug的原因是小程序的基本知识还有编码的基本功不到位造成 路还很长,共勉 ...

  6. 在win8.1下安装laravel5.1时碰到的坑不少,但总算搞掂,真有点不容易。

    安装好php后,安装laravel的方法有如下几种. 1.先安装好composer, 再用composer下载资源并安装,命令如下: composer create-project laravel/l ...

  7. Angular 新手容易碰到的坑

    Q1.<div ng-include="views/user/show.html"></div> 错在哪里? 如果你这么写过,会发现这个位置啥也没有加载出来 ...

  8. Angular新手容易碰到的坑

    在Angular群里回答新手问题一段时间了,有一些Angular方面的坑留在这里备查,希望能对各位有所帮助.这个文章将来会随时更新,不会单独开新章,欢迎各位订阅. Q1.<div ng-incl ...

  9. 说说初用 Mock 工具测试碰到的坑

    我是一个在校实习生,作为一个程序猿,是个菜鸟中战斗机!对于测试,只写过一点点简单到不能再简单了的 Junit 单元测试的例子(因为当时这足以应付学校课程的内容与要求).这几天在公司里要真枪实弹做测试的 ...

随机推荐

  1. Java【第八篇】面向对象之高级类特性

    static 关键字 当我们编写一个类时,其实就是在描述其对象的属性和行为,而并没有产生实质上的对象,只有通过new关键字才会产生出对象,这时系统才会分配内存空间给对象,其方法才可以供外部调用.我们有 ...

  2. GitBook插件整理 - book.json配置

    目录 1. 配置概况 1.1. 全局配置 1.2. 插件列表 plugins 1.3. 插件属性配置pluginsConfig 2. 一些实用插件 2.1. back-to-top-button 回到 ...

  3. (一)Qt5模块,QtCreator常用快捷键,命名规范

    常用快捷键 1)帮助文件:F1 (光标在函数名字或类名上,按 F1 即可跳转到对应帮助文档,查看其详细用法) 2).h 文件和对应.cpp 文件切换:F4 3)编译并运行:Ctrl + R 4)函数声 ...

  4. CMDB服务器管理系统【s5day89】:部分数据表结构-资产入库思路

    1.用django的app作为统一调用库的好处 1.创建repository app截图如下: 2.好处如下: 1.app的本质就是一个文件夹 2.以后所有的app调用数据就只去repository调 ...

  5. 腾讯云服务器tomcat端口无法访问

    第一种情况: 如题:https://console.cloud.tencent.com/cvm/securitygroup 需要去这个地址设置安全组. 说实话,一句mmp不知当讲不当讲.使用说明这块太 ...

  6. vue开发常用插件

    dependencies axios // 用于请求数据 better-scroll // 用于处理页面列表的滚动,下拉刷新等 fastclick // 用于处理移动设备点击会有300毫秒延迟的问题 ...

  7. HDU 6108(整除判断 数学)

    题意是求在给定的 P 进制下,满足条件的数字 B 有多少.条件:若任何一个数的各位数字之和能被 B 整除,则该数可被 B 整除. 在 p 进制下,每个正整数都可以都可以表示为:a0*p^0 + a1* ...

  8. Executors的四种线程池

    Executors.newCachedThreadPool(); Executors.newFixedThreadPool(2); Executors.newScheduledThreadPool(2 ...

  9. 🍓vue & react 一些重要但没必要死记硬背的东西

  10. 让iframe自适应高度-真正解决

    需求:实现 iframe 的自适应高度,能够随着页面的长度自动的适应以免除页面和 iframe 同时出现滚动条的现象. (需要只有iframe出现滚动条) 本人一开始这么写:会造成只有主页面加载是设定 ...