C# 13 和 .NET 9 全知道 :13 使用 ASP.NET Core 构建网站 (2)
一个只返回单一纯文本消息的网站并不是很有用!
至少,它应该返回静态 HTML 页面、网页将用于样式的 CSS 以及任何其他静态资源,例如图像和视频。
根据惯例,这些文件应存储在名为 wwwroot 的目录中,以将它们与您网站项目的动态执行部分分开。
您现在将为您的静态网站资源创建一个文件夹,并创建一个使用 Bootstrap 进行样式设计的基本索引页面:
- In the Northwind.Web project/folder, create a folder named wwwroot. Note that Visual Studio recognizes it as a special type of folder by giving it a globe icon, .
- 在 wwwroot 文件夹中,添加一个名为 index.xhtml 的新文件。(在 Visual Studio 中,项目项模板名为 HTML 页面。)
- 在 index.xhtml 中,修改其标记以链接到 CDN 托管的 Bootstrap 进行样式设置,并使用现代良好实践,例如设置视口,如以下标记所示:
- 良好实践:请访问以下链接查看最新版本:https://getbootstrap.com/docs/versions/。点击最新版本以进入其“开始使用 Bootstrap”页面。向下滚动页面到第 2 步,找到最新的 <link> 元素(以及在本章后面的 <script> 元素),您可以复制并粘贴。
Bootstrap 是全球最受欢迎的响应式、移动优先网站构建框架。您可以在以下链接阅读一个仅在线的部分,介绍 Bootstrap 的一些重要功能:https://github.com/markjprice/cs13net9/blob/main/docs/ch13-bootstrap.md。
- 在 wwwroot 文件夹中,添加一个名为 site.css 的文件并修改其内容,如下所示:
- 在 wwwroot 文件夹中,添加一个名为 categories.jpeg 的文件。您可以从以下链接下载它:https://github.com/markjprice/cs13net9/blob/main/code/images/Categories/categories.jpeg。
- 在 wwwroot 文件夹中,添加一个名为 about.xhtml 的文件并修改其内容,如下所示:
如果您现在启动网站并在地址框中输入 http://localhost:5130/index.xhtml 或 https://localhost:5131/index.xhtml ,网站将返回一个 404 Not Found 错误,表示未找到网页。为了使网站能够返回静态文件,例如 index.xhtml ,我们必须明确配置该功能。
即使我们启用了存储在 wwwroot 中的静态文件,如果您启动网站并在地址框中输入 http://localhost:5130/ 或 https://localhost:5131/ ,网站仍然会返回 404 Not Found 错误,因为如果没有请求命名文件,web 服务器不知道默认返回什么。
您现在将启用静态文件,显式配置默认文件,如 index.xhtml ,并更改注册的返回纯文本响应的 URL 路径:
- 在 Program.cs 中,在启用 HTTPS 重定向后添加语句以启用静态文件和默认文件。同时,修改将 GET 请求映射为返回包含环境名称的纯文本响应的语句,使其仅响应 URL 路径 /env ,如以下代码中突出显示的内容所示:
- ASP.NET Core 9 引入了 MapStaticAssets 方法,该方法自动压缩静态文件,从而减少带宽需求。对于 ASP.NET Core 8 及更早版本,您必须改为调用 UseStaticFiles 方法。您可以在以下链接中了解更多信息: https://learn.microsoft.com/en-us/aspnet/core/release-notes/aspnetcore-9.0#optimizing-static-web-asset-delivery。
警告!对 UseDefaultFiles 的调用必须在对 MapStaticAssets 或 UseStaticFiles 的调用之前,否则将无法正常工作!您将在本章末尾链接的在线部分中了解有关中间件和端点路由的顺序的更多信息。
- 启动网站。
- 启动 Chrome 并显示开发者工具。
- 在 Chrome 中输入 http://localhost:5130/ 。请注意,您被重定向到端口 5131 上的 HTTPS 地址,并且 index.xhtml 文件现在通过该安全连接返回,因为它是该网站的可能默认文件之一,并且是 wwwroot 文件夹中找到的第一个匹配项。
警告!如果您仍然看到环境名称为纯文本,请确保您将相对路径 /env 映射到该端点,而不仅仅是 / ,否则这将覆盖对 index.xhtml 文件的默认请求。
- 在 Chrome 中,输入 http://localhost:5131/about.xhtml ,注意网页被返回,并且它请求 site.css 文件,该文件应用了额外的样式。
- 在开发者工具中,注意对 Bootstrap 样式表的请求。
- 在 Chrome 中,输入 http://localhost:5130/env ,注意它返回的环境名称与之前的纯文本相同。
- 关闭 Chrome 并关闭网络服务器。
在.NET 9 中引入的 MapStaticAssets 通过整合构建和发布时的过程来收集应用程序中所有静态资源的数据。然后,运行时库使用这些数据高效地将这些文件提供给浏览器。
虽然 MapStaticAssets 通常可以直接替代 UseStaticFiles ,但它特别针对在构建和发布时已知的应用程序资产进行了优化。对于从其他位置提供的资产,例如磁盘或嵌入资源,仍应使用 UseStaticFiles 。
MapStaticAssets 相较于 UseStaticFiles 提供以下好处:
- 为应用中的所有资产构建时间压缩:gzip 在开发期间和 gzip + brotli 在发布期间。所有资产都经过压缩,目的是将资产的大小减少到最小。
- 每个资源的 ETag 是内容的 SHA-256 哈希的 Base64 编码字符串。这确保浏览器仅在文件内容发生变化时重新下载该文件。
作为一个例子,表 13.1 显示了使用 Fluent UI Blazor 组件库的原始和压缩大小,总共从 478 KB 未压缩到 84 KB 压缩:
表 13.1:MapStaticAssets 如何压缩 Fluent UI Blazor 组件
如果所有网页都是静态的(也就是说,它们仅由网页编辑手动更改),那么我们的网站编程工作就完成了。但几乎所有网站都需要动态内容,这意味着通过执行代码在运行时生成的网页。
最简单的方法是使用 ASP.NET Core 的一个功能,名为 Blazor staticSSR。但在此之前,让我们了解一下为什么您可能会在开发者工具等工具中看到您不期望的额外请求。
在开发者工具中,我们可以看到浏览器发出的所有请求。有些请求是你所期望的,例如:
- localhost : 这是网站项目中主页的请求。对于我们当前的项目,地址将是 http://localhost:5130/ 或 https://localhost:5131/ 。
- bootstrap.min.css : 这是对 Bootstrap 样式的请求。我们在主页上添加了对此的引用,因此浏览器随后发出了对样式表的请求。
某些请求仅在开发期间发出,并由您使用的代码编辑器确定。如果您在开发者工具中看到它们,通常可以忽略它们。例如:
- browserLink 和 aspnetcore-browser-refresh.js : 这些是 Visual Studio 发出的请求,用于将浏览器连接到 Visual Studio 进行调试和热重载。例如, https://localhost:5131/_vs/browserLink 和 https://localhost:5131/_framework/aspnetcore-browser-refresh.js 。
- negotiate?requestUrl , connect?transport , abort?Transport , 等等:这些是用于将 Visual Studio 与浏览器连接的附加请求。
- Northwind.Web/ : 这是一个与 SignalR 相关的安全 WebSockets 请求,用于将 Visual Studio 连接到浏览器: wss://localhost:44396/Northwind.Web/ .
现在您已经了解了如何设置一个基本的网站,并支持静态文件,如 HTML 网页和 CSS,让我们通过添加对动态生成的静态网页的支持来使其更有趣(当网页到达浏览器客户端时,它是静态的)。
ASP.NET Core 有多种技术用于动态生成静态网页,包括 Razor Pages 和模型视图控制器(MVC)Razor 视图。动态网页的最现代技术是 Blazor 静态 SSR 页面。但让我们首先回顾一下 Blazor 及其创建原因。
Blazor 让您使用 C# 而不是 JavaScript 构建交互式网页 UI 组件。Blazor 在所有现代浏览器上都受支持。
传统上,任何需要在网页浏览器中执行的代码必须使用 JavaScript 编程语言或一种更高级的技术编写,该技术会转译(转换或编译)为 JavaScript。这是因为所有浏览器已经支持 JavaScript 超过二十年,因此它是实现客户端业务逻辑的最低共同分母。
JavaScript 确实存在一些问题。然而,尽管它与 C#和 Java 等 C 风格语言有表面上的相似之处,但一旦深入探讨,它实际上是非常不同的。它是一种动态类型的伪函数式语言,使用原型而不是类继承来实现对象重用。它可能看起来像人类,但当它被揭示为斯克鲁尔时,你会感到惊讶。
如果我们在浏览器中能够使用与服务器相同的语言和库,那就太好了。
即使是 Blazor 也无法完全取代 JavaScript。例如,浏览器的某些部分仅可通过 JavaScript 访问。Blazor 提供了一种互操作服务,以便您的 C# 代码可以调用 JavaScript 代码,反之亦然。您将在第 14 章《使用 Blazor 构建交互式 Web 组件》的仅在线 JavaScript 互操作部分看到这一点。
微软之前曾尝试通过一种名为 Silverlight 的技术来实现这一目标。当 Silverlight 2 于 2008 年发布时,C# 和 .NET 开发人员可以利用他们的技能构建库和可视组件,这些组件通过 Silverlight 插件在网页浏览器中执行。
到 2011 年和 Silverlight 5,苹果在 iPhone 上的成功以及史蒂夫·乔布斯对像 Flash 这样的浏览器插件的厌恶,最终导致微软放弃 Silverlight,因为像 Flash 一样,Silverlight 在 iPhone 和 iPad 上被禁止。
另一个网页浏览器的发展使微软有机会再次尝试。2017 年,WebAssembly 共识完成,所有主要浏览器现在都支持它:Chromium(Chrome、Edge、Opera 和 Brave)、Firefox 和 WebKit(Safari)。
WebAssembly(Wasm)是一种用于虚拟机的二进制指令格式,提供了一种在网络上以接近本地速度运行用多种语言编写的代码的方法。Wasm 被设计为高层语言(如 C#)编译的可移植目标。
Blazor 是一个单一的编程或应用模型。对于 .NET 7 及更早版本,开发者必须为每个项目选择一个托管模型:
- Blazor Server 项目运行在服务器端,因此 C# 代码可以完全访问业务逻辑可能需要的所有资源,而无需提供身份验证凭据。它使用 SignalR 将 UI 更新传递给客户端。服务器必须与每个客户端保持一个实时的 SignalR 连接,并跟踪每个客户端的当前状态。这意味着如果需要支持大量客户端,Blazor Server 的扩展性较差。它于 2019 年 9 月作为 ASP.NET Core 3 的一部分首次发布。
- Blazor Wasm 项目在客户端运行,因此 C# 代码只能访问浏览器中的资源。在访问服务器上的资源之前,它必须进行 HTTP 调用(这可能需要身份验证)。它于 2020 年 5 月作为 ASP.NET Core 3.1 的扩展首次发布,并被标记为 3.2,因为它是当前版本,因此不在 ASP.NET Core 3.1 的长期支持范围内。Blazor Wasm 3.2 版本使用了 Mono 运行时和 Mono 库。 .NET 5 及更高版本使用 Mono 运行时和 .NET 库。
- 一个 .NET MAUI Blazor 应用程序,也称为 Blazor Hybrid 项目,通过使用本地互操作通道将其网页 UI 渲染到网页视图控件,并托管在 .NET MAUI 应用程序中。它在概念上类似于 Electron 应用程序。
随着 .NET 8 的发布,Blazor 团队创建了一个统一的托管模型,其中每个单独的组件都可以设置为使用不同的渲染模型执行:
- SSR:在服务器端执行代码,类似于 Razor Pages 和 MVC。然后将完整的响应发送到浏览器,以便向访问者显示,直到浏览器发出新的 HTTP 请求,服务器和客户端之间没有进一步的交互。就浏览器而言,网页是静态的,就像任何其他 HTML 文件一样。
- 流式渲染:在服务器端执行代码。HTML 标记可以返回并在浏览器中显示,并且在连接仍然打开时,任何异步操作可以继续执行。当所有异步操作完成后,最终的标记由服务器发送以更新页面内容。这改善了访客的体验,因为他们在等待其余内容时可以看到一些内容,比如“加载中…”的消息。
- 交互式服务器渲染:在实时交互过程中在服务器端执行代码,这意味着代码可以完全且轻松地访问服务器端资源,如数据库。这可以简化功能的实现。交互请求使用 SignalR 进行,这比完整请求更高效。浏览器和服务器之间需要保持一个永久连接,这限制了可扩展性。这是一个适合内部网网站的好选择,因为客户端数量有限且网络带宽高。
- 交互式 Wasm 渲染:在客户端执行代码,这意味着代码只能访问浏览器内的资源。这可能会使实现变得复杂,因为每当需要新数据时必须回调服务器。对于潜在有大量客户端且其中一些连接带宽较低的公共网站来说,这是一个不错的选择。
- 交互式自动渲染:首先在服务器上渲染以实现更快的初始显示,后台下载 Wasm 组件,然后切换到 Wasm 以进行后续交互。
这个统一模型意味着,通过精心规划,开发者可以一次编写 Blazor 组件,然后选择在 Web 服务器端、Web 客户端,或动态切换运行。这提供了最佳的解决方案。
重要的是要理解,Blazor 用于创建 UI 组件。组件定义了如何渲染 UI 和响应用户事件,并且可以组合、嵌套,并编译成 Razor 类库以便打包和分发。
例如,为了在电商网站上提供产品的星级评分 UI,您可以创建一个名为 Rating.razor 的组件,如下所示的标记:
您可以在网页上使用该组件,如以下标记所示:
创建组件实例的标记看起来像一个 HTML 标签,其中标签的名称是组件类型。组件可以通过元素嵌入到网页中,例如 <Rating Value=\”5\” /> ,或者可以像映射的端点一样进行路由。
代码可以存储在一个名为 Rating.razor.cs 的单独代码隐藏文件中,而不是一个包含标记和 @code 块的单一文件。此文件中的类必须是 partial 并且与组件同名。
内置了许多 Blazor 组件,包括用于在网页的 <head> 部分设置像 <title> 这样的元素的组件,还有许多第三方会出售用于常见目的的组件。
您可能会想知道为什么 Blazor 组件使用 .razor 作为其文件扩展名。Razor 是一种模板标记语法,允许混合 HTML 和 C#。支持 Razor 语法的旧技术使用 .cshtml 文件扩展名来表示 C# 和 HTML 的混合。
Razor 语法用于:
- ASP.NET Core MVC 视图和使用 .cshtml 文件扩展名的部分视图。业务逻辑被分离到一个控制器类中,该类将视图视为一个模板,以将视图模型推送到该模板,然后将其输出到网页。
- 使用 .cshtml 文件扩展名的 Razor 页面。业务逻辑可以嵌入或分离到使用 .cshtml.cs 文件扩展名的文件中。输出是一个网页。
- 使用 .razor 文件扩展名的 Blazor 组件。输出作为网页的一部分进行渲染,尽管可以使用布局来包装组件,使其作为网页输出,并且可以使用 @page 指令来分配一个路由,定义检索组件作为页面的 URL 路径。
现在您了解了 Blazor 的背景,让我们来看一些更实际的内容:如何将 Blazor 支持添加到现有的 ASP.NET Core 项目中。
ASP.NET Core Blazor 静态 SSR 允许开发者轻松地将 C# 代码语句与 HTML 标记混合,以使生成的网页动态。
以下是您必须完成的任务摘要,以在现有的 ASP.NET Core 项目中启用 Blazor 及其静态 SSR 功能:
- 创建一个 Components 文件夹以包含您的 Blazor 组件。
- 创建一个 Components\\Pages 文件夹以包含您的 Blazor 页面组件。
- 在 Components 文件夹中,创建三个 .razor 文件:_Imports.razor : 此文件导入所有 .razor 文件的命名空间,以便您无需在每个 .razor 文件的顶部导入它们。至少,您需要导入 Blazor 路由和您本地项目 Blazor 组件的命名空间。App.razor : 此文件包含将包含您所有 Blazor 组件的网页的 HTML。它还需要在网页的 <body> 中某处引用您的 Blazor Routes 组件。Routes.razor : 此文件定义了一个 <Router> 组件,该组件扫描当前程序集以查找页面组件及其注册的路由。
- 在 Components\\Pages 中,创建一个 Index.razor 文件,这是一个 Blazor 页面组件,将作为 Blazor 路由器默认显示的主页。文件顶部需要一个指令来定义根路径的路由: @page \”/\” 。
- 在 Program.cs 中,您必须调用 AddRazorComponents() 来将 Blazor 或 Razor 组件 ( *.razor ) 文件注册到 ASP.NET Core 的依赖服务集合中,然后调用 MapRazorComponents<App>() 来映射所有找到的 Blazor 路由的端点。您还必须调用 UseAntiforgery() ,因为 Blazor 组件会自动检查防伪令牌;因此,HTTP 管道必须启用中间件以支持它们。
您现在将添加并启用 Blazor 静态 SSR 服务,然后将静态 HTML 页面复制并更改为 Blazor 静态 SSR 文件:
- 在 Northwind.Web 项目文件夹中,创建一个名为 Components 的文件夹。
- 在 Components 文件夹中,创建一个名为 Pages 的文件夹。
- 在 Components 文件夹中,创建一个名为 _Imports.razor 的文件。
- 在 _Imports.razor 中,添加语句以导入 Blazor 组件路由的命名空间,以及您的 Northwind.Web 项目及其组件,如下所示的标记:
- 在 Components 文件夹中,创建一个名为 Routes.razor 的文件。
- 在 Routes.razor 中,添加语句以定义一个路由器,该路由器扫描当前程序集以查找已注册路由的 Blazor 页面组件,如下标记所示:
- 将 index.xhtml 文件复制到 Components\\Pages 文件夹中。(在 Visual Studio 或 Rider 中,按住 Ctrl 键同时拖放。)
- 对于 Components\\Pages 文件夹中的文件(不是原始文件),将文件扩展名从 index.xhtml 重命名为 Index.razor 。确保“I”是大写的。(Blazor 组件必须以大写字母开头,否则会出现编译错误!)
- 在 Components 文件夹中,创建一个名为 App.razor 的文件。
- 在 App.razor 中,从 Index.razor 中剪切并粘贴根标记,包括头部和主体元素,然后添加元素以使用 <HeadOutlet /> 插入页面标题,并为您的 <Routes> 组件,如以下标记所示:
在 Index.razor 中,将 @page 指令添加到文件顶部,并将其路由设置为 / ,添加一个 <PageTitle> 组件以设置网页 <title> ,删除表示这是一个静态 HTML 页面的 <h2> 元素,并注意结果,如以下标记所示:
警告!如果您已为 Visual Studio 安装了 ReSharper,或者使用 Rider,那么它们可能会在您的 Razor 页面、Razor 视图和 Blazor 组件中发出“无法解析符号”的警告。这并不总是意味着存在实际问题。如果文件可以编译,则可以忽略它们的错误。有时这些工具会感到困惑,毫无必要地让开发者担忧。
- 在 Program.cs 中,在创建 builder 的语句后,添加一条语句以添加 ASP.NET Core Blazor 组件及其相关服务,并可选择性地定义一个 #region ,如下代码所示:
在 Program.cs 中,在调用方法以使用 HTTPS 重定向后,添加一条语句以使用反伪造中间件,如以下代码中突出显示的内容所示:
在 Program.cs 中,在文件顶部添加一条语句以导入您的项目组件,如以下代码所示:
在 Program.cs 中,在映射 HTTP GET 请求到路径 /env 的语句之前,添加一个调用 MapRazorComponents 方法的语句,如以下代码中突出显示的那样:
- 使用 https 启动配置开始网站项目。
- 在 Chrome 中,输入 https://localhost:5131/ ,注意到显示这是一个静态 HTML 页面的元素消失了。如果它仍然存在,那么您可能需要清空浏览器缓存。查看开发者工具,点击并按住重新加载此页面按钮,然后选择清空缓存并强制重新加载,如图 13.4 所示:
图 13.4:查看开发者工具,然后点击并按住重新加载此页面按钮以查看更多命令
微信公众平台(asp.net实现)
asp.net实现微信公众平台主动推送信息源码
微信公众号主动向用户发送消息,asp.net版
立即下载
asp.net微信公众平台演示三层webForm
asp.net微信公众平台演示三层webForm
立即下载
微信接口C#.net
开发语言:Asp 运行环境:IIS 大家都很体贴。 目前,微信支付已经非常流行。 无论是在商场、超市,还是网站,微信支付发展都非常迅速。 但微信公众平台不提供ASP版本的微信支付。 目前基于ASP语言开发的网站非常普遍,因此此类网站集成微信支付非常不方便。 基于此,我们基于微信官网提供的开放API,自主开发了微信支付的各种支付接口,包括:微信扫码支付、微信公众号支付、微信红包支付、微信刷卡支付等一系列接口。网站使用的所有 ASP 代码。 ASP扫码支付是最常用的接口。 所有ASP网站都可以集成使用。 可实现支付订单结果的返回,并自动更新数据库中的订单操作。 我们在所有ASP网站上提供微信支付的定制。 服务,如有需要请联系我们。 微信公众号支付是基于微信公众号开发的支付接口。 您可以在现有的公众账户中添加ASP公众账户支付。 在微信中生成订单后,可以直接调用微信钱包直接支付。 非常方便,也支持。 自动更新订单状态,刷卡支付适合商场POS机操作,一般网站不需要。
立即下载
C#微信公众服务平台开发(ASP.Net实现)完整代码
该示例包括: 1:认证“成为开发者”; 2:获取ACCESSTOKEN; 3:发送短信; 4:语音识别; 5:解决access_token过期问题; 6:自定义菜单; 7:发送图文消息; 8:处理图片(上传、下载、发送); 9:处理二维码; 10:地理位置; 11:客服消息(自定义消息推送重要OPENID); 12:网页授权;
立即下载
微信公众平台asp.net自定义菜单功能实现
微信公众平台asp.net自定义菜单功能实现
立即下载
微信公众平台源码.rar_微信商城_微信公众_微信公众平台源码_微商城源码
最新微信公众平台源码C# ASP.NET微商城微网站微支付..完整版源码非编译版
立即下载
ASP微信公众平台管理后台
ASP微信公众平台管理后台
立即下载
ASP.NET MVC5&微信公众平台集成开发实践.rar
ASP.NET MVC5 & 微信公众平台集成开发实践(响应式布局、JQuery Mobile、Windows Azure、微信核心开发)完整版30视频教程。 适用范围:对微信公众平台开发感兴趣的同学。 对ASP.NET MVC开发感兴趣的学生。 所有有兴趣进入开发行业的同学。 课程特色:最前沿的ASP.NET MVC 5、Entity Framework 6、微信公众平台5.2。 6大功能、19个接口的使用方法一一揭晓。 零基础知识快速入门C#语言、ASP.NET MVC & 微信公众平台。 ASP.NET MVC与微信公众平台集成开发。 注重实战。 理论与实践相结合。 拒绝把基础知识保留在纸上。 ASP.NET MVC 5基础(6讲)实战练习(11讲)微信公众平台开发与学习(13讲)
立即下载
微信公众平台asp.net基础版
由于很多人反映之前的版本()不会进行验证,所以我们这次就跳过了,直接将程序放在网站空间中。 如果外部可以访问,则可以通过验证。 具体测试方法是,如果页面原样输出测试,则说明程序运行正常,可以通过微信验证。 另外,我在这个系统中只提供了2个例子,一个是简单的课程,另一个是翻译界面。 其他功能请自行实现。 这个程序通过了测试。 如果失败,请首先确保网站可以正常打开并且速度足够快,因为默认情况下,微信如果5秒内没有收到回复,就会断开连接。 可以连续点击几次,应该就能通过。 另外,微信很快就会有消息发送接口。 具体你可以到我的网站上查看~这个文档只是临时的,绝对不是最终的文档,但还是有一定的研究价值的~
立即下载
ASP.NET微信公众平台开发源码
ASP.NET微信公众平台开发源码,实现微信公众平台接口对接,完整微信公众平台开发案例
立即下载
ASP.NET MVC 5 微信公众平台集成开发实践(三)
ASP.NET MVC 5 微信公众平台集成开发实践第3部分
立即下载
ASP.NET MVC5&微信公众平台集成开发实用视频教程
适用范围:对微信公众平台开发感兴趣的同学。 对ASP.NET MVC开发感兴趣的学生。 所有有兴趣进入开发行业的同学。 课程特色:最前沿的ASP.NET MVC 5、Entity Framework 6、微信公众平台5.2。 6大功能、19个接口的使用方法一一揭晓。 零基础知识快速入门C#语言、ASP.NET MVC & 微信公众平台。 ASP.NET MVC与微信公众平台集成开发。 注重实战。 理论与实践相结合。 拒绝把基础知识保留在纸上。 ASP.NET MVC 5基础(6讲)实战练习(11讲)微信公众平台开发与学习(13讲)
立即下载
微信公众平台消息接口asp.net版
微信公众平台api asp.net调用
立即下载
微信公众平台验证asp.net版
由于很多人反映之前的版本()不会进行验证,所以我们这次就跳过了,直接将程序放在网站空间中。 如果外部可以访问,则可以通过验证。 具体测试方法是,如果页面原样输出测试,则说明程序运行正常,可以通过微信验证。 另外,我在这个系统中只提供了2个例子,一个是简单的课程,另一个是翻译界面。 其他功能请自行实现。 这个程序通过了测试。 如果失败,请首先确保网站可以正常打开并且速度足够快,因为默认情况下,微信如果5秒内没有收到回复,就会断开连接。 可以连续点击几次,应该就能通过。 另外,微信很快就会有消息发送接口。 具体你可以到我的网站上查看~这个文档只是临时的,绝对不是最终的文档,但还是有一定的研究价值的~
立即下载
ASP.NET微信公众号平台系统源码
1、本系统是微信公众平台系统。 系统的目的不是完全开发它,而是毫无保留地设计和编译微信的所有核心开发。 2.对于开发者来说,这套后端系统UI也非常不错。 二次开发、扩展时,只需将自己创建的页面指向对应的链接即可。 权限可以自行开发,买家可以根据自己的需求进行定制。 业务才能完成后续发展。 3、本系统实现了对微信接口的详细梳理,类库也是经过反复考虑而建立的。 可以在多用户平台上使用,也方便没有接触过微信的开发者快速建立概念、理解原理。 4、微信的核心分为:主动响应和被动响应。 ActiveResponse.aspx 中有完整的代码。 由于微信是基于Http协议编程的,所以主动响应使用json,而被动响应使用Xml。 所以如果接口有更新的话,就按照我写的例子来吧。 主动响应:即我向微信服务器发送一条消息,微信服务器处理后转发给用户。 被动响应:用户发送消息到微信服务器,微信服务器处理后提交【Post】到我们服务器,我们接收并处理。 5、本系统不仅完成了几乎所有接口的功能开发、测试和修正,已经很完善,用户可以方便地进行二次开发。 Oauth2.0网页
立即下载
微信公众平台开发SDK,ASP.NET版
微信公众平台开发SDK,ASP.NET版本,所有文字消息、图文消息、语音消息、位置消息均已处理,ASP.NET是微信公众平台开发必备!
立即下载
微信公众平台asp.net自动回复
微信公众平台asp.net自动回复微信端口应用开发asp.net版实现机器人自动回复功能包括回复图片、回复一句话+时间
立即下载
微信公众平台(asp.net版)
注意:1、验证token只需保证程序可以被外网访问,并且是80端口(其他端口不能使用)。 token可以随意填写(已绕过参数验证过程)。 2.封装微信的各个消息类型。 3. DealPost收到微信发送的POST消息后,对消息进行处理。 其中,DealXml类用于消息的初始封装。 有两个参数。 一种是MsgType,用于判断微信发送的消息类型。 另一个是xn,用于根据MsgType来确定其他各种类的参数传递。 3、DealXml类中有生成各种消息类的方法,请自行参考。 4.回复类 在ResponseWeixin中,一共有2种回复方式,1是文字,2是图片加文字。 5、新闻课准备了图文消息回复。 在回复图文消息之前,需要创建一个List of List,具体参数请直接参考程序中的例子,这里不再介绍。 6.本程序内置了小黄机应用程序接口,您可以直接使用。 界面使用官方版本,不会有任何限制。 祝愿所有程序员圆通鞋开发愉快,希望对大家有所帮助。注:本程序是在.net 2.0环境下开发的
立即下载
ASP.NET微信源码 微信公众平台源码
它完全开源,具有清晰的框架结构,适合开发者向系统添加应用程序。 所有主流线上微信营销功能均可在应用商店下载,并享受官方一键升级,欢迎下载使用
立即下载
C# 13 和 .NET 9 全知道 :13 使用 ASP.NET Core 构建网站 (1)
本章介绍如何使用 ASP.NET Core 在服务器端构建具有现代 HTTP 架构的网站。
ASP.NET Core 是一个由微软开发的免费、开源和跨平台的 web 框架,用于构建现代、基于云和互联网连接的应用程序。它是对之前的 ASP.NET 框架的重大重新设计,专注于灵活性、模块化和性能。
ASP.NET Core 提供了一个统一的编程模型,用于构建 Web 用户界面 (UI) 和 Web API,这意味着您可以使用相同的框架来处理服务器端和客户端逻辑。
ASP.NET Core 针对高性能进行了优化,能够处理大量的每秒请求。它具有轻量级的模块化架构,允许开发人员仅包含必要的组件,从而减少整体占用。
您将学习如何使用 ASP.NET Core 8 中引入的 Blazor 静态服务器端渲染 (SSR) 功能构建简单的网站。
本章涵盖以下主题:
- 探索 ASP.NET Core
- Blazor 的历史
- 探索 Blazor 静态 SSR
- 使用 Entity Framework Core 和 ASP.NET Core
在我们探索一个示例 ASP.NET Core 项目之前,让我们回顾一下它的架构。
ASP.NET Core 的架构由几个关键组件组成:
- 中间件:中间件组件用于处理请求和响应。它们在管道中串联在一起,每个中间件处理请求并将其传递给链中的下一个组件。在本章的可选在线部分中,您可以学习如何自定义此管道。
- 路由:路由组件负责将传入请求映射到适当的端点和 Blazor 组件。
- 依赖注入(DI)容器:这是内置的,用于管理服务对象的生命周期和依赖关系。
- 配置:ASP.NET Core 使用灵活的配置系统,支持多种来源,如 JSON 文件、环境变量和命令行参数。
- 日志记录:该框架具有一个日志记录 API,支持多种日志提供程序,允许您以一致的方式捕获和存储日志数据。
现在我们将创建一个空的 ASP.NET Core 项目,并探索如何使其能够提供简单的网页。
我们将创建一个 ASP.NET Core 项目,该项目将显示来自 Northwind 数据库的供应商列表。
dotnet 工具有许多项目模板,可以为您完成很多工作,但很难知道哪种模板最适合特定情况,因此我们将从空网站项目模板开始,然后逐步添加功能,以便您可以理解所有部分:
- 使用您首选的代码编辑器打开 ModernWeb 解决方案,然后添加一个新项目,如下列表所定义:
- 项目模板:ASP.NET Core 空项目 [C#] / web 。对于 Rider,选择名为 ASP.NET Core Web 应用程序的项目模板,然后将类型设置为空。
- 项目文件和文件夹: Northwind.Web 。
- 解决方案文件和文件夹: ModernWeb 。
- 对于 Visual Studio,保持所有其他选项为默认设置。
- 例如:
- 框架:.NET 9.0(标准术语支持)
- 配置为 HTTPS:已选择
- 启用 Docker:已清除
- 请勿使用顶级语句:已清除
- 对于 VS Code 和 dotnet new web 命令,默认选项是我们想要的。在未来的项目中,如果您想从顶级语句更改为旧的 Program 类样式,请指定开关 –use-program-main 。
在创建新项目时,Visual Studio 和 dotnet new 选项的摘要可以在以下链接的 GitHub 仓库中找到:https://github.com/markjprice/cs13net9/blob/main/docs/ch01-project-options.md。
- 构建 Northwind.Web 项目。
- 在 Northwind.Web.csproj 中,请注意该项目类似于类库,只是 SDK 是 Microsoft.NET.Sdk.Web ,如下标记中所示:
添加一个元素以全局和静态方式导入 System.Console 类,如下所示的标记:
- 如果您使用的是 Visual Studio,请在解决方案资源管理器中切换显示所有文件。如果您使用的是 Rider,请将光标移动到解决方案窗格上,然后点击“眼球”图标。
- 展开 obj 文件夹,展开 Debug 文件夹,展开 net9.0 文件夹,并选择 Northwind.Web.GlobalUsings.g.cs 文件。请注意,隐式导入的命名空间包括控制台应用程序或类库的所有命名空间,以及一些 ASP.NET Core 的命名空间,例如 Microsoft.AspNetCore.Builder ,如下代码所示:
- 关闭文件并折叠 obj 文件夹。
- 在 Northwind.Web 项目/文件夹中,展开名为 Properties 的文件夹,打开名为 launchSettings.json 的文件,并注意名为 http 和 https 的配置文件。它们有随机分配的端口号,您将在下一步中更改,因此现在只需记下它们的位置,如以下配置中所示的高亮部分:
launchSettings.json 文件仅在开发期间使用。它对构建过程没有影响。它不会与编译后的网站项目一起部署,因此对生产运行时没有影响。它仅被像 Visual Studio 和 Rider 这样的代码编辑器处理,以设置环境变量并定义项目在代码编辑器启动时供 Web 服务器监听的 URL。
- 对于 https 配置文件,对于其 applicationUrl ,将 http 的分配端口号更改为 5130 ,将 https 更改为 5131 ,并交换顺序,使 http 在列表中排在第一位,并将作为默认使用,如以下标记中所示:
http 和 https 启动配置文件具有 commandName 为 Project ,这意味着它们使用项目中配置的网络服务器来托管网站,默认情况下是 Kestrel。还有一个用于 IIS 的配置文件和设置,IIS 是仅限 Windows 的网络服务器。在本书中,我们将仅使用 Kestrel 作为网络服务器,因为它是跨平台的。为了简化您的 launchSettings.json 文件,您甚至可以删除 iisSettings 和 IIS Express 部分。
- 将更改保存到 launchSettings.json 并关闭文件。
- 在 Program.cs 中,请注意以下事项:一个 ASP.NET Core 项目就像一个顶级控制台应用程序,具有一个隐藏的 <Main>$ 方法作为其入口点,该方法使用名称 args 传递一个参数。它调用 WebApplication.CreateBuilder ,该函数使用默认的网络主机创建网站的主机,然后进行构建。该网站将对所有 HTTP GET 请求以该网站的根路径响应以下纯文本: Hello World! 。对 Run 方法的调用是一个阻塞调用,因此隐藏的 <Main>$ 方法在 web 服务器停止运行之前不会返回。
Program.cs 的内容在以下代码中显示:
在现有对 MapGet 的调用后,添加两个调用以定义一个返回匿名 C# 对象作为 JSON 的端点,以及一个返回网页的端点,如以下代码所示:
除了 Json 和 Content , Results 类还有许多其他方法,如 BadRequest 、 Bytes 、 Created 、 File 、 NoContent 、 NotFound 、 Ok 、 Problem 、 Redirect 等。您可以在以下链接了解更多信息:https://learn.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.http.results。
- 在 Program.cs 的底部,添加一个注释以解释 Run 方法,并在 Run 之后写一条消息到控制台,因此,在网络服务器停止后,如以下代码中突出显示的内容所示:
我们现在将测试 ASP.NET Core 空网站项目的功能。我们还将通过将 HTTP 切换到 HTTPS 来启用浏览器与 Web 服务器之间所有流量的加密,以保护隐私。HTTPS 是 HTTP 的安全加密版本。
- 对于 Visual Studio:在工具栏中,确保选择了 https 配置文件(而不是 http、IIS Express 或 WSL),然后将 Web 浏览器更改为 Google Chrome,如图 13.1 所示:
图 13.1:在 Visual Studio 中选择带有 Kestrel Web 服务器的 https 配置文件
- 导航到 调试 | 无调试启动….
- 在 Windows 中,如果您看到 Windows 安全警报,提示 Windows Defender 防火墙已阻止此应用程序的一些功能,请点击允许访问按钮。
- 第一次启动安全网站时,您可能会收到通知,您的项目已配置为使用 SSL,为了避免浏览器中的警告,您可以选择信任 ASP.NET Core 生成的自签名证书。点击“是”。当您看到安全警告对话框时,再次点击“是”。
- 对于 VS Code,输入命令以 https 配置文件启动项目,如下所示: dotnet run –launch-profile https 。然后启动 Chrome。
- 对于骑手:导航到 运行 | 编辑配置….在运行/调试配置对话框中,选择 Northwind.Web: https。在对话框底部,位于“启动后”复选框的右侧,选择 Chrome,然后点击确定。导航到 运行 | 运行 ‘Northwind.Web: https’
- 在 Visual Studio 的命令提示符窗口或 VS Code 的终端中,请注意以下内容,如下输出所示:网络服务器已开始监听我们为 HTTP 和 HTTPS 分配的端口。您可以按 Ctrl + C 关闭 Kestrel Web 服务器。托管环境是 Development 。
Visual Studio 还会自动启动您选择的浏览器并导航到第一个 URL。如果您使用的是 VS Code,您需要手动启动 Chrome。
- 在命令提示符或终端中保持 Kestrel web 服务器运行。
- 在 Chrome 中,显示开发者工具,然后点击网络标签。
- 请求网站项目的主页:如果您使用的是 Visual Studio,并且 Chrome 自动启动并已为您输入了 URL,请单击“重新加载此页面”按钮或按 F5。如果您正在使用 VS Code 和命令提示符或终端,则在 Chrome 地址栏中手动输入地址 http://localhost:5130/ 。
- 在网络选项卡中,点击 localhost,并注意响应是来自跨平台 Kestrel web 服务器的纯文本 Hello World!,如图 13.2 所示:
图 13.2:网站项目的纯文本响
像 Chrome 这样的浏览器可能还会请求一个 favicon.ico 文件以在其浏览器窗口或标签中显示,但该文件在我们的项目中不存在,因此显示为 404 Not Found 错误。如果这让你感到烦恼,你可以在以下链接免费生成一个 favicon.ico 文件并将其放入项目文件夹中:https://favicon.io/。在网页中,你还可以在元标签中指定一个,例如,使用 Base64 编码的空白文件,如以下标记所示:
<link rel=\”icon\” href=\”data:;base64,iVBORw0KGgo=\”>
- 输入地址 https://localhost:5131/ ,请注意,如果您没有使用 Visual Studio 或在被提示信任 SSL 证书时点击了“否”,那么响应将是隐私错误。当您没有配置浏览器可以信任的证书以加密和解密 HTTPS 流量时,您将看到此错误(如果您没有看到此错误,那是因为您已经配置了证书)。在生产环境中,您可能希望向像 Verisign 这样的公司支付 SSL 证书费用,因为他们提供责任保护和技术支持。在开发过程中,您可以告诉您的操作系统信任 ASP.NET Core 提供的临时开发证书。
Visual Studio 还会自动启动您选择的浏览器并导航到第一个 URL。如果您使用的是 VS Code,您需要手动启动 Chrome。
- 输入地址 https://localhost:5131/data 并注意返回了一些 JSON。
- 输入地址 https://localhost:5131/welcome 并注意返回了一个网页。
- 在命令提示符或终端中,按 Ctrl + C 关闭网络服务器,并注意写入的消息,如以下输出中突出显示的内容:
- 如果您需要信任本地自签名的 SSL 证书,请在命令行或终端中输入以下命令: dotnet dev-certs https –trust 。
- 注意消息请求信任 HTTPS 开发证书。您可能会被提示输入密码,并且可能已经存在有效的 HTTPS 证书。
启用更严格的安全性并自动将 HTTP 请求重定向到 HTTPS 是一种良好的做法。
良好实践:一个可选但推荐的安全增强是 HTTP 严格传输安全(HSTS),您应该始终启用它。如果一个网站指定了它并且浏览器支持它,那么它会强制所有通信通过 HTTPS 进行,并防止访问者使用不受信任或无效的证书。
现在就来做吧:
- 在 Program.cs 中,在构建 app 的语句之后,添加一个区域和一个 if 语句,以在非开发环境中启用 HSTS,并将 HTTP 请求重定向到 HTTPS,如以下代码中突出显示的内容所示:
- 使用 https 启动配置启动 Northwind.Web 网站项目而不进行调试。
- 如果 Chrome 仍在运行,请关闭并重新启动它。
- 在 Chrome 中,显示开发者工具,然后点击网络标签。
- 输入地址 http://localhost:5130/ ,并注意服务器如何以 307 临时重定向响应到 https://localhost:5131/ ,以及证书是有效且受信任的,如图 13.3 所示:
图 13.3:连接现在使用有效证书和 307 重定向进行安全保护
- 关闭 Chrome 并关闭网络服务器。
良好实践:记得在完成网站测试后,通过切换到命令提示符或终端并按 Ctrl + C 来关闭 Kestrel 网络服务器。
在 ASP.NET Core 5 及更早版本中,项目模板设置了一条规则,表示在开发模式下,任何未处理的异常将在浏览器窗口中显示,以便开发人员查看异常的详细信息,如以下代码所示:
使用 ASP.NET Core 6 及更高版本,此代码由 WebApplication 构建器默认配置,因此会自动执行,因此在项目模板 Program.cs 源代码中不再需要。
ASP.NET Core 如何知道我们何时在开发模式下运行,以便 IsDevelopment 方法返回 true ,并且这段额外代码执行以设置开发者异常页面?让我们来看看。
ASP.NET Core 可以从设置文件和环境变量中读取,以确定使用哪个托管环境,例如 DOTNET_ENVIRONMENT 或 ASPNETCORE_ENVIRONMENT 。
您可以在本地开发期间覆盖这些设置:
- 在 Northwind.Web 文件夹中,展开名为 Properties 的文件夹,并打开名为 launchSettings.json 的文件。请注意, https 启动配置将托管环境的环境变量设置为 Development ,如下所示在以下配置中突出显示:
- 将 ASPNETCORE_ENVIRONMENT 环境变量从 Development 更改为 Production 。
- 如果您正在使用 Visual Studio,可以选择将 launchBrowser 更改为 false 以防止 Visual Studio 自动启动浏览器。当您使用 dotnet run 或 Rider 启动网站项目时,此设置将被忽略。
- 在 Program.cs 中,将第一个 MapGet 语句修改为返回环境的名称,而不是 Hello World ,如下代码中所示的高亮部分:
使用 https 启动配置启动网站项目,并注意托管环境为 Production ,如下所示的输出:
- 在 Chrome 中,请注意纯文本是 Environment is Production 。
- 关闭网络服务器。
- 在 launchSettings.json 中,将环境变量更改回 Development ,并将更改保存到文件中。
更多信息:您可以通过以下链接了解有关环境的更多信息:https://learn.microsoft.com/en-us/aspnet/core/fundamentals/environments。
本文作者及来源:Renderbus瑞云渲染农场https://www.renderbus.com
文章为作者独立观点不代本网立场,未经允许不得转载。