<?xml version="1.0" encoding="utf-8"?><rss version="2.0"><channel><title>Edi Wang</title><description>Microsoft MVP for Azure</description><link>https://edi.wang/</link><pubDate>2026-04-20T11:11:04Z</pubDate><copyright>© 2009 - 2026 edi.wang</copyright><generator>Moonglade v15.13.2</generator><language>en-US</language><item><title>Adding Azure Bicep Language Support for highlight.js</title><link>https://edi.wang/post/2025/5/18/adding-azure-bicep-language-support-for-highlightjs</link><description>I am using highlight.js to render code snippets on this blog system. However, the official pack of highlight.js does not have Bicep as one of the languages. To add support for the Bicep language in highlight.js, you need to implement a Bicep language definition module. Below are the detailed steps and code examples.</description><category>Web Development</category><category>Microsoft Azure</category><guid isPermaLink="false">6DAF2659-5CF5-4339-923A-1A791C85F807</guid><pubDate>2025-05-18T12:36:49Z</pubDate><updated xmlns="http://www.w3.org/2005/Atom">2025-05-18T12:36:49Z</updated></item><item><title>Add X-Content-Type-Options Header to Resources in Azure Storage Account</title><link>https://edi.wang/post/2024/5/11/add-header-to-resources-in-azure-storage-account</link><description>By default, resources served from an Azure Storage Account do not include the X-Content-Type-Options header in their responses. This omission can pose a security risk. In this blog post, let's check out how can we solve this problem within a few steps without any code modifications. …</description><category>Web Development</category><category>Microsoft Azure</category><guid isPermaLink="false">951D3888-92B4-4162-92B4-791958F4FF00</guid><pubDate>2024-05-11T01:14:12Z</pubDate><updated xmlns="http://www.w3.org/2005/Atom">2024-05-11T01:14:12Z</updated></item><item><title>Call API with Windows Authentication from Blazor Web Assembly</title><link>https://edi.wang/post/2023/10/20/call-api-with-windows-authentication-from-blazor-web-assembly</link><description>I was rewriting an old Angular application to Blazor Web Assembly a couple of days ago. The App is an internal tool, which uses a backend API that has Windows Authentication. However, when calling API from HttpClient that UseDefaultCredentials, Blazor will throw PlatformNotSupportedException. The majority of internet search so far tell you it's not possible. Really? Let's see how to make it work! …</description><category>Web Development</category><category>.NET</category><guid isPermaLink="false">9C4D64CA-5B5B-432E-8AE5-4C06125658BE</guid><pubDate>2023-10-20T07:17:07Z</pubDate><updated xmlns="http://www.w3.org/2005/Atom">2023-10-20T07:17:07Z</updated></item><item><title>Solving "npm install" ECONNRESET Error on Azure DevOps</title><link>https://edi.wang/post/2023/8/16/npm-econnreset-azure-devops</link><description>A few months ago, my Angular project on Azure DevOps started to have build failure very often. Error message is "npm ERR! network read ECONNRESET", which indicates npm can't connect to internet. This problem does not happen every time, usually re-run failed jobs several times can produce a good build. But still, this is very annoying. So, I took some time to investigate and solve it. …</description><category>DevOps</category><category>Web Development</category><guid isPermaLink="false">0B86092D-313B-4AC6-A64E-635FE38196E4</guid><pubDate>2023-08-16T13:34:49Z</pubDate><updated xmlns="http://www.w3.org/2005/Atom">2023-08-16T13:34:49Z</updated></item><item><title>How to Activate Kendo UI License in Azure Static Web Apps Without Exposing Secret Value</title><link>https://edi.wang/post/2023/1/8/how-to-activate-kendo-ui-license-in-azure-static-web-apps-without-exposing-secret-value</link><description>I have an open-source project that uses Kendo UI for Angular. In order for users to have BYOL model, I could not include the license file in my public repository. There is no example of how to activate Kendo license during SWA build process. Let's see how to activate Kendo UI license during the build process of Azure Static Web Apps without including the license itself in repository. …</description><category>Web Development</category><category>Microsoft Azure</category><guid isPermaLink="false">950D3C34-1EC0-427F-BE54-D8A7FECA7E5E</guid><pubDate>2023-01-08T09:59:23Z</pubDate><updated xmlns="http://www.w3.org/2005/Atom">2023-01-08T09:59:23Z</updated></item><item><title>Deploy to Azure Static Web App from Local Machine without GitHub Action</title><link>https://edi.wang/post/2022/11/17/deploy-to-azure-static-web-app-from-local-machine-without-github-action</link><description>When creating Azure Static Web App in Azure portal. The deployment options did not provide clear instructions for how to deploy without creating a project and CI/CD pipeline on GitHub or Azure DevOps. Many times, we just want to deploy a simple one-time project from a local computer. Let's see how to do this.</description><category>Web Development</category><category>Microsoft Azure</category><guid isPermaLink="false">CD0908CC-C27A-4CE2-9D2B-E033327EC9EE</guid><pubDate>2022-11-17T08:29:50Z</pubDate><updated xmlns="http://www.w3.org/2005/Atom">2022-11-17T08:29:50Z</updated></item><item><title>Make NPM Install with Legacy Peer Deps in Azure Static Web Apps Builds</title><link>https://edi.wang/post/2022/11/16/make-npm-install-with-legacy-peer-deps-in-azure-static-web-apps-builds</link><description>After upgrading a JS library, GitHub Action for build and deploy Azure Static Web Apps blows up sky high. According to the error message. npm install command need to run with --legacy-peer-deps. However, there is no step of npm install in Azure Static Web Apps's yml file. How can we tell npm to use legacy peer deps? …</description><category>Web Development</category><category>Microsoft Azure</category><guid isPermaLink="false">5567398A-5C22-4F96-9732-823ADF0B0867</guid><pubDate>2022-11-16T06:20:29Z</pubDate><updated xmlns="http://www.w3.org/2005/Atom">2022-11-16T06:20:29Z</updated></item><item><title>How to Add Parameters for 'npm install' in Azure DevOps</title><link>https://edi.wang/post/2022/7/7/how-to-add-parameters-for-npm-install-in-azure-devops</link><description>Recently my Azure DevOps build pipeline failed because Azure is using npm 8.x, which will have issue for angular projects when running `npm install`.  This is a known issue which can be solved by using `--legacy-peer-deps` or `--force` for the `npm install` command. However, Azure DevOps's npm task does not take parameters by default. Let's see how we can use these parameters in Azure DevOps. …</description><category>Web Development</category><category>Microsoft Azure</category><guid isPermaLink="false">5026A3D2-15A8-4CCA-A19D-A5CDF1A1AD83</guid><pubDate>2022-07-07T05:25:31Z</pubDate><updated xmlns="http://www.w3.org/2005/Atom">2022-07-07T05:25:31Z</updated></item><item><title>How to Specify Node.js Version When Building Azure Static Web App</title><link>https://edi.wang/post/2022/1/27/how-to-specify-nodejs-version-when-building-azure-static-web-app</link><description>Azure Static Web App creates a GitHub Action that uses Oryx to build your web app. I have a React App that uses node.js to build. However, the default version of node Oryx is using is currently 14.x. I would like to use version 16.x for building my App. …</description><category>Web Development</category><category>Microsoft Azure</category><guid isPermaLink="false">D250F557-18C1-4595-8F2B-B8172FC8AF28</guid><pubDate>2022-01-27T04:15:05Z</pubDate><updated xmlns="http://www.w3.org/2005/Atom">2022-01-27T04:15:05Z</updated></item><item><title>RMB capitalization converter in Blazor WASM</title><link>https://edi.wang/post/2021/3/1/blazor-wasm-rmb-capitalize</link><description>.NET 5 正式发布已经有一段时间了，其中 Blazor 技术是该版本的亮点之一。作为微软技术的被坑者，年少的我曾经以为 SilverLight 能血虐 Flash，Zune 能团灭 iPod，WP 能吊打 iPhone，UWP 能统一全平台…… 可是后…… 最终步入大龄程序员的我发现，只有陪伴了我将近 20 年的 ASP.NET 还没有完蛋。于是我这两天花了点时间，尝试将我的一个 UWP 小工具用 Blazor 重写，分享给大家。 无法抢救的 UWP  “人民币大写转换器” 是我年少无知时开发的小工具之一，它的主要功能有： - 将数字金额转化为大写中文 - 复制结果 - 使用中文语音朗读结果 - 显示参照表 可惜 UWP 不论是充满 Bug 的 SDK，Runtime，还是微软的龟速更新与混乱的规划，都已经无可救药了，是时候给应用找个新家了。 Blazor Blazor 是 .NET</description><category>Web Development</category><category>.NET</category><guid isPermaLink="false">BEA172A6-6C09-4D56-9D91-1FE8188B11DE</guid><pubDate>2021-03-01T06:19:39Z</pubDate><updated xmlns="http://www.w3.org/2005/Atom">2021-03-01T06:19:39Z</updated></item><item><title>JQuery搞定SyntaxHighlighter v3.x长代码自动换行</title><link>https://edi.wang/post/2012/9/12/jquery-fix-line-wrap-in-syntaxhighlighter-v3</link><description>长代码换行是SyntaxHighlighter3.0版本之前的功能，但3.0之后就木了，本人认为主要猿因是gutter（代码行号指示器）的换行难做。因为3.x版是将代码行号和代码部分分开生成HTML的，猿来的老版本是在一起的。这样做是便于直接复制代码，而不会复制到行号上去。 很多人都在想办法让它实现换行，但都卡在代码行号的问题上。我关注这个问题已经差不多一年了，今天终于有了个比较漂亮的解决办法。 首先，强制给代码部分换行的CSS还是要写的： body .syntaxhighlighter .line {     white-space: pre-wrap !important; } 这段CSS换行的前提是，pre标签的外边一定要有一个固定宽度的容器对象。比如一个600px宽度的div就可以。 然后，我们需要一段JQuery，用来计算被换行的代码显示在页面上的高度，然后赋值给它的</description><category>Web Development</category><guid isPermaLink="false">74F35952-B8F9-473C-91DD-B4691DCFC4D3</guid><pubDate>2012-09-12T06:12:30Z</pubDate><updated xmlns="http://www.w3.org/2005/Atom">2012-09-12T06:12:30Z</updated></item><item><title>JQuery文本框自动完成，通过AJAX调用ASP.NET WebService</title><link>https://edi.wang/post/2012/5/23/jquery-auto-complete-using-ajax-webservice-in-aspnet</link><description>最近在搞博客搜索框的自动完成功能，用的是JQuery UI里的autocomplete插件。插件的数据源是用AJAX调用一个WebService，网站后台有个标签库，WebService返回的是符合条件的标签。最终效果如下：  我们先来看WebService的代码，方法很简单： [WebMethod] public List GetAllTagsForAutoComplete(string tagName) {     return optTag.GetModelList().Where(p =&gt; p.Name.ToLower().StartsWith(tagName.ToLower())).ToList(); }   这个方法的作用是根据输入的内容，检索所有以tagName开头的标签。我没有返回全部标签，是因为autocomplete插件的默认行为不符合我的需求。在默认情况下，如果我输入 …</description><category>Web Development</category><category>.NET</category><guid isPermaLink="false">664391CC-0E72-4E08-94A7-3A4068DBD788</guid><pubDate>2012-05-23T01:41:32Z</pubDate><updated xmlns="http://www.w3.org/2005/Atom">2012-05-23T01:41:32Z</updated></item></channel></rss>