diff --git a/Docs/1.3.4.基础使用.处理错误.ipynb b/Docs/1.3.4.基础使用.处理错误.ipynb
index 7656438..e77ccbe 100644
--- a/Docs/1.3.4.基础使用.处理错误.ipynb
+++ b/Docs/1.3.4.基础使用.处理错误.ipynb
@@ -11,7 +11,14 @@
}
},
"source": [
- "# HttpClient 使用原则"
+ "# HttpClient 处理错误与异常"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "根据客户端的创建方法不周,有不同的错误与异常处理方式。推荐类型化客户端、工厂和Polly库中统一处理!"
]
},
{
@@ -28,7 +35,147 @@
}
},
"source": [
- "## 1、复用"
+ "## 初始化"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {
+ "polyglot_notebook": {
+ "kernelName": "csharp"
+ },
+ "vscode": {
+ "languageId": "polyglot-notebook"
+ }
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/markdown": [
+ "## 初始化\n",
+ "这是全局共用文件,包括Nuget包引用、全局类库引用、全局文件引用、全局命名空间引用、全局变量、全局方法、全局类定义等功能。\n",
+ "\n",
+ "在业务笔记中引用,执行其它单元格之前先执行一次。"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ "
Installed Packages- Microsoft.Extensions.DependencyInjection, 9.0.4
- Microsoft.Extensions.Http, 9.0.4
- Microsoft.Extensions.Http.Polly, 9.0.4
- Microsoft.Extensions.Logging, 9.0.4
- Microsoft.Extensions.Logging.Console, 9.0.4
- Microsoft.Net.Http.Headers, 9.0.4
- Polly, 8.5.2
- Refit, 8.0.0
- Refit.HttpClientFactory, 8.0.0
- System.Net.Http.Json, 9.0.4
"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "配置文件根目录:c:\\Users\\ruyu\\Desktop\\HttpClientStudy\\Docs\\Publish\\HttpClientStudy.Core\n",
+ "配置文件根目录:c:\\Users\\ruyu\\Desktop\\HttpClientStudy\\Docs\\Publish\\HttpClientStudy.Core\n",
+ "启动WebApi项目...\n",
+ "程序[c:\\Users\\ruyu\\Desktop\\HttpClientStudy\\Docs\\Publish\\HttpClientStudy.WebApp\\HttpClientStudy.WebApp.exe]已在新的命令行窗口执行。如果未出现新命令行窗口,可能是程序错误造成窗口闪现!\n",
+ "已启动WebApi项目,保持窗口打开状态!\n",
+ "初始化完成!\n"
+ ]
+ }
+ ],
+ "source": [
+ "#!import ./Ini.ipynb"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## 常规方法 try catch"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "直接实例化客户端时,可以用`Try Catch`简单处理,这种是最不推荐的方式!"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "polyglot_notebook": {
+ "kernelName": "csharp"
+ },
+ "vscode": {
+ "languageId": "polyglot-notebook"
+ }
+ },
+ "outputs": [],
+ "source": [
+ "/*\n",
+ " 每次请求都实例化:并发量大、请求频繁进会耗尽套接字端口\n",
+ "*/\n",
+ "{ \n",
+ " var baseUrl = WebApiConfigManager.GetWebApiConfig().BaseUrl;\n",
+ "\n",
+ " using(var client = new HttpClient())\n",
+ " {\n",
+ " //发送请求\n",
+ " var response = await client.GetAsync(baseUrl);\n",
+ " response.EnsureSuccessStatusCode();\n",
+ " }\n",
+ "\n",
+ " //显示句柄\n",
+ " var displayValue = display($\"第 0 次请求,成功!\");\n",
+ "\n",
+ " for(int i=0;i<10;i++)\n",
+ " {\n",
+ " using(var client = new HttpClient())\n",
+ " {\n",
+ " var response = await client.GetAsync(baseUrl);\n",
+ " response.EnsureSuccessStatusCode();\n",
+ " displayValue.Update($\"第 {i+1} 次/ 共 10 次请求,成功!\");\n",
+ " }\n",
+ " }\n",
+ "}"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## 静态或工具类中处理"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## 类型化客户端中处理"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## 在管道中,添加异常中间件"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## 工厂模式中统一处理"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Polly库处理"
]
}
],