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的发布,微软推出了一款全新的.NET Core HTTP客户端。新客户端使得调用WEB API变得更加简单。本文将介绍如何使用新客户端提交文件至服务器。 通常情况下,我们调用Web API时不需要提交二进制文件。但是在新客户端中,我们应该如何向服务器提交文件呢?首先,我们需要了解HTTP POST请求带文件与表单URL编码内容的不同之处。表单通过一些边界进行划分,边界名称在HTTP头部的内容类型中指定。 要从.NET Core HTTP客户端提交文件,可以使用`MultipartFormDataContent`,这样框架就可以处理多部分内容。然后,通过添加新的流内容将文件添加到表单中。此外,您还可以向表单中添加其他内容,如URL编码的内容。最后,提交表单。 本文提供的示例代码展示了如何使用新的HTTP客户端提交文件至服务器。在这个过程中,您可能会遇到一些有趣的问题,例如如何处理多个文件的上传,或者如何在提交文件的同时提交其他类型的数据。文章内容将引导您探索这些问题,并帮助您找到合适的解决方案。--GPT 4

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

Bootstrap dark theme minimum style

With the increasing popularity of dark mode in mobile apps and websites, it's essential to adapt your Bootstrap-based website to support this feature. This blog post discusses a simple method to enable automatic dark theme switching with minimal changes to your existing website. Using media queries in CSS, you can easily detect if the current device is set to dark mode and apply the appropriate styles. Similarly, with JavaScript, you can detect dark mode and execute specific actions. The blog provides code snippets to accomplish these tasks, including monitoring dark mode status changes and modifying elements' classes based on the user's preference. However, detecting dark mode alone is not enough. You also need to modify some styles for specific elements like input fields. The blog provides a list of CSS rules to be applied when the dark mode is enabled, ensuring a seamless and visually appealing experience for users who prefer the dark theme. By implementing this method, you can ...--GPT 4

Web CSS Bootstrap Media Query Style Dark theme

Microsoft account integrated sign in via C#

本篇博客介绍了如何通过C#实现Microsoft账户的集成登录。首先,需要在Microsoft Azure Portal创建一个应用程序,并获取客户端ID和客户端密钥。接下来,通过运行`$ dotnet add package Aiursoft.XelNaga`安装所需的类库。 为了验证用户身份,我们需要将用户重定向到Microsoft登录门户。博客提供了相应的C#代码,实现了`GetBindRedirectLink()`方法。通过返回浏览器的“重定向结果”并使用`GetBindRedirectLink()`函数作为重定向URL,用户将被引导至登录页面。 用户成功登录后,将会被重定向回您设置的`RedirectUri`,并附带一个代码。通过该代码,您可以调用`GetUserDetail()`方法获取用户的详细信息。 博客还提供了`GetAccessToken()`方法,用于获取有效的访问令牌,以便下载用户个人资料。当您拥有访问令牌后,只需调用`GetUserInfo()`方法,我们将调用Graph API获取当前用户信息。 返回的用户是`MicrosoftUserDetail`实例,其中包含用户的ID、显示名称、用户主体名称和职位等信息。用户ID是唯一的,可用于识别您的用户。 最后,构建一个自定义网页,您的应用程序便可投入使用。博客还提供了源代码链接以供参考。 本篇博客详细介绍了如何通过C#实现Microsoft账户的集成登录,为开发者提供了详细的代码示例和解释。那么,如何将这种集成登录应用到其他类型的应用程序中呢?如何确保用户数据的安全性?希望本文能为您提供启示和灵感。--GPT 4

ASP.NET Core Azure Microsoft OAuth Login Authentication

How to write a bot for Kahla

