Anduin Xue
Anduin Xue

Anduin's Tech Blog

Web Development Topics about web development


HTTP post file from .NET Core new HTTP client

这篇文章介绍了.NET Core 3中全新HTTP客户端处理文件上传的实践方法。当开发者需要通过HTTP POST请求提交二进制文件时,会发现与常规表单数据存在本质差异——multipart/form-data格式的边界划分特性要求特殊的处理方式。作者通过对比传统表单编码与文件上传的差异,揭示了MultipartFormDataContent组件的核心价值:它能够自动生成符合RFC 7578规范的多段内容结构,同时智能处理边界字符串生成和内容分段编码。通过StreamContent包装文件流并添加到formData集合中,开发者可以轻松构建包含文件和其他表单字段的混合请求体。这种设计不仅简化了文件上传的实现复杂度,更展现了.NET Core对HTTP语义的深度封装能力。当思考现代Web服务中文件传输的演进方向时,我们不禁要问:在Server-Sent Events和WebSockets盛行的今天,这种基于HTTP的流式上传方式是否仍然具备不可替代的优势?当面对PB级大文件传输需求时,这些封装好的API能否支撑更底层的自定义协议扩展?或许答案就藏在对HTTP语义的重新解构中。--Qwen3

ASP.NET Core C# .NET Core HTTP Web File HTTP Client POST

Bootstrap dark theme minimum style

随着苹果和安卓系统对暗色模式的广泛支持,网站适配暗色主题已成为用户体验的关键需求。本文提出了一种基于Bootstrap框架的最小化样式解决方案,通过CSS媒体查询`@media (prefers-color-scheme: dark)`和JavaScript的`matchMedia`方法,实现对用户系统暗色模式设置的自动检测。当检测到暗色模式时,通过动态切换`.navbar-light`到`.navbar-dark`、添加`.bg-dark`背景类等操作,仅需修改少量核心元素的样式即可完成主题切换。然而这种方案仍需针对输入框、表单控件等特定元素额外编写CSS覆盖默认样式,例如通过`!important`强制覆盖Bootstrap的亮色主题样式。尽管代码实现了基础功能,但如何平衡样式覆盖带来的兼容性问题,是否可以通过更优雅的方式实现主题切换而非逐个元素手动处理,以及如何设计用户自定义主题的优先级机制,这些问题仍值得深入探讨。当系统暗色模式与用户个性化偏好产生冲突时,我们是否应该为网站提供独立的主题切换开关?或许答案就藏在代码之外的设计哲学里。--Qwen3

Web CSS Bootstrap Media Query Style Dark theme

Microsoft account integrated sign in via C#

这篇博客详细解析了如何通过C#实现Microsoft账户集成登录的完整开发流程。文章从Azure门户创建应用开始,展示了如何配置租户权限与重定向URI的关键设置步骤,特别强调了应用ID与密钥的生成与管理机制。通过代码示例演示了OAuth2.0授权码流程的核心实现,包括构建授权请求链接、处理回调代码、获取访问令牌及调用Graph API获取用户信息的完整链路。文章创新性地结合Aiursoft.XelNaga库的AiurUrl工具类,展示了如何优雅构建API请求并处理响应数据,最终通过MicrosoftUserDetail类解析用户核心信息字段。整个过程不仅提供了标准实现方案,更通过代码注释与异常处理机制的展示,揭示了实际开发中可能遇到的认证失败场景处理策略。文章最后抛出值得思考的问题:当企业需要同时支持多租户场景时,如何通过微软认证体系实现灵活的账户隔离?当用户信息需要扩展时,如何通过Graph API的其他接口获取更多数据维度?这些开放性问题为读者提供了延伸思考的空间,而附带的GitHub源码链接则为实践提供了直接的技术落地方向。--Qwen3

ASP.NET Core Azure Microsoft OAuth Login Authentication

How to write a bot for Kahla

这篇博客详细介绍了如何通过Kahla.SDK快速构建一个功能强大的Kahla聊天机器人。文章从基础步骤入手,展示了如何在.NET Core环境中创建控制台应用并集成Kahla.SDK依赖,通过重写`OnMessage`方法实现消息的接收与响应,最终构建出一个能自动回复消息的回声机器人。开发者只需遵循五步流程即可完成基础功能开发,而高级配置部分则进一步扩展了依赖注入和自定义服务的可能性,允许通过`StartUp`类实现更复杂的全局配置。文章不仅提供了完整的代码示例,还通过运行截图直观展示了机器人的实际交互效果。值得关注的是,作者巧妙地将技术实现与应用场景结合,让读者思考:当机器人能够处理消息后,如何通过自然语言处理或机器学习赋予其更智能的对话能力?如何设计个性化交互逻辑以满足不同场景需求?当依赖注入机制被充分利用时,又能在服务层实现哪些创新功能?这些问题为读者打开了想象空间,而文章中提到的`bot.kahla.app`演示和GitHub示例仓库则为实践探索提供了起点。--Qwen3

