这样的程序如果要在IIS7上运行,一、asp.net  mv

作者: 编程  发布:2019-11-07

1.今天在部署IIS7应用程序的时候出现了这个错误,本以为是发布的错误,其实不然,是IIS中所依赖的项没有配置正确

1.安装IIS

IIS部署asp.net  mvc网站比部署普通网站稍微麻烦并且难度也稍大。在部署的过程中容易出现错误,那么如何以正确的步骤部署asp.net mvc网站和解决出现的错误呢,且看下面的分解。

上64位的系统现在是越来越多了,特别是在服务器上,64位系统的优势不言而喻。但由于历史的原因,很多时候我们的网络APP中都保留有32位的模块,这样的程序如果要在IIS7上运行,很简单,创建一个单独的支持32位模式的应用池就可以了。但要在64位的IIS6上运行的时候,情况就要复杂些,本文将对此做一些介绍。

9159.com 1

9159.com 2

一、asp.net  mvc网站部署步骤

就32位支持来说,IIS6与IIS7最大的不同是,在IIS6中,整个站点(Site)只能运行在一种模式下:要么32位,要么64位,这句话是什么意思呢?在C:/Windows/Microsoft.NET下我们可以看到两个目录Framework和Framework64,往里走的话,会发现二者的目录结构几乎完全一样(唯一的区别是1.0.3075只存在于Framework,因为这个版本的.net只支持32位模式),顾名思义,前者支持32位模式,后者支持64位模式,一个站点在一个时间点只能载入其中一套程序,也就是说你必需在二者之间做出选择。这个选择会影响到这个站点下所有的APP,所以,在操作之前,务必三思而后行!一个纯64位程序在32位模式下肯定会损失性能的。

首先查看目录浏览中选项是否启用。如果是禁用状态点击启用即可。

9159.com 3

1、安装 Microsoft .net FrameWork 4.0安装包(开发的时候使用的是.net framework4.0框架)。

然后,在IIS管理器中,右键点击Default Web Site,点击“属性”,打开“Home Directory"页,点击”Configuration",这里我们可以看到后缀的映射表,注意看一下Executable Path一栏就会发现,其中有不少都指向了C:/Window/Microsoft.NET/下的其中一个路径,如果是Framework,说明当前站点运行在32位模式下,否则,就运行在64位模式下。

9159.com 4

2.注册.net framework 到IIS

2、安装ASP.NET MVC 4.0 。

不用说,如果站点运行在64位模式下,而我们又打开了一个包含了32位程序的APP,肯定会出问题

 

打开程序-运行-cmd:输入一下命令重新注册IIS
C:WINDOWSMicrosoft.NETFrameworkv4.0.30319aspnet_regiis.exe -i

3、设置IIS的“ISAPI和CGI限制”中的“ASP.NET v4.0.0.30319”为允许,如下图所示:

下面一个例子:在64位机器上运行32位版本的ASP.NET 2.0.****
C:/inetpub/adminscripts/adsutil.vbs SET W3SVC/AppPools/Enable32bitAppOnWin64 0
C:/Windows/Microsoft.NET/Framework64/v2.0.40607/aspnet_regiis.exe -ua
iis重启命令 iisreset

9159.com 5

或者

9159.com 6

C:/Windows/Microsoft.NET/Framework64/v2.0.40607/aspnet_regiis.exe -i -enable
C:/inetpub/adminscripts/adsutil.vbs SET W3SVC/AppPools/Enable32bitAppOnWin64 1
C:/Windows/Microsoft.NET/Framework/v2.0.40607/aspnet_regiis.exe -i -enable
iis重启命令 iisreset

 

C:WINDOWSMicrosoft.NETFramework64v4.0.30319aspnet_regiis.exe -i

4、在iis7.0中发布网站,进行“绑定”、“基本设置”或“高级设置”等操作,如图,设置网站主目录为“D:/我的文档/桌面/ZPGWeb”:

命令看上去很吓人(-u是要卸载ASP.NET),不过不用担心,后面-i就是安装了,而且安装程序会自动地在IIS中将ASP.NET用到的后缀名映射到C:/Window/Microsoft.NET/Framework/v2.0.50727/aspnet_isapi.dll。它怎么知道该用64位还是32位呢?呵呵,注意上面我们使用的是32位的aspnet_regiis,自然就是链到32位的dll了。

2.选择创建站点中对应的应用池---高级设置---启用32位应用程序,然后把值改为true。

3.把当前开发的项目部署到IIS上

9159.com 7

