以下是将你开发的 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 功能"
- 按
Win + R,输入appwiz.cpl→ 回车(打开"程序和功能") - 左侧点击 "打开或关闭 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 中发布项目
- 右键你的 Web API 项目 → "发布"
- 发布方法:文件系统
- 目标位置:例如
C:\ImageServerApp - 配置:Release
- 点击 "发布"
发布后目录结构应类似:
C:\ImageServerApp\
├── bin\
│ ├── YourApp.dll
│ └── ...
├── Logs\ ← 日志目录(首次运行创建)
├── web.config
├── Global.asax
└── ...
步骤 2:设置图片存储目录(与配置一致)
-
默认你在
web.config中配置了:xml<appSettings> <add key="ImageFolder" value="C:\ImageServer" /> </appSettings> -
手动创建该目录:
cmdmkdir C:\ImageServer
四、配置 IIS 站点
步骤 1:打开 IIS 管理器
- 按
Win + R,输入inetmgr→ 回车
步骤 2:添加应用程序池(推荐)
- 左侧点击 "应用程序池"
- 右侧点击 "添加应用程序池..."
- 名称:
ImageServerAppPool - .NET Framework 版本:v4.0.30319(即 .NET 4.x)
- 托管管道模式:Integrated(集成)
- 名称:
- 点击 确定
步骤 3:添加网站或应用程序
方式 A:新建网站(推荐,独立端口)
- 右键 "网站" → "添加网站"
- 站点名称:
ImageServer - 物理路径:
C:\ImageServerApp - 绑定:
- 类型:
http - IP 地址:
全部未分配 - 端口:
8080(避免与 80 冲突)
- 类型:
- 应用程序池:选择
ImageServerAppPool
- 站点名称:
- 点击 确定
方式 B:作为默认网站的子应用程序(可选)
如果你已有网站在 80 端口,可添加为子应用(如
/images)
五、设置文件夹权限(关键!)
IIS 需要 读写权限 才能:
- 上传图片到
C:\ImageServer - 写入日志到
C:\ImageServerApp\Logs
步骤:
-
右键
C:\ImageServer→ 属性 → 安全 → 编辑 → 添加 -
输入:
IIS_IUSRS→ 点击 "检查名称" → 确定
-
勾选权限:
- 读取和执行
- 列出文件夹内容
- 读取
- 写入 ← 必须!(用于上传/删除)
-
对
C:\ImageServerApp也做同样操作(至少给 写入 权限用于日志)
✅ 权限不足是 90% 部署失败的原因!
六、配置 web.config(关键)
确保 C:\ImageServerApp\web.config 中包含:
xml
<configuration>
<appSettings>
<add key="ImageFolder" value="C:\ImageServer" />
<!-- 可选:清理 API 密钥 -->
<!-- <add key="CleanupApiKey" value="secret123" /> -->
</appSettings>
<system.web>
<compilation targetFramework="4.5" />
<httpRuntime targetFramework="4.5"
maxRequestLength="51200"
executionTimeout="300" />
</system.web>
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<modules runAllManagedModulesForAllRequests="true" />
<security>
<requestFiltering>
<!-- 允许上传大文件(单位:字节) -->
<requestLimits maxAllowedContentLength="52428800" />
</requestFiltering>
</security>
<handlers>
<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>
</configuration>
⚠️
maxAllowedContentLength单位是 字节(52428800 = 50 MB)
七、禁用应用池空闲超时(防止后台任务停止)
- IIS 管理器 → 应用程序池
- 右键你的
ImageServerAppPool→ 高级设置 - 找到 "闲置超时(分钟)" → 改为
0(永不回收) - 点击 确定
否则 IIS 会在 20 分钟无请求后回收应用,导致日志、上传等异常。
八、测试部署
1. 测试 Web API 是否运行
浏览器访问:
http://localhost:8080/
- 如果看到 XML 或错误,说明 Web API 已启动(默认无首页是正常的)
- 如果看到 IIS 欢迎页,说明端口冲突(改用 8080)
2. 测试上传(用 Postman 或 C# 客户端)
http
POST http://localhost:8080/api/image/upload
Content-Type: multipart/form-data
[上传一张 jpg 文件]
预期返回:
json
{ "fileName": "body_xxxx.jpg" }
3. 测试下载
http
GET http://localhost:8080/api/image/download?name=body_xxxx.jpg
应显示图片。
4. 测试清理(客户端调用)
http
DELETE http://localhost:8080/api/image/cleanup?maxAgeMinutes=5
返回:
json
{ "deleted": 0, "message": "成功删除 0 个过期图片" }
5. 查看日志
检查 C:\ImageServerApp\Logs\log_20251210.txt 是否有记录。
九、局域网访问(可选)
-
关闭 Windows 防火墙(测试用)或
-
添加入站规则 :
cmdnetsh advfirewall firewall add rule name="ImageServer" dir=in action=allow protocol=TCP localport=8080 -
其他电脑访问:
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 年终止支持,切勿暴露此服务到公网,仅限内网使用。
如需一键部署脚本或完整项目模板,可告知!