C# .NET Core Aiursoft Kahla Bot Kahla.SDK Kahla App Console App

C#获取腾讯云直播的推流地址和观看地址

在技术实践中解决跨语言API适配难题时,腾讯云直播服务的C#推流地址生成方案揭示了开发者生态中的常见困境。当Java示例中的txTime参数成为理解障碍时,时间戳的1970纪元计算逻辑最终成为破解接口规则的关键线索。MD5安全校验与字符串拼接看似简单的技术动作,实则包含着对API文档缺失的深刻思考——当标准示例缺席时,开发者如何通过逆向思维构建跨语言解决方案?代码中Domain与PlayDomain的双重配置不仅体现了流媒体服务的分层架构,更暗示了实时音视频传输的复杂性:在RTMP、FLV、HLS协议并存的场景下,如何通过统一接口管理多协议适配?推流安全验证机制的实现方式,是否暗示着更广泛的云服务安全策略设计原则?当代码将时间戳转换为十六进制字符串,这个看似机械的转换过程是否隐含着对时间维度在数字世界中表达方式的哲学思考?推流地址生成背后隐藏的Unix时间戳计算、MD5加密、URL参数拼接等技术链条,是否预示着现代云服务接口设计中时间、安全与可用性三者间的微妙平衡?而最终输出的推流与播放地址,是否正在暗示着实时音视频传输领域更深层的技术演进方向?--Qwen3

C# .NET Core Tencent Cloud Live Streaming China Tencent Cloud Live

Use IIS or Azure App Service as a reverse proxy

这篇文章探讨了如何利用IIS或Azure App Service构建反向代理的实践路径,通过Aiursoft.IO案例展示了从零到实现反向代理的完整流程。文章揭示了IIS作为反向代理的核心依赖——RequestRouter和Rewrite模块的安装逻辑,并通过web.config文件的规则配置,演示了从强制HTTPS到动态域名路由的实现机制。特别值得关注的是在Azure App Service中通过applicationHost.xdt文件启用ARR服务的技巧,这种在共享环境中突破技术限制的实践方式值得深入思考。当构建web.config文件时通过正则表达式捕获子域名并重写请求路径的策略,不仅解决了缩短下载URL的需求,更启发我们思考如何利用规则引擎实现更复杂的路由逻辑。文章最后抛出一个值得探索的问题:当反向代理需要处理高并发流量时,如何通过规则优化和缓存策略平衡性能与安全性?这或许能引导读者重新审视现代应用架构中代理服务的定位与价值。--Qwen3

IIS web.config Reverse Proxy Web Azure App Service Azure

Share view component between different ASP.NET Core web project

在ASP.NET Core开发中如何高效复用视图组件成为提升代码质量的关键问题。当多个项目需要共享如用户退出功能的UI组件时重复开发不仅低效还容易引发维护难题。通过创建支持Razor的类库项目并遵循特定的文件结构可以突破项目间的壁垒实现跨工程的组件共享。核心在于将`AddRazorSupportForMvc`属性注入类库项目配置文件并严格遵循`Views/Shared/Components`的目录规范。当目标项目通过`_ViewImports.cshtml`引入命名空间后即可直接调用这些共享组件。这种架构设计不仅解决了代码冗余问题更揭示了模块化开发的新可能——如何通过组件粒度控制平衡复用与灵活性?当视图组件的复用边界扩展到跨解决方案的维度时又该如何设计版本管理和依赖控制策略?在组件共享的实践中我们是否忽略了对UI一致性与个性化需求的平衡?这些问题的探索或许能为现代Web应用的架构设计提供全新视角。--Qwen3

ASP.NET Core C# class library View component ViewComponents ClassLibrary

Limit ASP.NET Core request frequency by IP address

在默认配置下ASP.NET Core应用可能面临高频请求导致的资源耗尽风险用户通过自定义ActionFilterAttribute实现基于IP地址和请求路径的轻量级限流方案该方案通过字典存储访问计数结合定时清理机制有效控制每分钟请求上限同时在响应头中返回剩余配额和重试时间当请求超过预设阈值时返回429状态码并附带精准的重试间隔计算通过在控制器或特定Action上添加[LimitPerMin]属性即可启用默认限制30次/分钟的保护机制开发者还可通过参数自定义阈值该实现相较现有库更轻便且支持按接口路径细化限流策略但方案仍存在内存存储易丢失无法分布式部署等潜在问题如何将当前方案扩展到高并发场景下的集群部署?如何结合数据库持久化避免重启后计数重置?当请求量级达到百万级时字典操作是否成为性能瓶颈?这些技术挑战或许正是你深入阅读后需要思考的方向--Qwen3

ASP.NET Core .NET Core IP HTTP Rate Limiting IP Based

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