flying-YT/ProjectAnalyzerWebService
GitHub: flying-YT/ProjectAnalyzerWebService
ProjectAnalyzerWebService 是一个 .NET 9 Web 应用,能将上传的项目 ZIP 文件解析后汇总生成 Markdown 格式的分析报告并返回。
Stars: 0 | Forks: 0
# ProjectAnalyzerWebService
ProjectAnalyzerWebService 是一个 .NET 9 的 Web 应用程序,它可以解析上传的项目 ZIP 文件,并将解析结果汇总为 Markdown 文件以 ZIP 格式返回。
内部的解析处理使用了 `ProjectAnalyzer.Core` 库。
## 主要功能
- **项目解析**:接收包含源代码等内容的 ZIP 文件,解压并解析其内容。
- **各种选项配置**:在解析时可以指定以下标志。
- `omitCodeBlockTicks`
- `outputPerFile`
- `sanitizeHtmlTags`
- `removeIndent`
- `enableOcr`
- **Shift_JIS 支持**:为了防止在 Windows 环境下出现乱码,在解压和压缩 ZIP 文件时明确使用了 `Shift_JIS` 编码。
- **Web 前端**:通过放置在 `wwwroot` 文件夹中的静态文件(如 `index.html`),提供可以从浏览器轻松执行解析处理的 UI。
## 前提条件
- [.NET 9.0 SDK](https://dotnet.microsoft.com/download/dotnet/9.0)
## 本地运行方法
1. 克隆或下载仓库,在项目根目录(即包含 `.csproj` 的位置)打开终端。
2. 运行以下命令启动应用程序。
```
dotnet run
```
3. 打开浏览器,访问控制台中显示的 URL(例如:`http://localhost:5000`)以使用前端界面。
## API 端点
- **URL**: `POST /api/analyze`
- **Content-Type**: `multipart/form-data`
- **参数**:
- `file` (File): 待解析的 ZIP 文件
- `omitCodeBlockTicks` (Boolean)
- `outputPerFile` (Boolean)
- `sanitizeHtmlTags` (Boolean)
- `removeIndent` (Boolean)
- `enableOcr` (Boolean)
- **响应**:包含解析结果的 ZIP 文件 (`AnalysisResult.zip`)
## 部署到 IIS 的方法
以下是将此应用程序部署到 Windows 服务器 IIS (Internet Information Services) 的步骤。
### 1. 服务器的前提条件 (仅在首次部署时)
为了在 IIS 上运行 ASP.NET Core 应用程序,必须在服务器上安装专用模块。**仅在首次部署到 IIS 时**,请确认是否已安装以下内容,如果未安装,请进行安装。
- **IIS** (通过“启用 Windows 功能”安装)
- **[.NET 9.0 Hosting Bundle](https://dotnet.microsoft.com/download/dotnet/9.0)**
- 这是一个包含在 IIS 中托管 ASP.NET Core 应用程序的模块 (ANCM) 和 .NET 运行时的重要包。请从链接处下载并安装“ASP.NET Core Hosting Bundle”。
- **注意**:安装完成后,请在命令提示符(管理员)中运行 `net stop was /y` 和 `net start w3svc` 来重启 IIS 以使模块生效。
### 2. 应用程序的发布
在开发环境的命令提示符或终端中,切换到项目的根目录,并运行以下命令以生成已发布的文件。
```
dotnet publish ProjectAnalyzerWebService.csproj -c Release -o ./publish_output
```
这将生成部署所需的全部文件到 `publish_output` 文件夹中。
### 3. 文件放置
将生成的 `publish_output` 文件夹中的所有文件复制到 IIS 服务器上的任意发布文件夹(例如:`C:\inetpub\wwwroot\ProjectAnalyzer`)。
### 4. 在 IIS 中创建网站
1. 打开 IIS 管理器。
2. 在左侧的连接窗格中右键单击“网站”,然后选择“添加网站”。
3. 输入以下信息并单击“确定”。
- **网站名称**:任意名称(例如:`ProjectAnalyzerSite`)
- **物理路径**:在步骤 3 中放置文件的文件夹路径(例如:`C:\inetpub\wwwroot\ProjectAnalyzer`)
- **端口**:空闲端口(例如:`80` 或 `8080`)
### 5. 设置应用程序池 (重要)
由于 ASP.NET Core 应用程序不依赖于 IIS 的托管代码,因此需要更改应用程序池的设置。
1. 在 IIS 管理器左侧的窗格中选择“应用程序池”。
2. 右键单击与步骤 4 中创建的网站同名的应用程序池(例如:`ProjectAnalyzerSite`),然后选择“基本设置”。
3. 将 **.NET CLR 版本** 更改为 **“无托管代码”**,然后单击“确定”。
### 6. 运行验证
在浏览器中访问服务器的 URL(您设置的端口号),确认前端页面是否显示,以及 ZIP 文件的解析是否能正常进行。
## 关于上传大小的限制
上传较大的 ZIP 文件时,可能会显示如下所示的 IIS 错误页面。
这是 HTTP 404.13 (Request Filtering: Content length too large),当请求大小超过限制时,**由 IIS 在请求到达应用程序之前返回**。本应用的上传限制为 **100MB**,为实现此限制,我们配置了以下 3 处设置。如果需要更改限制,请确保将它们全部设置为相同的值。
| 限制层 | 设置位置 | 默认值 | 本应用的设置值 |
| --- | --- | --- | --- |
| IIS 请求过滤 | `web.config` 中的 `maxAllowedContentLength` | 30,000,000 字节 (≒28.6MB) | 104,857,600 字节 (100MB) |
| 应用程序 (Kestrel / IIS 进程内) | `Program.cs` 中的 `MaxUploadBytes` | 30,000,000 字节 (≒28.6MB) | 104,857,600 字节 (100MB) |
| 表单 | `Program.cs` 中的 `MaxUploadBytes` | 128MB | 104,857,600 字节 (100MB) |
### 更改限制的步骤
1. **应用程序端**:更改 [`Program.cs`](Program.cs) 开头的 `MaxUploadBytes`。这将同时更改 Kestrel、IIS 进程内(通过 `IHttpMaxRequestBodySizeFeature`)以及表单的限制。
2. **IIS 端**:将项目根目录下 [`web.config`](web.config) 中 `requestLimits` 的 `maxAllowedContentLength`(以字节为单位)更改为相同的值。
- 此 `web.config` 在发布 (`dotnet publish`) 时会自动转换为适用于 IIS 的版本,但 `requestFiltering` 的设置会被保留,因此**无需在每次重新发布时手动进行编辑**。
标签:Markdown, .NET 9, OCR, 代码分析, 凭证管理, 后端开发, 多模态安全, 文件解析, 静态前端