东海县本地信息网

IIS 7.5上发布Asp.net web Mvc程序详细步骤

2026-03-29 23:49:02 浏览次数:1
详细信息

一、前期准备

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 日志获取详细信息。

相关推荐