如何发布.Net MVC 网站项目(攻略集锦)

转载自诗人江湖老,原文地址

参考文献

既然是攻略,就必然有参考文献,放在文章开头,以示敬意!
1.MVC项目发布步骤
2.未能从程序集加载“System.ServiceModel.Activation.HttpModule”
3. Win7 IIS 另一个程序正在使用此文件,进程无法访问
4.HTTP 错误 500.19 - Internal Server Error

1.发布MVC 网站

1.1.开始发布

打开你的MVC网站项目,右键点击项目,选择重新生成一下网站项目;再次点击右键->发布:
这里写图片描述这里写图片描述

1.2.创建配置文件

弹出网站发布设置面板,点击自定义,创建新的发布配置文件:

输入你自己定义的配置文件名(这里随便输入):
这里写图片描述

1.3.选择连接方式

在发布方法中选“文件系统”,这样我们可以发布到自己指定的本机文件上:
这里写图片描述

选择自己指定的文件夹:通过点击下图中右上角红色箭头处创建新的文件夹,自定义命名(我的就写WebSite)。点击打开,进入下一步
这里写图片描述
这里写图片描述

1.4.设置发布模式

在配置中,要选择“Release”。
——发布模式(Release 称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好地使用。Debug 通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序)
这里写图片描述

1.5.确定发布

点击下一步:进入发布前的预览界面。
点击发布即可以发布你指定的文件夹中,这里,我发布的是C盘下的WebSite文件夹中。
这里写图片描述

2.将网站放入IIS服务器

2.1.新建IIS网站

通过->控制面板->管理工具->启动 ‘Internet信息服务(IIS)管理器’ 进入IIS界面。右键单击网站->添加网站
这里写图片描述

下面图中,左边红色方框内输入自定义的网站名称(请尽量用英文,这里我就写MyPhotoSite),右边红色箭头处需要点击 ‘选择(E)…’ 进行更改(也可以不更改,我就没有更改)。
这里写图片描述

2.2选择物理路径

选择 “已发布网站文件夹” 的物理路径,找到之前发布MVC网站的文件夹。
这里写图片描述

2.3绑定IP地址

点击下拉列表选择 “自己当前的IP地址”
这里写图片描述
点击确定,OK,搭建完毕!

3.注册IIS服务器

3.1打开注册命令器

先在程序菜单->VS2012里面->Visual Studio Tools->VS2012开发人员命令提示。右键单击 “VS2012开发人员命令提示”。以管理员身份运行。(如果不是以管理员身份运行,将会提示“权限不足”错误)
这里写图片描述这里写图片描述

3.2运行注册命令

输入命令:aspnet_regiis -i 按回车。等待运行大概 1分钟左右提示安装完毕(我的机子慢所以提供1分钟供大家参考,大家不要着急慢慢等待安装完成即可)。

4.常见问题集锦

4.1未能从程序集加载“System.ServiceModel.Activation.HttpModule”

完整报错信息:
未能从程序集“System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”中加载类型“System.ServiceModel.Activation.HttpModule”
这里写图片描述

解决方法:
在命令行中运行下面的命令:

C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -i -enable

  
如果提示如下:
这里写图片描述
  
则可先执行下面的命令:

C:\Windows\Microsoft.NET\Framework\v3.0\Windows Communication Foundation\ServiceModelReg.exe -ua

  
然后到控制面板->程序->启用或关闭Windows功能,如下图所示,将需要的WCF服务勾选上就好了。
这里写图片描述
  

4.2Win7 IIS 另一个程序正在使用此文件,进程无法访问

问题1:用VS2010打开原来用VS2012创建的Webservice项目,提示创建虚拟目录失败
问题2:直接启动IIS,无法启动,提示“另一个程序正在使用此文件,进程无法访问”
原因:80端口被占用
解决办法:停止占用80端口的程序(服务)

解决步骤:

1、cmd中运行netstat -ano 查看全部占用端口的程序(服务),参数o代表显示进程PID

2、在显示结果的第一列里找到占用80端口的进程,我这里是第一行 :本地地址 0.0.0.0:80 。如果cmd中不能显示全部信息,可以在cmd窗口的上方右键—属性,修改命令记录缓冲区大小和屏幕缓冲区大小高度。

3、在任务管理器里的服务标签页中找到PID对应的服务,我这是Apach,也不知道装什么软件装上的,这就很自然能够解释为什么也占用80端口了

4、在管理工具–服务中直接禁用Apach的服务。

IIS可以正常启动,问题2解决。

但问题1没有解决,仍然报错:创建虚拟目录失败 错误:在本地计算机行,未能找到服务器 只有本地IIS服务器支持创建虚拟目录

用VS2010创建新的web应用程序,一切正常可以运行,说明问题不在VS2010本身。

用记事本打开webservice项目的csproj文件,删除其中“http://localhost:2727/”行,保存后,用VS2010可以正常打开,并运行。问题1解决。
  

4.3HTTP 错误 500.19 - Internal Server Error

windows 2008下IIS7 安装ASP.NET 遇到如下错误:

HTTP 错误 500.19 - Internal Server Error
无法访问请求的页面,因为该页的相关配置数据无效。

详细错误信息模块 IIS Web Core
通知 BeginRequest
处理程序 尚未确定
错误代码 0x80070021

配置错误 不能在此路径中使用此配置节。如果在父级别上锁定了该节,便会出现这种情况。锁定是默认设置的(overrideModeDefault=”Deny”),或者是通过包含 overrideMode=”Deny” 或旧有的 allowOverride=”false” 的位置标记明确设置的。

配置源

219: <add name=”ScriptModule” preCondition=”managedHandler” type=”System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35”/></modules>

220: <handlers>
221: <remove name=”WebServiceHandlerFactory-Integrated”/>

解决方法:
控制面板–>程序和功能–>打开或关闭windows功能–>角色
的这里,如果还未安装“web服务器(IIS)”,则选择“添加”。
如果已经安装了,则选择“web服务器(IIS)”–>添加角色服务。
选择“应用程序开发(已安装)”–>“ASP.NET”。


另其他类似错误一:


HTTP Error 500.19 - Internal Server Error
配置错误: 不能在此路径中使用此配置节。如果在父级别上锁定了该节,便会出现这种情况。锁定是默认设置的 (overrideModeDefault=”Deny”),或者是通过包含 overrideMode=”Deny” 或旧有的 allowOverride=”false” 的位置标记明确设置的。

出现这个错误是因为 IIS 7 采用了更安全的 web.config 管理机制,默认情况下会锁住配置项不允许更改。要取消锁定可以运行命令行 %windir%\system32\inetsrv\appcmd unlock config -section:system.webServer/handlers 。其中的 handlers 是错误信息中红字显示的节点名称。
如果modules也被锁定,可以运行%windir%\system32\inetsrv\appcmd unlock config -section:system.webServer/modules
另外,如果使用Asp.net的朋友,在安装IIS7的时候一定记得勾选Asp.net,默认不选,也会出现类似的错误信息

另其他类似错误二:


HTTP 错误 500.19 - Internal Server Error
无法访问请求的页面,因为该页的相关配置数据无效。

详细错误信息模块 IIS Web Core
通知 BeginRequest
处理程序 尚未确定
错误代码 0x80070005
配置错误 由于权限不足而无法读取配置文件

原文件夹,右击选择它的属性,打开“安全”选项卡,看到“组或用户 名”,单击“编辑”按钮添加一个新的用户名“Everyone”,然后更改它的权限,将第二个权限“修改”设置为允许就可以了。

猜你喜欢

转载自blog.csdn.net/xuchen_wang/article/details/86523409