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, 代码分析, 凭证管理, 后端开发, 多模态安全, 文件解析, 静态前端