Contact   •   Articles   •   Products   •   Search

Rick Strahl's Web Log

Wind, waves, code and everything in between...
ASP.NET • C# • HTML5 • JavaScript • AngularJs

Announcing West Wind Web Surge 1.0



After an extended beta period I'm happy to announce West Wind WebSurge 1.0. Web Surge is a light weight and super easy to use HTTP Url and Load testing tool that is great for API testing and stress testing Web applications under load. In this post, I'll talk about some of the motivations for this tool and take a tour through a bulk of the features.

Read more...

The Rise of JavaScript Frameworks – Part 2: Tomorrow



JavaScript frameworks are undergoing a huge change for their V2 releases, going through the growing pains of providing a more modern platform and bridging new technologies. While the new frameworks promise improved performance and usability, there is also quite a bit of pain involved in respect to the build process and making the move to ES6.

Read more...

Upgrading ASP.NET 5 Projects between Beta Versions



Upgrading ASP.NET 5 projects from beta to beta has not been pretty. The beta 6 update has been one of the easier ones to work through, but still there's a process involved. In this post I describe the steps I tend to go through for each new beta release.

Read more...

Windows 10 RTM Upgrade and Driver Update Issues



My Windows 10 update from the Insider Previews to RTM did not go smooth. I had a driver issue that apparently was not allowing me to upgrade and Windows 10 doesn't allow for hiding updates. Here's what went wrong and how I fixed it.

Read more...

The Rise of JavaScript Frameworks - Part 1: Today



JavaScript frameworks have moved front and center in the mainstream in the last year and a half or so. When building modern Web applications, the bar has been raised significantly by what is possible in large part due to the more accessible mainstream frameworks that are available today to build rich client and mobile Web applications. In this post I'll explore why JavaScript frameworks have become so popular so quickly and how it effects the future of Web development. This two part series addresses the current state in this post, and the new crop of V2 frameworks arriving later this year in the Part 2.

Read more...

Multiple Desktops in Windows



Windows 10 natively supports multiple desktops which provides great opportunity for reducing clutter while working and getting stuff done. In this post I show how the new Windows 10 multi-desktop features work and also show how you can use multiple desktops in previous versions of Windows.

Read more...

Windows 10 Upgrade and IIS 503 Errors



After upgrading my machine to Windows 10 today I found that IIS, while working was throwing 503 Service Unavailable errors on every page. Turns out the issue is the Rewrite Module wasn't updated in the upgrade and that's causing a hard crash of the IIS module. Here's how to fix this issue.

Read more...

External Links in Cordova for iOS



When building Cordova apps for iOS you need to be prepared to deal with external links that you might want to open outside of the WebView control. By default any 'external' links routed to an href target or window.open() call are still opened in the same WebView rather than externally in Safari or whatever the default browser is. This often is a problem since there's no way to navigate back to your initial content. In this post I describe the problem and how to use a plug-in to work around what should be native behavior in any WebView control.

Read more...

Rebooting Database Localization for ASP.NET with West Wind Globalization 2.0



I'm happy to announce the release of Westwind.Globalization version 2.0 - a database resource localization library for ASP.NET. Version 2 is a major upgrade that includes many new features including support for new database providers, a brand new Web Resource Editor, much improved ASP.NET MVC support, vastly better support for importing and exporting Resx resources, creating of strongly typed classes and much more. There's also a new video that describes features and provides a getting started guide with some detailed background. In this post I review some of the new features and point at additional resources for more information.

Read more...

Turn off HTML Input Auto Fixups for Mobile Devices



You ever run into a Web site that messes with your user input when you don't want it to while using your phone? You know, capitalize the first letter when you're trying to enter a username, or email address, or auto-correct text while typing a part number. As a mobile Web developer it's easy to forget about these automatic behaviors, when you don't want them as auto correction and fixup is the default behavior. To provide the best user experience sometimes we need to be agressive about turning enhancement functionality off. In this post I talk about auto-fixup behaviors for mobile browsers and how to turn them off in your applications. Your users will thank you for paying attention to this small detail.

Read more...

Using and Debugging External Source Code Packages in ASP.NET 5



ASP.NET 5 and the new DNX runtime make it very easy to include external source code based packages into your own projects. It super easy to pull a project - including Microsoft's core DNX runtime projects, from GitHub and then link it into your own projects. This is great for debugging and fixing an immediate problem that might be a show stopper for you, or makes it very easy to contribute back to an open source library. In this post I'll describe a debug scenario I ran into in my last post involving a bug in the DNX runtimes, and show how to download and link the library from Microsoft's GitHub repository, fix the bug and integrate the code into my own project.

Read more...

IPad Scroll Issues with Fixed Content



Ran into some issues with fixed headers again in one of my mobile applications where on an iPad it appeared the content wouldn't scroll properly. I've run into this issue a few times and it turns out it's related to positional layout and specifically problematic on iPad Safari browsers. In this post I'll discuss the problem and the relatively simple workarounds.

Read more...

Strongly typed AppSettings Configuration in ASP.NET 5



ASP.NET 5 features a new configuration system that includes a number of new configuration sources as well as an easy way to consume strongly typed resources. In this post I demonstrate how to use the basic features and show how you can use different configuration stores to hold configuration data.

