Rick Strahl's Web Log
Wind, waves, code and everything in between...
Ad-free experience sponsored by:
- the market leader of .NET and Java APIs for file formats – natively work with DOCX, XLSX, PPT, PDF, images and more
WebLog Posts in Category ASP.NET
June, 2018 (2)
May, 2018 (2)
April, 2018 (2)
March, 2018 (1)
February, 2018 (1)
January, 2018 (1)
December, 2017 (2)
November, 2017 (4)
October, 2017 (2)
September, 2017 (6)
August, 2017 (1)
July, 2017 (3)
June, 2017 (2)
May, 2017 (2)
April, 2017 (4)
March, 2017 (5)
February, 2017 (2)
January, 2017 (4)
December, 2016 (5)
November, 2016 (4)
October, 2016 (4)
September, 2016 (5)
August, 2016 (1)
July, 2016 (1)
Visual Studio (47)
ASP.NET Core (30)
Web Services (19)
Web Api (16)
.NET Core (10)
Microsoft AJAX (8)
Sql Server (8)
Web Connection (7)
West Wind Ajax Toolkit (7)
Entity Framework (6)
Internet Explorer (6)
Live Writer (5)
Html Help Builder (5)
Source Control (4)
Markdown Monster (4)
Help Builder (3)
Software Development (3)
Web Browser Control (3)
ASP.NET vNext (2)
Visual Studio (1)
.NET Standard (1)
Control Development (1)
Dynamic Types (1)
Web Deployment Projects (1)
Web Design (1)
Visual Studio Code (1)
Microsoft renames ASP.NET 5 to ASP.NET Core 1.0
January 21, 2016 - Maui, HI
ASP.NET 5 has been renamed to ASP.NET Core 1.0 and in the process some major changes are happening to the framework very late in the release cycle. In this post I take a look at some of the concern I have when I see these drastic changes so late in the release cycle and some thoughts on how I've worked with ASP.NET Core so far and some of the trepidations I have moving forward.
Serving URLs with File Extensions in an ASP.NET MVC Application
November 13, 2015 - Maui, HI
I ran into an issue trying to create a specific file URL for Windows Live Writer in an MVC application, where I needed to return a very specific file based URL with an extension from an MVC application. Turns out that this is not as easy as it sounds.
Rebooting Database Localization for ASP.NET with West Wind Globalization 2.0
June 23, 2015 - Hood River, OR
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.
ASP.NET MVC HttpVerbs.Delete/Put Routes not firing
April 09, 2015 - Maui, HI
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.
Back to Basics: UTC and TimeZones in .NET Web Apps
February 10, 2015 - Maui, HI
Storing dates in persistent storage using UTC dates is a widely accepted best practice. But it's surprisingly complex using date data effectively if you want to let the user see dates and query data in their local time zone. Looking around I noticed that there's not a lot of comprehensive info on this topic, so I decided to take notes and write down some of the approaches I've used in this post. This post combines and overview and a number of helper routines specifically geared towards user timezone adjustments in typical ASP.NET Web applications.
Project Navigation and File Nesting in ASP.NET MVC Projects
June 30, 2014 - Hood River, OR
Project navigation in large projects can be a pain as you have to sift through large amounts of files. I found myself re-organizing projects in a few different ways to make project navigation easier. In this blog post I share a few different approaches as well as some useful tooling to improve my daily workflow.
A dynamic RequireSsl Attribute for ASP.NET MVC
June 18, 2014 - Hood River, OR
In ASP.NET MVC the RequireHttps attribute allows for securing controllers and controller methods, but it's limited to either on or off statically. In this post I discuss a custom attribute that can dynamically set SSL usage based on a configuration setting or delegate.
Updated ASP.NET Database Resource Provider
March 31, 2014 - Maui, HI
I've updated my database ASP.NET Resource Provider project into a more formal project with a new home page, and official GitHub repository for the source code as well as a getting started video. In this video I talk about what's new and a few examples on how to use the provider.
Auto Selecting Cultures for Localization in ASP.NET
March 27, 2014 - Maui, HI
When creating multi-language Web sites, one of the key issues you need to deal with is how to assign a culture to display the appropriate resources. Whether you need to auto-switch locales based on browser language, or explicitly assign a locale based on user preferences there is generally some code logic involved in making these decisions. In this post I show what options are available and a small helper that simplifies setting the culture in ASP.NET applications.
Re-examining ASP.NET and Helios Performance Tests
December 09, 2013 - Maui, HI
Spend a little time over the weekend re-running some of my ASP.NET raw throughput benchmarks on my new machine and found some interesting results. Much faster, but also some surprises with self-hosting and efficiency surprises with various Web API approaches.
Routes, Extensionless Paths and UrlEncoding in ASP.NET
November 14, 2013 - Maui, HI
When using custom routing in your ASP.NET applications be careful with encoding routes into paths. Specifically make sure that embedded route paths are properly encoded and that you watch out for a few gotchas related to path encoding. This post demonstrates how to set up routes for a WebForms app and demonstrates a couple of potential problems of manual route encodings and the fixes.
Use IIS Application Initialization for keeping ASP.NET Apps alive
October 02, 2013 - Maui, HI
Ever want to run a service-like, always-on application inside of ASP.NET instead of creating a Windows Service or running a Console application? Need to make sure that your ASP.NET application is always running and comes up immediately after an Application Pool restart even if nobody hits your site? The IIS Application Initialization Module provides this functionality in IIS 7 and later, making it much easier to create always-on ASP.NET applications that can act like a service.
Rendering ASP.NET MVC Razor Views outside of MVC revisited
July 15, 2013 - Pag, Croatia
Rendering ASP.NET MVC Views outside of the context of MVC can be immensely useful for various administration, error and logging tasks. Luckily there are some easy ways to render MVC even outside of an MVC controller. Here's some information on how to make that happen.
A first look at SignalR
May 22, 2013 - Maui, Hawaii
Last month I finally had a chance to use SignalR in a live project for the first time, and I've been impressed by what this technology offers to .NET developers. It's easy to use and provides rich real-time two way messaging between client and server applications, as well as the ability to broadcast message to all connected clients. This is technology that offers many opportunities to rethink of what we can build with Web applications.
A small, intra-app Object to String Serializer
April 01, 2013 - Maui, Hawaii
On a few occasions I've needed a very compact serializer for small and simple, flat object serialization, typically for storage in Cookies or a FormsAuthentication ticket in ASP.NET. XML and JSON serialization are too verbose for those scenarios so a simple property serializer that strings together the values was needed. Originally I did this by hand, but here is a class that automates the process.
Using plUpload to upload Files with ASP.NET
March 12, 2013 - Maui, Hawaii
plUpload is a popular client side multi-file upload component. In this article I describe a small library that abstracts the server side processing of uploaded files with an HTTP handler demonstrate putting it all together with a small Image Upload sample application.
ASP.NET Frameworks and Raw Throughput Performance
September 04, 2012 - Maui, Hawaii
I got curious the other day: How do the various ASP.NET framework compare in raw throughput performance? With so many development choices on the ASP.NET stack available today it's interesting to take an informal look at how raw throughput performance compares.
GZip/Deflate Compression in ASP.NET MVC
April 28, 2012 - Maui, Hawaii
If you want to create ASP.NET MVC content that uses gzip or deflate compression you need to use some custom code. Here's an action filter that compresses content in your ASP.NET MVC applications.
Internet Explorer and Cookie Domains
April 25, 2012 - Maui, Hawaii
Got tripped up today by another IE issue: Internet Explorer will not accept Cookies with local domains set for the Cookie Domain and fail silently.
ASP.NET MVC Postbacks and HtmlHelper Controls ignoring Model Changes
April 20, 2012 - Maui, Hawaii
Today I discovered an MVC behavior I hadn't noticed: For HTML helper controls MVC always uses POSTBACK values to display the control value rather than model values when the View is rendering in a POST back. In effect this means that MVC Views can't update the value of controls during a POST back using the standard HTML Helper Controls.
Wishful Thinking: Why can't HTML fix Script Attacks at the Source?
April 14, 2012 - Maui, Hawaii
I'm dealing with user HTML input in a Web application today and again I curse over the complexities involved in sanitizing this html. So today I started dreaming about a possible alternative...
Changing the default HTML Templates to HTML5 in Visual Studio
December 23, 2011 - Maui, Hawaii
The default WebForms templates in Visual Studio still use the XHTML doctype headers by default. HTML5 doctype headers are easier to use and read and with HTML5 support now becoming mainstream and backward compatible with older browsers its time to switch those doctype headers. This post demonstrates how to change the default VS templates or create new templates altogether. With HTML becoming more prominent and the new headers being easier to read and smaller in size, it's
Debugging Application_Start and Module Initialization with IIS and Visual Studio
December 15, 2011 - Maui, Hawaii
If you're running the full version of IIS and you try to debug your Web application's startup code in Application_Start you might have found that you can't debug this code as the debugger doesn't break there. Here's why and some easy ways you can work around this limitation.
HTML 5 Input Types on WebForms Controls
December 10, 2011 - Maui, Hawaii
HTML5 input types are new, and as it turns out ASP.NET Webforms input controls can easily create HTML5 input elements.
Loading jQuery Consistently in a .NET Web App
October 10, 2011 - Hood River, Oregon
Loading jQuery into a page consistently across the lifetime of an application involves, managing versions and updating urls frequently. In this post I look at my preferred way to load jQuery and how to manage the script reference that gets embedded into the page with a single update location.
Getting a Web Resource Url in non WebForms Applications
October 05, 2011 - Hood River, Oregon
Need to retrieve Web Resource Urls from a .NET assembly, but not running in WebForms? Here's how you can create a small helper function that lets you retrieve WebResourceUrls from Razor or MVC applications.
ASP.NET GZip Encoding Caveats
May 02, 2011 - Maui, Hawaii
GZip and Deflate compression is easy to use in ASP.NET applications, but there are a few caveats that you need to watch out for. This post reviews the basics of implementing compression in ASP.NET code and describes a couple of scenarios that can cause problems when using programmatic compression via Response.Filter.
Custom ASP.NET Routing to an HttpHandler
March 28, 2011 - Maui, Hawaii
Routing support in ASP.NET 4.0 has been vastly improved, but custom routing still involves a fairly complex process of creating RouteHandlers and mapping requests properly. In this post I show an example of how to create custom routes automatically via Attribute route mapping for Http Handler endpoints.
Changing an HTML Form's Target with jQuery
January 30, 2011 - Chennai, India
Retrieve the full ASP.NET Form Buffer as a String
January 17, 2011 - Chennai, India
How do you get the full Request.Form buffer in an ASP.NET request as a string? Here's how with a simple function.
Adding proper THEAD sections to a GridView
November 18, 2010 - Maui, Hawaii
ASP.NET's GridViews (and the older DataGrid) don't generate the best HTML and one of the common problems I run into is that headers aren't generated with proper thead tags. With a little jQuery script help this can be fixed easily when the page loads. Here's how.
Request Limit Length Limits for IIS’s requestFiltering Module
October 28, 2010 - Maui, Hawaii
Got bit during an update today by code that ran just fine on my dev machine and failed on OpenID logins on the live machine. Turns out RequestFiltering was not allowing the long OpenID urls to be served, a problem that's easy to hit with the default settings in Windows Server 2008.
Microsoft Introduces WebMatrix
August 17, 2010 - Maui, Hawaii
Microsoft recently released a preview of WebMatrix a tool geared towards hobby/non-developer types to build Web applications. This all in one environment is supposed to simplify Web development with having to be an expert. In this post I review some of the interesting features and how they stack up.
AspNetCompatibility in WCF Services – easy to trip up
April 12, 2010 - Maui, Hawaii
When using ASP.NET compatiblity in WCF REST services you'll want to be very careful in matching your configuration settings and service attributes in the correct combination or you may end up with unpleasant and hard to find ServiceActivationExceptions.
HttpContext.Items and Server.Transfer/Execute
January 20, 2010 - Maui, Hawaii
I got bitten by a the fact that the Context.Items collection stays active throughout the ENTIRE lifetime of an ASP.NET request including Server.Transfer and Execute calls. In certain situations this can cause big problems if you expect the items to be unique for the specific page/component request.