前言

本文介绍在Winform桌面应用中,使用IISExpress做Host主机,启动.Net平台的Web项目。

浏览Web网页使用CEF开源组件。

准备

首先创建Winform项目WinFormIISExpressHost。

然后把IISExpress文件夹放到项目的Bin\Debug下。

寻找IISExpress

寻找IISExpress很简单,如果本机安装了VS,那么可以直接在C:\Program Files\IIS Express下找到。

当然,也可以上官网下载安装,然后到安装目录找IISExpress,官方下载地址:https://www.microsoft.com/zh-CN/download/details.aspx?id=34679

注意:IISExpress默认的文件夹名是【IIS Express】,这中间有个空格,我们需要去掉它,因为后面需要用命令行启动IISExpress,空格会给我们带来很多麻烦。

启动IISExpress

IISExpress文件夹下有个iisexpress.exe文件,我们只要启动它IIS就会运行。

但IISExpress有个问题,它默认不读取当前目录的下配置文件【AppServer\applicationhost.config】;所以我们在启动IISExpress时,必须指定它的启动文件。

指定IISExpress的命令行如下,可以在CMD下运行。

start C:\Users\Administrator\Desktop\IISExpress\iisexpress /config:C:\Users\Administrator\Desktop\IISExpress\AppServer\applicationhost.config

现在我们把该命令行转换成代码启动,如下:

public string DirMain = Environment.CurrentDirectory + @"\";
private void Form1_Load(object sender, EventArgs e)
{
var plist = System.Diagnostics.Process.GetProcessesByName("iisexpress");
if (plist.Count() <= 0)
{
string para = $@"/config:{DirMain}IISExpress\AppServer\applicationhost.config";
Start($@"{DirMain}IISExpress\iisexpress", para);
​
}
}
public static bool Start(string programPath, string para)
{
try
{
Process myProcess = new Process();
myProcess.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
myProcess.StartInfo.UseShellExecute = false;
myProcess.StartInfo.FileName = programPath;
myProcess.StartInfo.CreateNoWindow = true;
myProcess.StartInfo.Arguments = para;
myProcess.EnableRaisingEvents = false;
bool boo = myProcess.Start();
return boo;
}
catch (Exception ex)
{
return false;
}
} 

修改IISExpress配置文件

IISExpress的配置文件是AppServer\applicationhost.config,现在我们修改它,让IISExpress指定当前项目的路径下的Bin\WebSite文件夹为网站应用的根目录。

用记事本打开applicationhost.config,然后找到sites(网站配置节点)。

修改网站信息中的physicalPath(物理路径)属性的值。

ps:我们还可以修改网站运行端口,和在复制一个Site节点,增加另一个网站。

<sites>
<site name="Development Web Site" id="1" serverAutoStart="true">
<application path="/">
<virtualDirectory path="/" physicalPath="D:\WinFormIISExpressHost\bin\Debug\WebSite" />
</application>
<bindings>
<binding protocol="http" bindingInformation=":5180:localhost" />
</bindings>
</site>
<siteDefaults>
<!-- To enable logging, please change the below attribute "enabled" to "true" -->
<logFile logFormat="W3C" directory="%AppData%\Microsoft\IISExpressLogs" enabled="false" />
<traceFailedRequestsLogging directory="%AppData%\Microsoft" enabled="false" maxLogFileSizeKB="1024" />
</siteDefaults>
<applicationDefaults applicationPool="IISExpressAppPool" />
<virtualDirectoryDefaults allowSubDirConfig="true" />
</sites> 

测试

现在我们新建一个WebTEST的MVC网站项目,然后将其发布;将发布的文件放到刚刚的Winform项目的Bin/Website文件夹下(也可以直接发布到该文件夹下)。

然后运行项目。

项目运行后,电脑右下角会出现IISExpress的图标。

然后我们访问http://localhost:5180/。访问成功;如下图:

CEF应用

IISExpress已经成功运行了,现在我们使用CEF来浏览网页。(CEF是一个使用Chrome内核的Browser)

首先引用CEF(有时候引用了CEF后,项目会出现未刷新的情况,关闭重启即可在引用中看到引用的DLL了),如下图:

引用了CEF后,我们会发现,项目编译会报错;这是因为CEF不支持AnyCPU,所以我们需要将平台目标改成X64。(项目属性和解决方案配置都要修改)

不过很多时候,我们的解决方案必须使用AnyCPU,那么,我们就需要修改下工程文件了。(项目属性必须是X64)

用记事本打开WinFormIISExpressHost.csproj;在第一个PropertyGroup下增加节点<CefSharpAnyCpuSupport>true</CefSharpAnyCpuSupport>;如下图:

修改完工程文件VS会提示重新加载项目;点击确定重新加载,然后项目已经可以编译过去了。

现在我们将CEF应用到项目中,代码如下:

var chromeBrowser = new ChromiumWebBrowser("http://localhost:5180/");
panelParent.Controls.Add(chromeBrowser);

然后运行项目。如下图,项目在Anycpu下运行成功。

----------------------------------------------------------------------------------------------------

代码已经传到Github上了,欢迎大家下载。

