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
" + ] + }, + "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库处理" ] } ],