上面这两步的顺序不能颠倒,否则就会出现一些奇怪的错误。比如在我试的过程中,有一段时间整个站点都Service Unavailable了(HTTP 503),原因是我先在64位下用64位的aspnet_regiis.exe把IIS和64位的.NET关联上,然后才用adsutil.vbs把模式改回32位(stupid),结果系统在32位模式下发现载入的DLL全是64位的,就报503错了,这时候如果查看一下事件管理器(在“我的电脑”上点击右键,点击“管理”),就会发现W3SVC-WP报了很多错,错误信息里可以看到SAPI Filter 'C:/WINDOWS/Microsoft.NET/Framework64/v2.0.50727/aspnet_filter.dll' could not be loaded due to a configuration problem. 之类的。如果使用了MVC框架,那么下面还有一步就是去手动注册mvc后缀,这一步本身没什么可说的,只要映射到32位的aspnet_isapi就可以了。

9159.com 8

  1.添加应用程序池

5、设置该网站应用程序池的.net framework 版本为4.0.30196 :

3.打开cmd命令进行安装

  9159.com 9

9159.com 10

如果映射存在,请检查应用程序是否分配给了.NET Framework4.0的应用程序池。

  2.添加web站点

6、至此完成了mvc4.0站点在iis7.0的部署。

如果映射不存在,你可以以管理员运行下面的命令注册:

  9159.com 11

注意点:

32位机器:

4.调试

1.如果读者使用的iis是在安装完.net framework 之后才安装的,需要进行iis注册,开始--运行--cmd,打开命令行提示符,输入命令如下

C:WindowsMicrosoft.NETFrameworkv4.0.30319aspnet_regiis.exe -i

 

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

64位机器:

  1.启动站点  或 

回车运行,如果读者的服务器是64系统,那么需要使用命令C:/Windows/Microsoft.NET/Framework64/v4.0.30319/aspnet_regiis.exe -i 来运行注册iis。

C:WindowsMicrosoft.NETFramework64v4.0.30319aspnet_regiis.exe -i

  2.VS 调试

2.由于mvc4.0在创建项目后,默认在项目下的App_Start文件夹中的文件“RouteConfig.cs”里自动配置了“默认路由”为HomeController控制器下的Index方法(ActionResult),所以不需要在站点默认文档里配置默认文档名字,该站点会自动根据mvc的路由机制找到默认需要显示的视图文件。如下图:

 4.然后应用池中选择相应安装的版本

    9159.com 12

9159.com 13

9159.com 14

    9159.com 15

 

5.重启部署的站点即可。

      9159.com 16

9159.com 17

 9159.com 18

5. 模拟域名调试

二、常见错误及解决方案

 

    修改本地hosts 映射即可

1、HTTP错误 403.14-Forbidden Web 服务器被配置为不列出此目录的内容及Login on failed for "IIS APPPOOLASP.NET v4.0"

    hosts文件在 C:WindowsSystem32driversetc 文件夹下

解决方案:(1)定位到.NET 的安装目录C:Windows9159.com,Microsoft.NETFrameworkv4.0.30319,启动cmd控制台,将当前目录切换到.NET的安装目录,执行asp.net_regiis -i,将ASP.NET重新注册到IIS即可解决此错误。

    9159.com 19

(2)开始--运行--cmd,打开命令行提示符,输入命令:C:/Windows/Microsoft.NET/Framework/v4.0.30319/aspnet_regiis.exe -i 。回车运行,如果读者的服务器是64系统,那么需要使用命令C:/Windows/Microsoft.NET/Framework64/v4.0.30319/aspnet_regiis.exe -i 来运行注册iis。

     浏览器输入 

2、用户 'IIS APPPOOLRwindRhine' 登录失败

5. 好处

这是登录SQL Server时遇到的错误。RwindRhine是我的网站的应用程序池,解决方案如下:开始==>inetmgr==>定位到网站对应的应用程序池,选择高级设置,如下图所示:

    基于IIS调试,能最大限度模拟真实环境。

9159.com 20

    比F5直接调试,开发效率上要高

接下来找到标识选择,将其属性值设置为:Network Service,如下图所示:

    

9159.com 21

此外,还应将Network Service设置为SQL Server的管理员账户。设置方法:启动MSSMS,安全性,登录名,右击,新建登录名,如下图所示:

9159.com 22

在接下来的对话框中,选择搜索,高级,立即查找,定位到Network Service,添加用户,在服务器角色选项卡中为Network Service添加sysadmin角色。这样便可解决登录SQL Server错误的问题。

本文由9159.com发布于编程,转载请注明出处:这样的程序如果要在IIS7上运行,一、asp.net  mv

关键词: