Rick Strahl
weblog.west-wind.com · Personal blog · on HN since 2014
Rick Strahl writes about Windows and .NET web development, covering ASP.NET Core, IIS, .NET Standard and web client issues.
What HN saysHN links it for practical .NET and IIS guidance, such as using Let's Encrypt with IIS and moving code to .NET Standard.
27HN people shared it
9linked it in comments
24stories submitted
156story points
4 months agolast shared
2014people per year2026
Most-shared posts
- 1Web Code is a solved Problem – how about fixing Web UI next?3 people · 117 points · first shared 2018 · 99 comments on HN
- 2NET Core 2.0 and ASP.NET Core 2.0 Are Here2 people · 4 points · first shared 2017 · discussion on HN
- 3NET Standard 2.0 – Making Sense of .NET Again2 people · 1 points · first shared 2016 · discussion on HN
- 4Using Let's Encrypt with IIS on Windows2 people · 1 points · first shared 2017 · discussion on HN
- 5ASP.NET Framework Performance1 people · 5 points · first shared 2014 · 2 comments on HN
- 6The Broken Promise of the Mobile Web1 people · 4 points · first shared 2014 · discussion on HN
- 7Async and Async Void Event Handling in WPF1 people · 2 points · first shared 2022 · discussion on HN
- 8The Rise of JavaScript Frameworks – Part 2: Tomorrow1 people · 2 points · first shared 2015 · discussion on HN
- 9Using Let's Encrypt with IIS on Windows1 people · 2 points · first shared 2017 · 1 comments on HN
- 10Comparing Raw Asp.net Request Throughput Across Versions1 people · 2 points · first shared 2024 · discussion on HN
- 11Using the CSS brightness filter to generically highlight content1 people · 2 points · first shared 2020 · discussion on HN
- 12The Broken Promise of the Mobile Web1 people · 2 points · first shared 2014 · discussion on HN
- 13Turn Off HTML Input Auto Fixups for Mobile Devices1 people · 2 points · first shared 2015 · discussion on HN
- 14C# NumberFormat Sections1 people · 2 points · first shared 2016 · discussion on HN
- 15Moving to Lets Encrypt SSL Certificates1 people · 2 points · first shared 2016 · discussion on HN
What HN people wrote when they linked it
uk_programmer · 2020-04-07
If you try to do it in one big hit it will be hard but you don't have to do that. You can move it over piecemeal.
You can use multi-targeting to move parts of your code over to .NET Standard. So if you start with your base projects and move your way up, gradually your code will become compatible between .NET core and .NET Framework. This will help you remove any .NET Full Framework / Windows specific bits. Where you have to have things that are specific to each OS you can then just configure your DI so it will inject the Windows specific / Linux specific implementation.
For those that are not aware of multi-targeting here is a great article on it:
https://weblog.west-wind.com/posts/2017/Jun/22/MultiTargeting-and-Port…
alexisread · 2018-06-04
Nice article, though it doesn't cover CORS with NTLM/Kerberos auth (ie. .NET on windows).
To my mind this is the most baffling aspect here, as preflight requests shouldn't carry an auth token (according to the spec), however IIS is an all-or-nothing auth which will thus reject the preflight request, unless it is specifically handled.
Additionally, there are different ways to handle preflighting for owin and aspnetcore vs .NET framework (IIS hosting), and these methods also change depending on the technology - MVC, WebAPI, OData.
[edit] Hit return early:
MVC (pure) requests can be handled in the web.config to set custom headers.
WebAPI uses annotations on the controllers.
See https://stackoverflow.com/questions/29970793/enabling-cors-through-web…
OData follows a different path through, so the above won't work. You would need to modify Application_BeginRequest()
See https://stackoverflow.com/questions/31459416/how-to-enable-cors-via-at…
The above is all for .NET framework (IIS host). For OWIN you need to modify HttpListener as per https://stackoverflow.com/questions/42104716/owin-preflight-requests-a…
For aspnetcore the pipeline again changes:
https://weblog.west-wind.com/posts/2016/Sep/26/ASPNET-Core-and-CORS-Go…
Lastly, all of the above should be using xhr.withCredentials = true; on the client (javascript) side.
Note that this is not present for…
llagerlof · 2022-07-19
Although I believe this software (dpScreenOCR-1.1.0-win32-2.exe) is fully safe, virustotal is giving 2 false positives (Avast and AVG).
I mean, probably part of your users will not install the program because of this. Maybe you want to track the reason and kill these false positives. This guy documented his process: https://weblog.west-wind.com/posts/2016/oct/05/dealing-with-antivirus-…
ozten · 2021-12-31
This is an interesting data point for folks designing demo pages. The API was discovered by playing with the demo page [1] according to a link from a link in the article
[1] https://weblog.west-wind.com/posts/2011/aug/06/translating-with-google…
teh_klev · 2017-10-18
Not personally tried these but...
https://weblog.west-wind.com/posts/2016/feb/22/using-lets-encrypt-with…
ghuntley · 2016-11-24
Watch this https://www.youtube.com/watch?v=gNUUAIGHupc (4 minutes)
Read this https://weblog.west-wind.com/posts/2016/Nov/23/NET-Standard-20-Making-…
orand · 2014-03-03
Looks like he posted Owin/Helios results back in December.
http://weblog.west-wind.com/posts/2013/Dec/09/Reexamining-ASPNET-and-H…
Not sure why someone posted this old 2012 article to HN when something much more current was available.
maccard · 2025-02-04
> Just hitting the windows key and typing "notepad" and hitting enter has gone from something that was near instant in windows XP to something that takes 30 seconds and only sometimes might be successful
Agreed. It's also surprisingly easy to fix - disable web search in the start menu. [0]
> Because as horrible as defender is, have you experienced commercial AV products?
yes, and they're a disgrace. I don't normally engage in baiting on here, but honestly a lot of them are worse than the viruses they protect you from. McAfee and Norton are _literally_ spyware.
At $PREV_JOB carbon black was installed over the weekend, and I was working on some performance related tasks. All my results were invalidated because of the slowdown it imparted on _everything_.
That doesn't give defender a free pass for falling from grace though.
[0] https://weblog.west-wind.com/posts/2024/May/03/Speed-up-your-Start-Men…
captainmuon · 2022-08-29
I've encountered the problem he describes in WinUI, too. It can happen in any toolkit where you bind to change events of "observables". In my case I had a list view and a details view, and when you pressed down in the list view, it would get janky and struggle to update the detail view in time. To make it worse, sometimes selecting a different row would hit off a HTTP request in the background to update some cached data.
I ended up implementing a similar rate limiter, I think based on this here: https://weblog.west-wind.com/posts/2017/Jul/02/Debouncing-and-Throttli… (I've never shipped it though.)
The art is to get the behavior just right. You want the first request to go through immediately, so on a single click the user sees low latency. But afterwards you need to throttle it so that it only updates every, say, 500 ms. And you must not forget to display the very latest state, if there is no new event after e.g. 50 ms.
This seems like one of those things that are really hard to get right and the toolkit developer should have solved for you. I've struggled with it a couple of times now.