news 2025/12/22 10:47:41

WebApi 部署到win7 IIS详细步骤

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
WebApi 部署到win7 IIS详细步骤

以下是将你开发的ASP.NET Web API(.NET Framework)图片服务器部署到Windows 7 + IIS 7.5的完整、详细、可操作步骤。适用于你已实现的功能:


✅ 一、前提条件

1. 系统环境

  • 操作系统:Windows 7(专业版/企业版/旗舰版)
  • .NET Framework:4.5 或更高(Web API 需要 .NET 4.5+)
  • IIS:已启用(见下方“启用 IIS”)

❗ Windows 7 家庭版不支持 IIS,请确认你的版本。


二、启用 IIS 和 .NET 支持

步骤 1:打开“Windows 功能”

  1. Win + R,输入appwiz.cpl→ 回车(打开“程序和功能”)
  2. 左侧点击“打开或关闭 Windows 功能”

步骤 2:勾选以下功能

☑ Internet Information Services ├─ Web 管理工具 │ └─ IIS 管理控制台 └─ 万维网服务 ├─ 应用程序开发功能 │ ├─ ASP.NET 3.5(可选) │ └─ **ASP.NET 4.5** ← 必须勾选! ├─ 常见 HTTP 功能 │ ├─ 默认文档 │ ├─ 目录浏览 │ └─ 静态内容 └─ 安全性 ├─ 请求筛选 └─ Windows 身份验证(可选)

⚠️ 如果列表中没有 “ASP.NET 4.5”,说明你未安装 .NET Framework 4.5。

步骤 3:安装 .NET Framework 4.5(如未安装)

  • 安装后重启电脑

三、准备 Web API 应用

步骤 1:在 Visual Studio 中发布项目

  1. 右键你的 Web API 项目 →“发布”
  2. 发布方法:文件系统
  3. 目标位置:例如C:\ImageServerApp
  4. 配置:Release
  5. 点击“发布”

发布后目录结构应类似:

C:\ImageServerApp\ ├── bin\ │ ├── YourApp.dll │ └── ... ├── Logs\ ← 日志目录(首次运行创建) ├── web.config ├── Global.asax └── ...

步骤 2:设置图片存储目录(与配置一致)

  • 默认你在web.config中配置了:
    <appSettings><addkey="ImageFolder"value="C:\ImageServer"/></appSettings>
  • 手动创建该目录:
    mkdir C:\ImageServer

四、配置 IIS 站点

步骤 1:打开 IIS 管理器

  • Win + R,输入inetmgr→ 回车

步骤 2:添加应用程序池(推荐)

  1. 左侧点击“应用程序池”
  2. 右侧点击“添加应用程序池…”
    • 名称:ImageServerAppPool
    • .NET Framework 版本:v4.0.30319(即 .NET 4.x)
    • 托管管道模式:Integrated(集成)
  3. 点击确定

步骤 3:添加网站或应用程序

方式 A:新建网站(推荐,独立端口)
  1. 右键“网站”“添加网站”
    • 站点名称:ImageServer
    • 物理路径:C:\ImageServerApp
    • 绑定:
      • 类型:http
      • IP 地址:全部未分配
      • 端口:8080(避免与 80 冲突)
    • 应用程序池:选择ImageServerAppPool
  2. 点击确定
方式 B:作为默认网站的子应用程序(可选)

如果你已有网站在 80 端口,可添加为子应用(如/images


五、设置文件夹权限(关键!)

IIS 需要读写权限才能:

  • 上传图片到C:\ImageServer
  • 写入日志到C:\ImageServerApp\Logs

步骤:

  1. 右键C:\ImageServer属性安全编辑添加
  2. 输入:
    IIS_IUSRS
    → 点击“检查名称”→ 确定
  3. 勾选权限:
    • 读取和执行
    • 列出文件夹内容
    • 读取
    • 写入← 必须!(用于上传/删除)
  4. C:\ImageServerApp也做同样操作(至少给写入权限用于日志)

✅ 权限不足是 90% 部署失败的原因!


六、配置 web.config(关键)

确保C:\ImageServerApp\web.config中包含:

<configuration><appSettings><addkey="ImageFolder"value="C:\ImageServer"/><!-- 可选:清理 API 密钥 --><!-- <add key="CleanupApiKey" value="secret123" /> --></appSettings><system.web><compilationtargetFramework="4.5"/><httpRuntimetargetFramework="4.5"maxRequestLength="51200"executionTimeout="300"/></system.web><system.webServer><validationvalidateIntegratedModeConfiguration="false"/><modulesrunAllManagedModulesForAllRequests="true"/><security><requestFiltering><!-- 允许上传大文件(单位:字节) --><requestLimitsmaxAllowedContentLength="52428800"/></requestFiltering></security><handlers><removename="ExtensionlessUrlHandler-Integrated-4.0"/><addname="ExtensionlessUrlHandler-Integrated-4.0"path="*."verb="*"type="System.Web.Handlers.TransferRequestHandler"preCondition="integratedMode,runtimeVersionv4.0"/></handlers></system.webServer></configuration>

⚠️maxAllowedContentLength单位是字节(52428800 = 50 MB)


七、禁用应用池空闲超时(防止后台任务停止)

  1. IIS 管理器 →应用程序池
  2. 右键你的ImageServerAppPool高级设置
  3. 找到“闲置超时(分钟)”→ 改为0(永不回收)
  4. 点击确定

否则 IIS 会在 20 分钟无请求后回收应用,导致日志、上传等异常。


八、测试部署

1. 测试 Web API 是否运行

浏览器访问:

http://localhost:8080/
  • 如果看到 XML 或错误,说明 Web API 已启动(默认无首页是正常的)
  • 如果看到 IIS 欢迎页,说明端口冲突(改用 8080)

2. 测试上传(用 Postman 或 C# 客户端)

POST http://localhost:8080/api/image/upload Content-Type: multipart/form-data [上传一张 jpg 文件]

预期返回:

{"fileName":"body_xxxx.jpg"}

3. 测试下载

GET http://localhost:8080/api/image/download?name=body_xxxx.jpg

应显示图片。

4. 测试清理(客户端调用)

DELETE http://localhost:8080/api/image/cleanup?maxAgeMinutes=5

返回:

{"deleted":0,"message":"成功删除 0 个过期图片"}

5. 查看日志

检查C:\ImageServerApp\Logs\log_20251210.txt是否有记录。


九、局域网访问(可选)

  1. 关闭 Windows 防火墙(测试用)或
  2. 添加入站规则
    netsh advfirewall firewall add rule name="ImageServer" dir=in action=allow protocol=TCP localport=8080
  3. 其他电脑访问:
    http://你的Windows7电脑IP:8080/api/image/download?name=xxx.jpg

十、常见问题排查

问题解决方案
404 Not Found检查ExtensionlessUrlHandler是否在 web.config 中配置
500 Internal Error查看C:\ImageServerApp\Logs\或 Windows 事件查看器
上传失败(404/403)检查IIS_IUSRS是否有C:\ImageServer写权限
日志未生成检查C:\ImageServerApp\Logs是否有写权限
API 返回空白确保项目是Release模式发布,且bin目录有 DLL

✅ 总结

你现在拥有一个部署在Windows 7 IIS上的完整图片服务器,支持:

  • 客户端上传/下载/删除
  • 定时清理(由客户端触发)
  • 配置化目录
  • 本地日志排查

💡重要提醒:Windows 7 已于 2020 年终止支持,切勿暴露此服务到公网,仅限内网使用。

如需一键部署脚本或完整项目模板,可告知!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!