ASP.NET MVC部署IIS问题

@adens 2/28/2016 8:15:15 AM

ASP.NET + MVC 网站部署到IIS 7.0 环境的云服务器遇到的问题

issue1:远程连接管理失败

防火墙拦截,关闭防火墙或在防火墙设置里允许通行。

设置流程:控制面板->Windows防火墙->允许应用或功能通过Windows防火墙:找到远程桌面打上勾。同理FTP无法上传也有可能是防火墙拦截,同时设置允许。

issue2: .NET环境安装失败

全新的Windows Server服务器没有设置虚拟内存导致.NET环境安装失败。

设置流程:我的电脑->属性->高级系统设置->高级:性能设置->设置->高级:虚拟内存更改。

微软建议虚拟内存初始大小设置为物理内存的1倍最大值为物理内存的2倍到3倍。

issue3:VisualStudio自带发布工具发布设置

在解决方案管理器里右键要发布的网站(解决方案下的网站项目右键),生成网站,生成完成后右键发布Web应用。

FTP 发布设置:配置文件命名随意;连接:发布方法选择 FTP ,输入服务器 IP ,站点路径,用户名,密码,目标 URL (可不填),就可以直接发布了。如果设置没有错误的话,发布失败可能是 issue 1 的问题。

Web Deploy 发布设置:配置文件命名随意;连接:发布方法选择Web Deploy ;服务器填写自己服务器的 IP ;站点名称填写要发布的网站名称;用户名,密码,目标 URL可不填。

验证连接通过可以直接点击发布。

issue 4: Web Deploy 发布失败

1 若服务器未安装 Web Deploy

远程连接服务器,在IIS右侧**"获取新的Web平台组件"下载安装 web platform installer,安装完毕后打开搜索:Web Deploy,安装 WEB DEPLOY 3.5。(注意 Windows Server的IE 安全项默认关闭下载的,需要打开才能下载。)**

检查管理服务中 Web Management Service 和 Web 部署代理服务 是否启动。

防火墙 Web Deploy是否允许连接,若没有Web Deploy这一项需要手动添加防火墙入站规则:允许8172端口。

2 Web Deploy 发布 已连接但授权失败

IIS 管理器权限中添加用户,一般不使用Administrator管理员用户 而是使用新建的WDeployAdmin用户,没有的话需要自己手动建立用户。并且确保WDeployAdmin用户有修改文件的权限。

参考Blog为:天空的垃圾场(Google Blog 访问需翻墙)

issue 5:发布成功后访问404 ,403 错误

404可能问题:

1 网站未启动:IIS 管理器里网站启动。

02 默认页面不对: IIS 的默认页面有 Default.aspx,index.html,等,而我的是 index.aspx,需要在默认页添加本地 index.aspx。

3 网站后台代码有错误:发布时配置文件里

<configuration>
	<system.web>
		<compilation debug="true",targetFramework="4.5" />
	</system.web>
</configuration>

403可能问题:

网站的权限不对:IIS管理器里打开网站,点击编辑权限-》安全->编辑权限,或者直接添加Everyone权限。

###issue 6:没有为扩展名“.cshtml”注册的生成提供程序

错误提示以及google,百度搜到的都是在 web.config文件中添加


	<compilation debug="true" targetFramework="4.5" >
		<buildProviders>
			<add extension=".cshtml" type="System.Web.Compilation.PageBuildProvider" />
      </buildProviders>
	</compilation>

然后出现了issue 7

issue 7:视图必须派生自 ViewPage、ViewPage

google,百度到的是

1.在MVC架构中使用aspx页面,需要在Text.aspx中开头加入如下代码:

<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<dynamic>" %>

2.把Views下面的web.config文件复制一个到MyCustomView下面,这样错误就没有了

3.直接在视图中加一句指令

@inherits System.Web.Mvc.WebViewPage

这些都是在开发的时候遇到的解决办法,不是部署完访问遇到。

发布之后遇到issue 6 和 issue 7 解决办法:

远程连接服务器,打开IIS管理器,将文件夹 bin 和 Views 转换为应用程序。

猜测原因是ASP.NET MVC 发布只编译 Controller,Models,App_Code 等文件中的 .cs后缀的文件到bin目录下。不编译Views 文件夹。 导致编译后的Controller 访问 Views 文件夹是作为普通文件夹访问。而不是 ASP.NET MVC 注册的视图(Views)文件夹。而转换为应用程序后 Start_up.cs 就可以将 Views 注册为MVC的视图文件夹。

写在最后

服务器配置:阿里云服务器ECS,单核,1G内存,50G硬盘,1Mbps宽带 。IIS 7.0,.NET环境。

开发环境:VisualStudio 2013,ASP.NET + MVC + AJAX + EntityFramework,网页使用Razor引擎。

Last Modification : 2/28/2016 8:15:15 AM


In This Document