Github地址:https://github.com/kiba518/WinFormIISExpressHost

----------------------------------------------------------------------------------------------------

注:此文章为原创,任何形式的转载都请联系作者获得授权并注明出处!
若您觉得这篇文章还不错,请点击下方的【推荐】,非常感谢!

https://www.cnblogs.com/kiba/p/12719481.html

【Net】CEF浏览IISExpress运行Web项目的更多相关文章

  1. Intellij IDEA如何使用Maven Tomcat Plugin运行web项目(转)

    首先,Run --> Edit Configurations,这时候如下图: 然后点击左上角的加号,可以添加一个新的配置,如下图: 选择Maven,如下图: 下面填上自己的配置信息,点击appl ...

  2. 运行web项目端口占用问题

    ---恢复内容开始--- 有时候运行web项目会提示8080端口已经被占用这一类问题(Error running Tomcat8: Address localhost:1099 is already ...

  3. 在Eclipse中运行Web项目Jsp网页时提示端口被占用的解决办法:Several ports (8005, 8888, 8009) required by Tomcat v9.0 Server at localhost are already in use.

    问题: 在Eclipse中运行Web项目Jsp网页启动Tomcat时提示端口被占用: Several ports (8005, 8080, 8009) required by Tomcat v9.0 ...

  4. Intellij IDEA如何使用Maven Tomcat Plugin运行web项目

    首先,Run ——> Edit Configurations,这时候如下图: 然后点击左上角的加号,可以添加一个新的配置,如下图: 选择Maven,如下图: 下面填上自己的配置信息,点击appl ...

  5. 使用cmd命令创建maven(web)项目+项目转换成IDEA项目+项目打包+Jetty运行Web项目

    3条件:配置好环境 配置环境教程:https://www.cnblogs.com/weibanggang/p/9623705.html 第一步:查看版本信息,在cmd输入mvn –version,如果 ...

  6. 使用Apache Tomcat Maven插件部署运行 Web 项目

    什么是Apache Tomcat Maven Plugin? Maven Plugin 是Apache Tomcat 提供的一个Maven插件,它可以在你没有tomcat容器时将任何一个war项目文件 ...

  7. [Intellij] 在IntelliJ IDEA 中创建运行web项目

    安装工具 1.JDK7+ 2.IntelliJ Idea 工具(下载安装后,网上找注册码破解即可) 3.tomcat7+ 解压缩版 明确两个概念: 1.Project:类似于eclipse的works ...

  8. Idea运行web项目时,提示java.lang.ClassNotFoundException: com.mysql.jdbc.Driver解决方法

    今天用 idea写了个工程.结果最后报错,错误信息如下: java.lang.ClassNotFoundException: com.mysql.jdbc.Driverat org.apache.ca ...

  9. IntelliJ IDEA 配置 Tomcat 运行web项目

    运行前提: 配置好 Java 的运行环境 配置好 Tomcat 安装 IntelliJ IDEA 开始 1.创建项目并配置 关于配置SDK,等建完项目再说 没有配置SDK的话 会出现下面的弹框,点击 ...

随机推荐

  1. 十分钟搞懂Elasticsearch数字搜索原理

    更多精彩内容请看我的个人博客或者扫描二维码,关注微信公众号:佛西先森 前言 Elasticsearch诞生的本意是为了解决文本搜索太慢的问题,ES会默认将所有的输入内容当作字符串来理解,对于字段类型是 ...

  2. debian7安装了mysql后,局域网去连接时出现10061错误

  3. $_FILES上传错误类型

    $_FILES['file']['error']其值为 0,没有错误发生,文件上传成功. 其值为 1,上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值. 其值 ...

  4. Qt 的日期 时间

    QDateTime 的构造函数,有参数是QDate的.这样就可以把日期转化成 QDateTime. QDateTime.toTime_t() 可以转化成 Unix 时间.

  5. Spring5参考指南:组件扫描

    文章目录 组件扫描 @Component 元注解和组合注解 组件内部定义Bean元数据 为自动检测组件命名 为自动检测的组件提供作用域 生成候选组件的索引 组件扫描 上一篇文章我们讲到了annotat ...

  6. MutationObserver 监听 DOM 树变化

    MutationObserver 是用于代替 MutationEvents 作为观察 DOM 树结构发生变化时,做出相应处理的 API .为什么要使用 MutationObserver 去代替 Mut ...

  7. javascript 控制台调试方法

    console在我们调试js程序的时候是一个非常有效的工具. 日志输出是我们最常用的功能: console.log(); console.info(); console.warn(); console ...

  8. CF思维联系–CodeForces-217C C. Formurosa(这题鸽了)

    ACM思维题训练集合 The Bytelandian Institute for Biological Research (BIBR) is investigating the properties ...

  9. Codeforces Round #623 (Div. 2, based on VK Cup 2019-2020 - Elimination Round, Engine) A Dead Pixel

    讨论坏点的左右上下的矩形大小. #include <bits/stdc++.h> using namespace std; int main() { int t; cin >> ...

  10. POJ 2136 Vertical Histogram(当时写的比较恶心,优化一下)

    Vertical Histogram Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 21223 Accepted: 10048 ...