Read more...

How to manage Content in NuGet Packages?



In getting ready to put out version 2 of Westwind.Globalization I've been rearranging the NuGet package layout a few times and I'm considering further breaking out the package layout. In this post I describe some of the dilemmas I'm looking at in deciding how much abstraction is required in breaking the NuGet packages into easily usable and maintainable components with the least amount of friction.

Read more...

Interactive ASP.NET Resource Linking and Editing with Westwind.Globalization



Resource linking for resource editing is a very useful feature when localizing application, making it easy to jump back and forth between content and the resources that need to be edited. Seeing resource content in context is vital to good application localization. Westwind.Globalization provides a simple HTML based resource linking mechanism and in this post I describe how it works, and how it's implemented in the Westwind.Globalization library.

Read more...

Right To Left (RTL) Text Display in Angular and ASP.NET



Recently I was gently asked to add support for RTL language editing in my Westwind.Globalization library and the Web Resource Editor. The Editor supports displaying resources in all of its localized version, but it didn't respect the RTL setting for languages that required it. In this post I describe how RTL support works in browsers, how you can detect RTL support on a locale in .NET and demonstrate how I integrated basic RTL edit and display support for the Resource Editor using a custom Angular directive.

Read more...

Angular Select List Value not binding with Static Values



Ran into a problem converting from Angular 1.3 to 1.4rc a couple of days ago. The issue is that the way ng-model bindings work has changed, in that Angular 1.4 and later uses exact type matching for value comparisons which results in behavior changes. In my case I ran into a problem with static list values binding to a non-string value which caused the binding to effectively not work at all. Here's what the problem is and how to work around it.

Read more...

401 Response from ASP.NET Identity when linking to External Accounts



A couple of days ago I ran into an odd problem where all of my external ASP.NET Identity providers would fail to redirect to the external provider login URLs. Instead the app fired empty 401 requests without any other indication of failure. It turns out this was a misconfiguration issue, but it took a bit to track this down due to the fact that there's no error trapping and no error information. Here's more info on this edge case failure.

Read more...

Adding minimal OWIN Identity Authentication to an Existing ASP.NET MVC Application



ASP.NET 4 provides a new Identity Authentication/Authorization framework that's very comprehensive and works reasonably well for new applications. However, if you have existing applications or use custom user management, it's not very clear how to use just the basic OWIN Authentication/Authorization layer without the full UserManager and Entity Framework implementation. In this post I describe how to use the bare minimum Identity features to hook up a custom domain model for both local and external logins in an ASP.NET MVC application.

Read more...

ASP.NET MVC HttpVerbs.Delete/Put Routes not firing



If you're using ASP.NET MVC to build API endpoints in your application you might have run into a problem where the PUT and DELETE HTTP operations don't work - you get a 404 instead. Turns out that the IIS default configuration doesn't include the verbs for a required handler. Here's what the problem is, and how to fix it if it hits you.

Read more...

Adding Files to the Windows MRU/Recent Document List



In this post I talk about adding shortcut files to the Windows Most Recently Used (MRU) list that is also used for task bar icon Jump Lists. There are easy APIs that let you add associated files to your application's MRU. With a little extra work you can also read this list inside of your own applications so you can build your application specific MRU lists and let Windows manage the storage of the linked references rather than your own configuration. Here's how.

Read more...

Prettifying a JSON String in .NET



Occasionally it's useful to prettify an existing JSON string that you've received from somewhere: An HTTP response you need to look at while debugging or a UI that needs to display JSON to the user. Here's a small tip that makes it easy to take a JSON string and prettify it using the JSON.NET library.

Read more...

Bitmap types, Binary Resources and Westwind.Globalization



I've been working on supporting binary resource imports via the Web interface using Westwind.Globalization and I'm debating on whether supporting the .NET convention of importing image resources as Bitmaps is prudent. Bitmaps are rather unwieldy to use and are painful to export to common stream or file formats due to the funky 30 year old encoding architecture used by GDI+. In this post I talk about some of the issues I've run into with Bitmaps and why I'm considering importing resources simple as raw byte data.

Read more...

Updated DeleteFiles Utility now on Chocolatey



I've updated my DeleteFiles utility that can be used to recursively delete files and folders. I've recently updated the utility with a few new features including support for long paths (greater than MAX_PATH) that can choke out Explorer and other Windows shells. There are also additional options for previewing and recycle bin support as well quiet command line mode and a few improvements in the timeout filter for file selection. Last but not least, you can now install DeleteFiles directly from Chocolatey so it's easy to load DeleteFiles and get it onto your system and system path in seconds.

Read more...

ASP.NET MVC, Localization and Westwind.Globalization for Db Resources



Recently I've been getting a number of questions related to customers having issues with running the Westwind.Globalization Database Resource provider library under ASP.NET MVC. While the original versions of this library were definitely WebForms centric since it originated in the WebForms era, the library has had full support for ASP.NET MVC for a while. In this post I'll review how localization works in ASP.NET MVC and then demonstrate how Westwind.Globalization handles the same scenarios with database resources.

Read more...


West Wind  © Rick Strahl, West Wind Technologies, 2005 - 2015