一、前期准备
1.1 确保系统组件已安装
- .NET Framework 4.0 或更高版本
- ASP.NET MVC(对应版本)
- IIS 7.5(Windows Server 2008 R2 / Windows 7)
1.2 安装必要角色和功能
通过服务器管理器或命令提示符:
# 安装 IIS
dism /online /enable-feature /featurename:IIS-WebServerRole
# 安装 ASP.NET
dism /online /enable-feature /featurename:IIS-ASPNET
dism /online /enable-feature /featurename:IIS-ASPNET45
# 或者使用 PowerShell
Install-WindowsFeature -Name Web-Server, Web-Asp-Net45
二、应用程序发布
2.1 在 Visual Studio 中发布
1. 右键点击项目 → "发布"
2. 选择发布目标:
- 文件系统
- FTP
- Web Deploy
3. 配置设置:
- 配置:Release
- 目标框架:对应版本
- 部署模式:框架依赖/独立
4. 点击"发布"生成文件
2.2 手动构建发布
# 使用 MSBuild
msbuild YourProject.csproj /p:Configuration=Release /p:DeployOnBuild=true /p:PublishProfile=FileSystem
# 或使用 dotnet CLI(.NET Core)
dotnet publish -c Release -o ./publish
三、IIS 配置步骤
3.1 创建应用程序池
1. 打开 IIS 管理器
2. 右键"应用程序池" → "添加应用程序池"
3. 配置:
- 名称:YourAppPool
- .NET CLR 版本:v4.0.30319
- 托管管道模式:集成模式(推荐)
- 标识:ApplicationPoolIdentity(默认)
3.2 创建网站/应用程序
1. 右键"网站" → "添加网站"
2. 配置:
- 网站名称:YourSite
- 物理路径:指向发布文件夹
- 绑定:
* 类型:http/https
* IP地址:全部未分配
* 端口:80(或自定义)
* 主机名:可选
3. 或作为现有站点的应用程序:
- 右键默认网站 → "添加应用程序"
- 别名:YourApp
- 应用程序池:选择刚创建的池
- 物理路径:发布文件夹
3.3 权限配置
# 给应用程序池标识授予访问权限
icacls "C:\YourPublishPath" /grant "IIS AppPool\YourAppPool:(OI)(CI)(RX)"
# 或给 IIS_IUSRS 组
icacls "C:\YourPublishPath" /grant "IIS_IUSRS:(OI)(CI)(RX)"
四、重要配置检查
4.1 处理程序映射
1. 确保 ASP.NET 处理程序存在:
- 扩展名:.mvc(如有自定义路由)
- 处理程序:ExtensionlessUrlHandler-Integrated-4.0
2. 如果需要,添加通配符映射:
- 请求路径:*
- 模块:IsapiModule
- 可执行文件:C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll
- 名称:Wildcard
4.2 MIME 类型(静态文件支持)
添加(如不存在):
- .json application/json
- .woff application/font-woff
- .woff2 application/font-woff2
五、Web.config 配置要点
5.1 system.webServer 配置
<system.webServer>
<modules runAllManagedModulesForAllRequests="true" />
<handlers>
<remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" />
<remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" />
<remove name="ExtensionlessUrlHandler-Integrated-4.0" />
<add name="ExtensionlessUrlHandler-Integrated-4.0"
path="*."
verb="*"
type="System.Web.Handlers.TransferRequestHandler"
preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>
</system.webServer>
5.2 错误页面配置
<system.web>
<customErrors mode="RemoteOnly" defaultRedirect="~/Error">
<error statusCode="404" redirect="~/NotFound" />
<error statusCode="500" redirect="~/Error" />
</customErrors>
</system.web>
六、常见问题解决
6.1 权限问题
症状:HTTP Error 401.3 - Unauthorized
解决:
1. 检查文件夹权限
2. 检查应用程序池标识
3. 启用匿名身份验证
6.2 处理程序问题
症状:HTTP Error 404.0 - Not Found
解决:
1. 确认 .NET 版本正确
2. 检查处理程序映射
3. 安装 ASP.NET 功能
6.3 静态文件无法访问
症状:CSS/JS/图片无法加载
解决:
1. 检查静态文件处理程序
2. 确认 MIME 类型
3. 检查文件权限
七、验证部署
7.1 测试步骤
# 1. 浏览器访问
http://localhost/YourApp
# 2. 检查日志
位置:C:\inetpub\logs\LogFiles
# 3. 事件查看器
Windows 日志 → 应用程序
7.2 启用详细错误
1. IIS 管理器 → 错误页面
2. 右键 → "编辑功能设置"
3. 选择"详细错误"
八、优化建议
8.1 性能优化
<!-- web.config -->
<system.web>
<compilation debug="false" />
<httpRuntime targetFramework="4.5" maxRequestLength="10240" />
</system.web>
8.2 安全配置
1. 移除敏感文件(如 .cs, .config)
2. 配置请求筛选
3. 启用动态 IP 限制
4. 设置适当的 HTTP 响应头
快速部署脚本示例
# 自动部署脚本
Import-Module WebAdministration
# 创建应用程序池
New-WebAppPool -Name "MvcAppPool" -Force
Set-ItemProperty "IIS:\AppPools\MvcAppPool" managedRuntimeVersion "v4.0"
# 创建应用程序
New-WebApplication -Name "MyMvcApp" `
-Site "Default Web Site" `
-PhysicalPath "C:\Publish\Output" `
-ApplicationPool "MvcAppPool"
# 设置权限
$acl = Get-Acl "C:\Publish\Output"
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule("IIS AppPool\MvcAppPool", "ReadAndExecute", "ContainerInherit,ObjectInherit", "None", "Allow")
$acl.AddAccessRule($rule)
Set-Acl "C:\Publish\Output" $acl
按照以上步骤操作,通常可以成功在 IIS 7.5 上部署 ASP.NET MVC 应用程序。如果遇到特定问题,请查看 Windows 事件查看器和 IIS 日志获取详细信息。