Anduin Xue
Anduin Xue

Anduin's Tech Blog

All Posts


How to run async method in C# synchronous method

本文探讨了C#中同步方法调用异步方法的实现方案及其潜在影响。当开发者在构造函数接口方法或抽象类方法中遇到无法使用await关键字的限制时AsyncHelper工具类提供了一种突破同步与异步边界的技术方案通过TaskFactory的StartNewUnwrapGetResult组合操作实现了同步上下文中对异步任务的阻塞等待。示例展示了如何通过RunSync方法直接调用异步函数并获取返回值同时保持代码的可读性。这种技术虽然解决了特定场景下的调用需求但引发了一个值得深思的问题:当同步等待异步任务时是否违背了异步编程的本质?开发者在享受这种解决方案便利性的同时需要权衡线程阻塞对程序性能的影响。文章最后延伸提出了两个实践方向:无需等待的后台任务执行方案与基于线程池的任务队列管理机制。这些技术选择背后是否隐藏着更深层次的架构设计哲学?如何在同步与异步之间找到最合适的平衡点?--Qwen3

C# .NET Core Async await async method constructor

Consolidate all Entity-Framework database migrations to one migration

这篇文章探讨了如何在Entity Framework Core中通过合并数据库迁移以解决迁移文件过多导致的性能问题。当代码重构或迁移文件积累影响编辑器响应时开发者可能需要重置迁移历史但直接删除代码文件会导致数据库更新失败。文章提出了一种在保留数据前提下将所有迁移合并为单个"Init"迁移的策略包括删除迁移文件清空迁移历史表生成新迁移并临时注释迁移方法通过数据库更新记录虚拟历史再恢复代码逻辑的完整流程。该方案特别强调了多环境部署场景下需要逐个数据库重复操作的注意事项同时提醒开发者在操作前必须进行数据备份。通过这种"历史重写"的方式开发者可以将复杂的迁移历史简化为单一入口但这种方法也带来了数据一致性风险和部署流程复杂度的权衡。当面对微服务架构中的多数据库场景时如何在保持迁移灵活性与维护成本之间取得平衡这个问题值得每个使用EF Core的开发者深入思考。--Qwen3

ASP.NET Core C# .NET Core Entity Framework SQL Server EF Core

Upgrade existing class library to .NET Core 3.0

在.NET Core 3.0升级过程中如何避免框架引用冲突与语言特性陷阱?当传统类库迁移到新版本时TargetFramework设置可能引发NETSDK1080警告揭示了框架依赖管理的深层逻辑——Web项目必须使用Microsoft.NET.Sdk.Web SDK自动继承共享框架而Razor库需显式声明FrameworkReference并启用AddRazorSupportForMvc属性非Web项目则需谨慎评估是否需要引入ASP.NET Core框架。这种差异化的处理方式背后暗含着.NET生态对模块化设计的哲学思考:框架依赖究竟应该隐式继承还是显式声明?当C# 8.0新特性在旧版语言版本下报错CS8107时LangVersion配置的必要性提醒我们技术升级不仅是功能迭代更是开发规范的重构。这些看似零散的技术细节实则构成了现代.NET开发的核心认知框架:如何在SDK魔版化与手动配置之间找到平衡点?当框架引用与语言特性产生耦合时开发者应该如何构建可维护的依赖关系图谱?升级过程中的每个警告代码都像是技术债务的预警信号引导我们重新审视代码架构的深层设计逻辑。--Qwen3

C# class library .NET Core .NET Core 3.0 PackageReference FrameworkReference

Using IIS and web.config to support large file upload

本文探讨了如何通过IIS配置和web.config文件实现大文件上传的支持并解决相关技术难题。当尝试上传超过IIS默认限制的文件时会遇到HTTP 404.13错误但通过调整`web.config`中的`maxRequestLength`和`maxAllowedContentLength`参数可以突破4MB到28.6MB的默认限制。文章重点介绍了如何利用`web.Release.config`文件实现配置的自动化转换仅在发布构建时注入大文件上传支持配置而保持开发环境的默认设置。同时针对URL双重转义导致的404.11错误提出了`allowDoubleEscaping="true"`的解决方案。这种基于配置文件的动态调整机制展现了Web部署的灵活性但同时也引发了一个值得思考的问题:当服务器配置与客户端请求规范存在潜在冲突时我们该如何在安全性和功能性之间找到最佳平衡点?或许在处理类似技术问题时开发者可以尝试从HTTP协议规范与服务器实现机制的协同角度寻找更优雅的解决方案。--Qwen3

IIS web.config ASP.NET ASP.NET Core File Upload HTTP Errors

How to connect Azure Media Player statistic info to Power BI embed

文章详细介绍了将Power BI内容嵌入网页的完整流程包括数据准备创建报告配置嵌入设置生成访问令牌以及JavaScript加载和过滤操作首先通过Power BI Desktop设计报告并发布到服务然后利用Power BI REST API和.NET SDK获取报告的GroupID和ReportID并使用Azure AD获取访问令牌生成嵌入所需的EmbedToken接着通过JavaScript的powerbi.js库在网页中创建EmbedConfig配置对象包含访问令牌嵌入URL和报告ID最后通过添加过滤器配置实现动态数据筛选整个过程涉及关键代码如TokenCredentials的创建Reports.GetReportsInGroupAsync获取报告列表GenerateTokenInGroup生成嵌入令牌以及JavaScript中powerbi.embed方法的调用同时展示了如何通过filters数组传递表名列名和筛选值实现动态过滤全文核心在于通过API和前端库结合完成Power BI内容的嵌入与交互控制--Qwen3

Power BI Azure Media Player Application Insights Azure Power BI Embedded JavaScript API

How to fix SQL Server database suspect status

这篇博客深入探讨了SQL Server数据库进入可疑状态的修复方法首先分析了导致数据库不可用的常见原因包括文件访问权限问题事务中断防病毒软件干扰以及电源不稳定等因素随后提出系统性解决方案强调必须优先排查根本原因如检查磁盘空间更新系统修复权限问题等在完成基础问题处理后博客详细拆解了十步修复流程从设置紧急模式到执行DBCC检查从单用户模式修复到多用户恢复再到数据验证与备份每个步骤都需谨慎操作尤其在涉及数据丢失风险时需权衡修复策略博客特别指出REPAIR_ALLOW_DATA_LOSS选项可能带来的数据损毁风险同时提醒修复后需多次验证数据库状态并考虑通过备份还原解决残留问题最后通过FAQ解答了单用户模式下连接冲突的处理方法提出如何强制终止其他进程确保独占操作的技巧整篇文章不仅提供技术路线更引发读者思考:当数据库遭遇不可预见故障时如何平衡修复速度与数据完整性?在自动化修复流程中哪些人为干预环节最可能影响最终结果?面对关键业务数据丢失风险企业是否建立了完善的预防机制和应急响应预案?--Qwen3

SQL Server SSMS SQL Suspect Status Database Repair DBCC CHECKDB