本篇博客讲述了如何使用Kahla.SDK编写一个Kahla机器人。首先,确保已安装.NET Core SDK。接下来,创建一个新的控制台.NET Core应用,然后为Kahla.SDK添加依赖项。接着创建一个新的C#类,继承`BotBase`类并重写默认的`OnMessage`方法。修改`Program.cs`以启动机器人,然后执行命令以启动机器人。在启动机器人后,使用另一个帐户与之交谈即可。 除此之外,博客还提供了关于依赖注入和高级启动的额外信息。Kahla.Bot支持自定义启动配置,修改`Program.cs`以使用高级启动,并创建一个名为`StartUp`的新类。通过这个类,可以添加自己的服务和配置全局设置。 这篇博客为你提供了一个简单易懂的教程,帮助你编写自己的Kahla机器人。现在,你是否已经跃跃欲试,想要创建一个自己的机器人?你会如何利用这些知识去创造一个有趣且实用的机器人呢?--GPT 4

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

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

本文主要讲述了如何在C#中获取腾讯云直播的推流地址和观看地址。由于腾讯云官方只提供了Java和PHP的代码示例,作者首先研究了Java代码中txTime参数的含义,发现其实际上是从1970年到现在的总秒数。接下来,作者通过计算MD5、拼接字符串和转换十六进制等操作,使用C#实现了获取安全URL的功能。 在代码实现中,首先定义了一些常量,包括腾讯云直播的推流域名、播放域名、密钥等。然后,通过GetSafeUrl方法计算安全URL,其中涉及到将日期时间转换为Unix时间戳、计算MD5等操作。最后,将推流地址、观看地址等信息输出到控制台。 通过本文的介绍,读者可以了解到如何在C#环境下实现获取腾讯云直播的推流地址和观看地址的功能,从而在实际项目中实现对接腾讯云直播的需求。那么,除了腾讯云直播,还有哪些其他直播平台可以实现类似功能呢?如何选择适合自己项目的直播解决方案?希望读者在阅读本文后,能够对这些问题有所启发。--GPT 4

C# .NET Core Tencent Cloud Live Streaming China

Use IIS or Azure App Service as a reverse proxy

In this blog post, we explore the process of setting up a reverse proxy using IIS or Azure App Service. Reverse proxies are beneficial for hiding the origin server's identity and improving performance, security, and load balancing. Before configuring the reverse proxy, it's essential to install IIS and the necessary extensions, such as RequestRouter and Rewrite. Once installed, enable the proxy settings in the IIS management tools and create a new reverse proxy rule by configuring domain bindings and HTTPS certificates. Creating a web.config file under the site root path is crucial for adding rules, such as redirecting HTTP traffic to HTTPS and setting up the real reverse proxy logic. The blog post provides a detailed example of setting up a reverse proxy for Aiursoft.IO and a simpler example for Google.com. To further enhance security, the HSTS feature can be enabled by adding specific code to the web.config file. For deploying the reverse proxy server to Azure App Service, simply ...--GPT 4

IIS web.config Reverse Proxy Web Azure App Service Azure

Share view component between different ASP.NET Core web project

在本篇博客中,我们将探讨如何在不同的ASP.NET Core Web项目之间共享视图组件。当C#中的某些逻辑可以在多个项目之间共享时,我们通常会创建一个新的类库项目。但有时我们只想共享一些视图组件,例如,在`Aiursoft`的所有页面中,它们都包含一个`Logout`组件。多次编写这个组件显然是没有意义的。那么我们如何共享它呢? 首先,我们需要创建一个新的`.NET Core`类库项目,并将其命名为`Aiursoft.Pylon`。接下来,确保你的共享类库支持Razor。修改`csproj`文件以添加属性: <AddRazorSupportForMvc>true</AddRazorSupportForMvc> 现在,你的`Aiursoft.Pylon`项目已经支持编写Razor类库了。我们可以开始编写一个新的视图组件。将所有视图组件放在`Views/Shared/Components`文件夹下。要编写视图组件,请参考以下文档: [https://docs.microsoft.com/en-us/aspnet/core/mvc/views/view-components](https://docs.microsoft.com/en-us/aspnet/core/mvc/views/view-components) 完成视图组件编写后,你的文件夹应如下所示: ![](/image/img-22d1ae24-0e8c-4abd-b970-214b6fe25b45.png) 现在你的视图组件已经完成,可以在多个项目之间共享了。接下来,创建一个引用你的类库的新Web项目。 ![](/image/img-5f7db548-fe96-43da-962d-016ec2904d62.png) 现在我们将从类库中导入所有视图组件到新的Web项目。修改`_ViewImports.cshtml`以添加类似如下的命名空间: ![](/image/img-1cf766d4-bdb7-4f73-bf12-03732a5c7286.png) 现在你可以在视图中使用共享的视图组件了。如下所示: ![](/image/img-64ede323-6c78-4d7f-833c-cca2bcd60228.png) 如果你的代码以深绿色显示,那么一切正常,你的视图组件可以成...--GPT 4

