IIS部署+CSHTML的访问血泪路

摘要:
学了几个简单页面,用VS自带的IISExpress立马就可以看到效果,就想着尝试一下正式的web部署,以及尝试类似aspx文件那样直接访问CSHTML文件,结果踩了好多坑,费了好大劲。IIS部署有好多新鲜的概念,我这样的初学者真的一脸懵逼,什么应用程序池、集成管道、虚拟目录,新概念扑面而来。VS开发的页面用自带的IISExpress很容易就跑起来,结果正式部署到IIS里死活是错误。这时候CSHTML文件就可以正常访问了。

之前一直用VS学习开发winfrom,主要是web比较难学,学的东西太多太杂,还有一点就是部署和维护比较麻烦,无奈web眼瞅着要一统天下,也得跟上时代的步伐,开始慢慢接触吧。学了几个简单页面,用VS自带的IIS Express立马就可以看到效果,

就想着尝试一下正式的web部署,以及尝试类似aspx文件那样直接访问CSHTML文件,结果踩了好多坑,费了好大劲。网上的文章一大抄看了N多,大多不解决实际问题,也没找到解决方案,今天突然一下子找到了思路,解决了困扰好长时间的问题。

IIS部署有好多新鲜的概念,我这样的初学者真的一脸懵逼,什么应用程序池、集成管道、虚拟目录,新概念扑面而来。

VS开发的页面用自带的IIS Express很容易就跑起来,结果正式部署到IIS里死活是错误。下面把我的试错总结一下,能帮助后来者少走弯路,也算是不枉我一番心血。

第一个关键点:网站绑定时,要么填IP地址(本地测试用127.0.0.1或你计算机的局域网IP地址),要么填主机名字(本地测试用localhost或你计算机的名字),不要同时填,否则很可能无法正常访问。

通常都填IP地址,不填主机名字,但是VS有一个功能:Visual Studio 中针对 ASP.NET Core 的开发时 IIS 支持,其实就是代替IIS Express,可以直接运行IIS测试。经我尝试,需要填写主机名字localhost。感兴趣的点此尝试

第二个关键点:象aspx文件那样直接访问CSHTML文件,一定要注意:aspx文件的目录只需要在网站右键“添加虚拟目录”就可以运行,但是CSHTML文件,是应用程序,必须右键“添加应用程序”才可以运行,否则你会得到如下的错误,而且全网都找不到答案!

“/”应用程序中的服务器错误。

无法提供此类型的页。

说明:由于已明确禁止所请求的页类型,无法对该类型的页提供服务。扩展名“.cshtml”可能不正确。 请检查以下的 URL 并确保其拼写正确。

IIS部署+CSHTML的访问血泪路第1张

本来很简单的事情,aspx文件就像asp文件、php文件那样是通过自带插件解释执行的,而CSHTML文件是程序,可以编译执行的,它的目录下面自带了一个bin目录,里面存放了必不可少的几个dll文件,还有一个web.config配置文件,我也是事后才明白的。

你需要做的是直接将存放有CSHTML文件的目录添加为新网站(默认有应用程序池),如果已经添加为虚拟目录的(虚拟目录无法使用应用程序池),可以右键转换为应用程序,图标会明显变化。

IIS部署+CSHTML的访问血泪路第2张

这时候CSHTML文件就可以正常访问了。

测试文件,点我下载

为什么说是血泪路呢,前几天研究了一个通宵都没有结果,实在搞不懂IIS和IIS Express之间到底差了啥,以为问题出在applicationhost.config文件上,结果不是。今天打开了一个以前的Razor pages应用程序,突然发现原来Razor pages项目发布后的dll程序集文件就是个摆设(只包含程序集清单信息的空文件,大小只有大约4k),完全可以删除,只保留cshtml文件就可以访问页面,就象经典asp和aspx一样。

免责声明:文章转载自《IIS部署+CSHTML的访问血泪路》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇viscode 使用 格式的配置免签支付系统,微信支付宝免签支付,个人支付接口源码下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

IIS如何启用父目录

配置好IIS后浏览站点提示错误:Active Server Pages 錯誤 "ASP 0131 " 不 运行上层目录 /test/test.asp, 列88 包含了 "http://www.cnblogs.com/aa.asp " 不能包含 ".. " 指出上层目录。解决办法:由于IIS中父路径未启用造成的. 开启方式为: 通过 IIS管理器启用父路径...

ASP.NET Core的Kestrel服务器(转载)

Kestrel是一个基于libuv的跨平台ASP.NET Core web服务器,libuv是一个跨平台的异步I/O库。ASP.NET Core模板项目使用Kestrel作为默认的web服务器。Kestrel支持以下功能: HTTPS 用于启用不透明升级的WebSockets 位于Nginx之后的高性能Unix sockets Kestrel 被.N...

什么是父路径及开启的方法

“开启父路径”是在Windows 2003开始有这个概念的,之前的windows xp,windows 2000自带的iis是没有“Windows 2003”这个说法的。Windows 2003自带的IIS6.0安装后默认设置是不开启父路径的。 “开启父路径”主要作用: “启用父路径”,ASP页面中如果使用到了include file=../header....

【转】IIS上的反向代理

http://blog.csdn.net/yuanguozhengjust/article/details/23576033 一直说在IIS上做反向代理,由于沉迷在nginx一行指令完事的美好情景当中,所以IIS懒得折腾,今天终于下定决心在IIS上折腾一下反向代理,经过一晚上的捣鼓,终于搞定!搞定以后发现其实太简单了有木有!!(网上教程很晕!)首先说一下,...

IIS FTP 上传文件550错误

异想之旅:本人博客完全手敲,绝对非搬运,全网不可能有重复;本人无团队,仅为技术爱好者进行分享,所有内容不牵扯广告。本人所有文章发布平台为CSDN、博客园、简书和开源中国,后期可能会有个人博客,除此之外全部是盗文! 今天改进了一下服务器上IIS搭建的FTP 之前都是匿名用户登录的,今天想要加上密码,于是新建了一个名为admin的用户,并按照百度的方法进行了...

IIS服务器部署多个HTTPS方法

IIS服务器部署多个HTTPS方法 由于IIS6不支持多个网站绑定HTTPS,我发现如果已经有一个网站绑定了证书,如果给第二个页面绑定证书的话就会挤掉第一个的证书。在网上搜索发现了很多各种各样的解决方法,复杂又不好用。 后来发现可以直接修改IIS的配置文件,并不需要在IIS管理器里进行修改。 步骤 找到IIS的配置文件,在 C:Windowssyste...