ASP.NET WEB项目发布入坑与脱坑
IIS管理器
我是将项目部署至本机(win7 x64),由于并不是服务器系统,所以必须自己打开IIS管理器,如果是直接部署到服务器系统,可以直接忽略这步。打开步骤如下:
- 打开控制面板,点击程序,如下图所示:
- 点开后接着点击“打开或关闭Windows功能”,如下图所示:
- 点开后则看见如下弹窗,将Internet信息服务里面该选的都选上就行了,(注:如果你不清楚哪些是否该选,就把所属的FTP服务器,Web管理工具,万维网服务里面的全部勾选上),点击确定后等待开启就ok了,如下图所示:
- 开始菜单中打开IIS管理器备用即可,如下图所示:
VS2013发布
打开vs2013,打开解决方案,开始发布工作。
- 清理解决方案并重新生成,注意选择“release”进行生成,毕竟是要发布到生产环境(注:这里自我吐槽一下我的项目命名规范,不合规范,大家不要学),如下图所示:
- 右击web弹出菜单选择发布,如下图所示:
- 点击发布后出现弹窗,进行与发布相关的配置,配置文件名称可以随便取,建议按套路出牌,让人一看就知道这是配置文件,如下图所示:
- 连接里面,发布方法我这里选择的是文件系统,可以FTP的话,你也可以选FTP,以此类推。目标位置可以随便取,也建议按套路出牌,不要随便乱放,如下图所示:
- 设置里面,配置里面选择注意选择Release版本即可,其他平台什么的根据具体情况来吧,如下图所示:
- 预览里面没啥要设置的,直接点击发布就可以了,输出窗口会提示你发布成功,如下图所示。发布至此就完成了。
网站部署
- 打开IIS管理器,这里先测试一下,我们的IIS是否已经启动,浏览器中输入http://localhost/,如果正确显示页面,则一切正常,如果无法显示网页,首先查看应用程序池是否已启动,再查看网站是否已启动,如下图所示:
保证都启动后才可正常访问。 - 添加我们刚才已经发布的网站。右击“网站”,选择添加网站,如下图所示:
.
网站名称:可随意取。
应用程序池:可新建,也可选择已有的程序池,建议新的项目用新的程序池。
物理路径:选择刚才vs2013发布的项目所在的路径。
绑定-类型:不用改,就是http。
绑定-ip地址:选择IIS所在的IP地址,我的就是本机的ip地址。
端口:80是默认端口,如果你不是部署在默认的网站,则修改80端口为其他端口,譬如:80->8888。
主机名:自定义,可不填。 - 添加网站完成后,就可以在IIS管理器左边工作栏网站下面看到我们刚才添加的网站,如下图所示:
这里可以修改“默认文档”,修改成你想要默认访问的页面。点击右侧的红框中的地址,即可对你刚才添加的网站进行访问。
入坑与脱坑
当你将网站都添加完以后,并且自认为已经部署好在IIS服务器了,满怀期待地点击浏览,访问页面,却发现访问不了,并且出现各种错误,这时的你就入坑了,接下来我说一下我遇到的坑,并且脱坑的方法。
目标框架错误
访问页面,遇到如下或者类似如下的错误页面:
解决方法:
点开应用程序池,找到你的网站所在的应用程序池,右击选择“基本设置”,选择符合你项目的.net framework版本,默认应该都是2.0,这里我项目用的是4.0,那当然得修改。(注:.net framework版本一般都是高版本向下兼容,所以选高本版的应该没错。)
改完之后如果你已经能够正常访问了,那恭喜你,你就这一个坑,然而我又遇到了一个…
ASP.NET 4.0 未在WEB服务器上注册
错误页面我当时没有截下来,所以这里就不放出来了…
解决方法:
32位系统操作如下:
(1)在开始菜单处 运行->cmd
(2)进入.net framework4.0版本所在的文件夹路径:cd C:\Windows\Microsoft.NET\Framework\v4.0.30319
(3)通过下列命令注册版本到IIS中: aspnet_regiis.exe -i
64位系统操作如下:
(1)在开始菜单处 运行->cmd
(2)进入.net framework4.0版本所在的文件夹路径: C:\Windows\Microsoft.NET\Framework64\v4.0.30319
(3)通过下列命令注册版本到IIS中: aspnet_regiis.exe -i
我的是64位系统,自然就选择64位的操作方法。操作完之后如果你也已经能够正常访问了,那恭喜你,你也就遇这俩坑,然而我很不幸…
temp文件夹访问权限不足
错误页面类似于上面未注册.net 4.0出现的错误页面,这里我依然没有截下来,不好意思,放不出来了…但是如果你注册了.net 4.0后依然无法正确访问网站,就请你执行以下的解决方法。
解决方法:
打开(系统盘)文件夹路径C:\Windows,找到temp文件夹,右击选择属性,弹出如下窗口,选择安全。
接着选择“高级”,出现如下弹窗,选择“更改权限”
出现如下弹窗口,双击IIS_IUSERS(…)出现弹窗,在权限列表中,勾选完全控制,之后确定,再应用,确定,最后应用,确定…这就完事儿了。
操作完之后,如果你能正常访问了,那恭喜你了,也暂时恭喜我自己,在IIS服务器部署这方面我算是弄完了,没错,我还是不能正常访问…不过出现的是数据库远程访问的问题,这里就简单提一下吧!
我项目用的是mysql,我用root用户访问数据库,显示本机无法远程访问数据库,虽然我连接字符串中主机填的是127.0.0.1,但依然是这个错误,这时的我丝毫不慌,因为我遇到这种错误不是一次两次了…
解决方法:给root用户用添加远程访问数据库的权限就可以了,这里的修改权限的方法我就不提供了,网上一搜一大把,随便操作操作就ok了。(注:这里你用哪个用户进行操作数据库的,就给哪个添加远程访问权限。我这里用root,所以是给root添加)。
结语
跳出上述所有的坑之后,我终于算是部署成功了,也能正常访问了…因为之前一直没做过ASP.NET,更弄过IIS的部署,所以花了很长时间,不管怎么说,总算是解决了。