ASP.NET Core C# class library View component

Limit ASP.NET Core request frequency by IP address

在默认情况下,用户可以无限制地请求ASP.NET Core Web服务器。用户可能会频繁地请求我们的Web服务器并提交大量垃圾数据。此外,过于频繁的请求可能是一种可怕的攻击,可能导致我们的服务中断和大量的金钱损失。 那么我们如何根据IP地址对请求进行分组,限制用户请求的频率,并返回错误信息呢? 已经有一个很好的限制请求速率的库,叫做AspNetCoreRateLimit。 GitHub: [https://github.com/stefanprodan/AspNetCoreRateLimit](https://github.com/stefanprodan/AspNetCoreRateLimit) 但是,这个库太重了,无法通过控制器和操作进行过滤。我必须写一个更简单的库。 首先,编写一个属性: public class LimitPerMin : ActionFilterAttribute {...} 这个属性将在字典中保存所有IP请求频率。如果一个IP匹配我们的限制,就返回`(int)HttpStatusCode.TooManyRequests`。 要使用此属性,只需将其添加到您的控制器或操作中,如下所示: namespace Aiursoft.Account.Controllers { [LimitPerMin] public class AccountController : Controller { } } 当用户尝试在我们的限制范围内请求我们的服务器时,服务器将成功响应以下头信息: 1. x-rate-limit-limit: 1m 2. x-rate-limit-remaining: 30 默认限制是每分钟30个请求。用户在一分钟内无法发送更多请求,否则将被拒绝。 如果您想覆盖默认限制,请像这样使用它: [LimitPerMin(20)] 本文介绍了如何使用ASP.NET Core实现IP地址限制请求频率的方法,通过编写一个简单的属性,可以有效地限制用户请求的频率并返回错误信息。文章还介绍了如何将此属性应用于控制器或操作,以及如何覆盖默认限制。那么,如何根据实际需求进一步优化限制策略呢?在实际应用中,如何确保这...--GPT 4

ASP.NET Core .NET Core IP HTTP

Using IIS and web.config to support large file upload

本篇博客讨论了如何使用IIS和web.config来支持大文件上传。默认情况下,IIS Web服务器允许上传有限大小的文件。对于IIS 6和IIS 7,最大文件上传大小分别为4MB和28.6MB。如果有人上传超过30MB的文件,IIS 7会返回一个404错误。为了允许更大文件大小的上传,需要进行一些服务器更改。 更改web.config文件可能会解决此问题。但有时我们只想在发布构建时生成web.config文件,并继续使用默认生成的web.config文件。我们需要将默认生成的web.config文件转换为支持它的文件。 在web.config旁边放一个名为web.Release.config的文件,填充相应内容。发布构建后,您会发现web.config文件支持大文件上传。但您可能会遇到另一个问题,当您请求带有URL编码参数的路径时,服务器可能会返回404。要解决这个问题,您还需要转换web.config文件,尝试使用以下配置。 通过本篇博客,您将学会如何使用IIS和web.config来支持大文件上传,以及如何解决可能遇到的一些问题。这将有助于您在实际应用中更好地处理大文件上传的需求。那么,如何充分利用这些配置来优化您的服务器性能呢?--GPT 4

IIS web.config ASP.NET ASP.NET Core