Last 50 Comments

re: Using CSS Transitions to SlideUp and SlideDown
Sunday @ 9:59am | by nonbrake

Hi, you have to add resize function for resizing window then counted outerHeight isn´t correct after window resizing.
re: Passing multiple simple POST Values to ASP.NET Web API
Friday @ 1:12pm | by Royi Namir

NOw with nullable types supports


public class SimplePostVariableParameterBinding : HttpParameterBinding
{
    private const string MultipleBodyParameters = "MultipleBodyParameters";
 
    public SimplePostVariableParameterBinding(HttpParameterDescriptor descriptor)
        : base(descriptor)
    {
    }
 
    /// <summary>
    /// Check for simple binding parameters in POST data. Bind POST
    /// data as well as query string data
    /// </summary>
    /// <param name="metadataProvider"></param>
    /// <param name="actionContext"></param>
    /// <param name="cancellationToken"></param>
    /// <returns></returns>
    public override Task ExecuteBindingAsync(ModelMetadataProvider metadataProvider,
                                                HttpActionContext actionContext,
                                                CancellationToken cancellationToken)
    {
        string stringValue = null;
 
        NameValueCollection col = TryReadBody(actionContext.Request);
        if (col != null)
            stringValue = col[Descriptor.ParameterName];
 
        // try reading query string if we have no POST/PUT match
        if (stringValue == null)
        {
            var query = actionContext.Request.GetQueryNameValuePairs();
            if (query != null)
            {
                var matches = query.Where(kv => kv.Key.ToLower() == Descriptor.ParameterName.ToLower());
                if (matches.Count() > 0)
                    stringValue = matches.First().Value;
            }
        }
 
        object value = StringToType(stringValue);
 
        // Set the binding result here
        SetValue(actionContext, value);
 
        // now, we can return a completed task with no result
        TaskCompletionSource<AsyncVoid> tcs = new TaskCompletionSource<AsyncVoid>();
        tcs.SetResult(default(AsyncVoid));
        return tcs.Task;
    }
 
 
    /// <summary>
    /// Method that implements parameter binding hookup to the global configuration object's
    /// ParameterBindingRules collection delegate.
    /// 
    /// This routine filters based on POST/PUT method status and simple parameter
    /// types.
    /// </summary>
    /// <example>
    /// GlobalConfiguration.Configuration.
    ///       .ParameterBindingRules
    ///       .Insert(0,SimplePostVariableParameterBinding.HookupParameterBinding);
    /// </example>    
    /// <param name="descriptor"></param>
    /// <returns></returns>
    public static HttpParameterBinding HookupParameterBinding(HttpParameterDescriptor descriptor)
    {
        var supportedMethods = descriptor.ActionDescriptor.SupportedHttpMethods;
 
        // Only apply this binder on POST and PUT operations
        if (supportedMethods.Contains(HttpMethod.Post) ||
            supportedMethods.Contains(HttpMethod.Put))
        {
            var supportedTypes = new Type[] { typeof(string), 
                                                typeof(int), 
                                                typeof(int?), 
                                                typeof(decimal), 
                                                typeof(decimal?), 
                                                typeof(double), 
                                                typeof(double?), 
                                                typeof(long), 
                                                typeof(long?), 
                                                typeof(bool),
                                                typeof(bool?),
                                                typeof(DateTime),
                                                typeof(DateTime?),
                                                typeof(byte[])
                                            };
 
            if (supportedTypes.Count(typ => typ == descriptor.ParameterType) > 0)
                return new SimplePostVariableParameterBinding(descriptor);
        }
 
        return null;
    }
 
 
    object StringToType(string stringValue)
    {
        object value = null;
 
        if (stringValue == null) value = null;
        else if (Descriptor.ParameterType == typeof (string)) value = stringValue;
        else if (Descriptor.ParameterType == typeof (int)) value = int.Parse(stringValue, CultureInfo.CurrentCulture);
 
        else if (Descriptor.ParameterType == typeof (int?)) value = string.IsNullOrWhiteSpace(stringValue) ? (int?) null : int.Parse(stringValue, CultureInfo.CurrentCulture);
        else if (Descriptor.ParameterType == typeof (long)) value = long.Parse(stringValue, CultureInfo.CurrentCulture);
        else if (Descriptor.ParameterType == typeof (long?)) value = string.IsNullOrWhiteSpace(stringValue) ? (long?) null : long.Parse(stringValue, CultureInfo.CurrentCulture);
        else if (Descriptor.ParameterType == typeof (decimal)) value = decimal.Parse(stringValue, CultureInfo.CurrentCulture);
        else if (Descriptor.ParameterType == typeof (decimal?)) value = string.IsNullOrWhiteSpace(stringValue) ? (decimal?) null : decimal.Parse(stringValue, CultureInfo.CurrentCulture);
        else if (Descriptor.ParameterType == typeof (double)) value = double.Parse(stringValue, CultureInfo.CurrentCulture);
        else if (Descriptor.ParameterType == typeof (double?)) value = string.IsNullOrWhiteSpace(stringValue) ? (double?) null : double.Parse(stringValue, CultureInfo.CurrentCulture);
        else if (Descriptor.ParameterType == typeof (DateTime)) value = DateTime.Parse(stringValue, CultureInfo.CurrentCulture);
        else if (Descriptor.ParameterType == typeof (DateTime?)) value = string.IsNullOrWhiteSpace(stringValue) ? (DateTime?) null : DateTime.Parse(stringValue, CultureInfo.CurrentCulture);
        else if (Descriptor.ParameterType == typeof (bool))
        {
            value = false;
            if (stringValue == "true" || stringValue == "on" || stringValue == "1") value = true;
        }
        else if (Descriptor.ParameterType == typeof (bool?))
        {
            value = false;
            if (string.IsNullOrWhiteSpace(stringValue)) value = (bool?) null;
            else
                if (stringValue == "true" || stringValue == "on" || stringValue == "1") value = true;
        }
        else value = stringValue;
 
        return value;
    }
 
    /// <summary>
    /// Read and cache the request body
    /// </summary>
    /// <param name="request"></param>
    /// <returns></returns>
    private NameValueCollection TryReadBody(HttpRequestMessage request)
    {
        object result = null;
 
        // try to read out of cache first
        if (!request.Properties.TryGetValue(MultipleBodyParameters, out result))
        {
            var contentType = request.Content.Headers.ContentType;
 
            // only read if there's content and it's form data
            if (contentType == null || contentType.MediaType != "application/x-www-form-urlencoded")
            {
                // Nope no data
                result = null;
            }
            else
            {
                // parsing the string like firstname=Hongmei&lastname=ASDASD            
                result = request.Content.ReadAsFormDataAsync().Result;
            }
 
            request.Properties.Add(MultipleBodyParameters, result);
        }
 
        return result as NameValueCollection;
    }
 
    private struct AsyncVoid
    {
    }
}

re: Accepting Raw Request Body Content with ASP.NET Web API
Friday @ 11:33am | by Rick Strahl

@Rob - You need .NET 4.0 at least.
re: Accepting Raw Request Body Content with ASP.NET Web API
Friday @ 11:02am | by Rob

I like it. Can this be done in VS2008 with .NET framework 3.5 or are more current versions required? Thanks
re: GZip/Deflate Compression in ASP.NET MVC
November 19, 2014 @ 11:03am | by Rick Strahl

@Dan - not sure why the bracketing would be required? Headers.Remove() will remove the headers if the value exists, otherwise it does nothing so either way it would work.
re: GZip/Deflate Compression in ASP.NET MVC
November 19, 2014 @ 6:32am | by Dan Napierski

Great article. Thank you.

I had to make the following change to have it work on my development machine:

if (HttpRuntime.UsingIntegratedPipeline)
{
response.Headers.Remove("Content-Encoding");
}
re: ASP.NET MVC Postbacks and HtmlHelper Controls ignoring Model Changes
November 17, 2014 @ 11:01am | by John Hawkins

None of the above worked, but UpdateModel did
re: Rounded Corners and Shadows – Dialogs with CSS
November 16, 2014 @ 9:19pm | by Syed

Hi,

This was a great example and a nice way of explaining most of the tricks...

How can we further modify this to show the dialog/popup at the mouse position. is it possible?
re: HTML5 and CSS3 Editing in Windows Live Writer
November 15, 2014 @ 4:23pm | by Patrick

Just a note in case someone runs into this...

After I added WindowsLiveWriter.exe (v16.4.3528.331) with a Reg_Dword to 10000, the split post (dashed line with a "more" tag) in the edit tab disappeared. <!--More--> still shows up in the source tab. Might be caused by fixing the page width with default css.

Overall, the posts look more like the online content and I'm gaining more than what I'm losing. Thanks!
re: ClientIDMode in ASP.NET 4.0
November 14, 2014 @ 4:40pm | by Mark

So I was playing around with this and found several odd things.

I put Static on my page and Predictable on the immediate child control and found that repeater/gridview controls behave a little oddly.

Say you have a GridView that repeats a number of rows with a number of child controls. You get
<tr id="...Foo_0">
<td><input type="hidden" id="...Foo_ChildId_0"></td>
...

So if you're looking at the ids and trying to infer relationships (in a more limited form) the child control doesn't cleanly match the parent.

Just bitchin', but it seems like Foo_0_ChildId would have been more intuitive behavior...
re: Accepting Raw Request Body Content with ASP.NET Web API
November 14, 2014 @ 4:07pm | by Phil

This is cool and helped me handle this scenario, but this whole block is unnecessary, as well as the empty task class.

var binding = actionContext
            .ActionDescriptor
            .ActionBinding;
 
        if (binding.ParameterBindings.Length > 1 || 
            actionContext.Request.Method == HttpMethod.Get)            
            return EmptyTask.Start();            
 
        var type = binding
                    .ParameterBindings[0]
                    .Descriptor.ParameterType;


1. Assuming it can be the only parameter period is false - A FromUri parameter, or any other parameter whose binding returns false for WillReadBody, should work fine alongside this. (note that if you pair this with FromBody, instead of failing gracefully like this attempts the controller just refuses to bind)
2. Hardcoding GET as not working with this is kind of unnecessary.
3. The type parameter is searching through an array for, what ends up being, "this".
You can replace it with
var type = Descriptor.ParameterType;

re: A dynamic RequireSsl Attribute for ASP.NET MVC
November 14, 2014 @ 12:46pm | by Davide

Hi Rick,

I used your solution modifying it a little bit to my project. I think you missed how to use a custom SSL port on development machine. After spending a few hours googling, I found out here a solution http://stackoverflow.com/questions/7104703/how-to-specify-a-different-port-with-the-requirehttps-attribute-in-mvc3. I applied a rewrite url in web.config.

Cheers,
Davide
re: AngularJs and Promises with the $http Service
November 13, 2014 @ 4:08pm | by Rick Strahl

@John - no I think you have that right. The reason is that .then() receives the message object, rather than results in its success handler which is ugly and I'm guessing that's why this was done. I really wish though that .then() handlers would work like the .success()/.error() handlers and maybe have an additional parameter for the message object rather than these helpers that make it very inconsistent to return the promise.

One scenario where this matters is when you cache data for example. Say you want to make an $http call to get the data, but return cached data instead of calling the $http handler if the data is already local. Now you have to create a custom promise adding .success() and .error() methods in order to return your custom promise() for the cached data which is pretty ugly.

I've created a helper function that basically lets me turn any promise() into a $http compatible promise to make this work for more easily for me so I have one call to make that work. It's not exactly clean but at least that helps keep service output consistent.

It's all pretty minor in the big picture of features, but is something I've stumbled with a few times and I see others running into this all the time as well.
re: AngularJs and Promises with the $http Service
November 13, 2014 @ 1:14pm | by John B

Internally, the success() and error() functions are just thin wrappers around the then() function, corresponding to the successCallback and errorCallback functions of the promise. Perhaps I'm wrong in this thought, but I've always considered them to be "helper" functions to make processing HTTP responses easier, rather than requirements for use.

The only benefit I see to using success() and error() is that they include the original config, which then() does not. If you don't need that, then I wouldn't (and haven't) bothered using them.
re: Accepting Raw Request Body Content with ASP.NET Web API
November 11, 2014 @ 1:04pm | by Chandana

Thanks a ton!! works perfectly for my need.
re: Using JSON.NET for dynamic JSON parsing
November 09, 2014 @ 11:11pm | by Ajay Raval

Looking for these for Some time now.
Thanks a ton...
+1 for explaination...
re: Visual Studio 2013 'Could not evaluate Expression' Debugger Abnormality
November 07, 2014 @ 5:14pm | by Chan Pal

I am getting a compilation error, when compiling a project containing .pc (PRO *C) files, which is the same one you all faced during debugging:

-------------------------------------------------------
PCC-S-02315, cannot evaluate expression as constant
Semantic error at line 18005, column 23, file D:\GC\CoreMSVS2012\..\Server\sql\vendors.pc:
1> char lv_last_changed[triple(20)] = {0};
-------------------------------------------------------

Where triple(20) is an #define to to do some calculation.

It was working good in VS2008, but from VS2012 to VS2013, it is throwing this error. If you know any answer to this, please share here. Thank you!
re: Prefilling an SMS on Mobile Devices with the sms: Uri Scheme
November 04, 2014 @ 1:01pm | by danielsdesk

FYI for iOS 8, you have to use an & instead of ; now and body prefill will work... however it still seems to be impossible on iOS7 (so basically iOS 5-6 and 8 can prefill body)
re: Passing multiple simple POST Values to ASP.NET Web API
November 04, 2014 @ 11:37am | by Eric Johnson

Thanks for the helpful code.

I'm not sure if this is the best way to go about it, but to also bind route parameters I added this code after the body and query string checks:
if (stringValue == null)
{
    var routeData = (HttpRouteData)actionContext.Request.Properties["MS_HttpRouteData"];
    object routeParameterValue;
    if (routeData.Values.TryGetValue(Descriptor.ParameterName, out routeParameterValue))
    {
        stringValue = (string)routeParameterValue;
    }
}

Also, per MS documentation (http://www.asp.net/web-api/overview/formats-and-model-binding/parameter-binding-in-aspnet-web-api), I added this:
public override bool WillReadBody
{
    get
    {
        return true;
    }
}

re: Entity Framework and slow bulk INSERTs
November 04, 2014 @ 1:03am | by codefire

that looks ugly!

Here are my results for a test on a Master-Details context,
using EF6 with SQLite.

for (int i = 0; i < 10000; i++)
{
Node measurementNode = new Node();
measurementNode.NodeKey = 2;
measurementNode.NodeName = "IntUS(ST-Ht)";
measurementNode.NodeOrder = 0;

CategoryDetail categoryDetail = new CategoryDetail();
categoryDetail.SoftID = "0x02A";
categoryDetail.CategoryInterval = 0;
categoryDetail.RecordTime = 3;

measurementNode.CategoryDetails.Add(categoryDetail);
measurementNodeList.Add(measurementNode);
}

_start = DateTime.Now;
db.Nodes.AddRange(measurementNodeList);
db.SaveChanges();
_totalSec = DateTime.Now.Subtract(_start).TotalSeconds;
Console.WriteLine("10000 Measurement Nodes + linked Category Details inserted in {0} seconds.", _totalSec);


Here is the output:
10000 Measurement Nodes + linked Category Details inserted in 4,7499525 seconds.
re: IIS 7 Error Pages taking over 500 Errors
October 28, 2014 @ 4:13pm | by Rick Strahl

@Anurag - Make sure you're not redirecting some errors elsewhere in the system. I think if you're using ASP.NET AUTH anywhere in the system it takes over the errors internally and handles redirection to authentication forms/endpoints. Technically a 401 isn't an error - it's a request to authenticate. Only if IIS gets failure authentication is it considered an error.
re: IIS 7 Error Pages taking over 500 Errors
October 27, 2014 @ 10:40pm | by Anurag Sharma

This code works file for 500 error code but not works for other error codes like 401, i have a rest web service and i have to set the response code according to the functionality.
re: .NET 4.5 is an in-place replacement for .NET 4.0
October 26, 2014 @ 3:57pm | by Adam Plocher

Windows 10 Tech Preview build 9860 returns 4.0.30319.0 from Environment.Version. This means any version detection used in code is going to fail if you need the revision #. For example, I can't run Sharp Develop 5.0 RC because of this. See screenshot: http://i.imgur.com/S8ai4IZ.png
re: Using CSS Transitions to SlideUp and SlideDown
October 26, 2014 @ 1:21pm | by Peter Hobbs

Great job here Rick. Your excellent article made my weekend. Really appreciate your detailed explanation.
re: AngularJs and Promises with the $http Service
October 25, 2014 @ 1:49pm | by Jim

Nice article Rick... We decided to go the AngularJs route.. I do love ExtJS4 but it's not free and licensing is confusing.... I'll still use jquery grids...
re: ASP.NET Routing not working on IIS 7.0
October 25, 2014 @ 12:54pm | by Ashish Thakur

Thanks Rick for posting such good articles,

I am able to perform GET and POST request through WebAPI on LocalHost development server via AJAX .

After deployment to IIS server on AWS I am not at all able to perform GET and POST through AJAX.( I have referred your articles related to WebAPI and ASP.Net passing multiple parameters and like others)

I have noticed following points after deployment to IIS Server.
1) when I typed URL for WebAPI I am able to get JSON data as expected from AWS.
2) AJAX returning error on POST and GET request
3) Fiddler returns JSON data as expected for GET

Is it related to ASP.Net Routing ?
Appreciate your time and guidance.
re: WebAPI: Getting Headers, QueryString and Cookie Values
October 24, 2014 @ 12:12pm | by Will

return request.GetQueryNameValuePairs()
                        .ToDictionary(kv => kv.Key, kv=> kv.Value, StringComparer.OrdinalIgnoreCase);


This will throw an exception for duplicate key, if a query parameter is repeated.
re: UNC Drive Mapping Failures: Network name cannot be found
October 23, 2014 @ 1:07pm | by jtlodi

Wonderful Rick. Obviously you've more than VFP in your toolbox!
MadFox says "Hello"
re: WCF WS-Security and WSE Nonce Authentication
October 23, 2014 @ 8:19am | by nikz2

FOR PASSWORD DIGEST! It works, but need some changes,
1st
"<{0}:Password Type=\"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#Digest\">" +
change to
"<{0}:Password Type=\"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordDigest\">" +

2nd as described here
http://stackoverflow.com/questions/19438000/working-algorithm-for-passworddigest-in-ws-security
re: Updated ASP.NET Database Resource Provider
October 22, 2014 @ 3:08am | by Mike

Could you please le us know where to start in order to change to a mySQL database? Thanks
re: HttpWebRequest and Ignoring SSL Certificate Errors
October 21, 2014 @ 8:24am | by Michael Bray

FYI this can now be set per-connection on HttpWebRequest in .NET 4.5
re: A jquery-watch Plug-in for watching CSS styles and Attributes
October 20, 2014 @ 12:18pm | by Rick Strahl

@Richard - Thanks for catching this and also for entering the issue on Github. Fixed.
re: Using FiddlerCore to capture HTTP Requests with .NET
October 20, 2014 @ 12:14pm | by Rick Strahl

@Solomon - did you actually read the post??? You can obviously capture output from other domains but you can capture localhost traffic. You can also capture SSL traffic but you have to enable it - see the bottom section of the post.
re: Help with working with multiple Unicode Locales in a VFP ANSI application
October 20, 2014 @ 11:49am | by Rick Strahl

@Marlo - the Codepage has to be the same both on the input end and the output end. So the database has to be in the right code page, the client that created the record had to be using the same codepage and the user on the other end reading the data has to use the same codepage. If anywhere in there the codepage doesn't match you get the ???? character translation issue.
re: A jquery-watch Plug-in for watching CSS styles and Attributes
October 20, 2014 @ 6:52am | by Richard

If I'm reading this right, there's a problem with reading the initial value of attributes:
$.each(data.props, function (i) { data.vals[i] = el$.css(data.props[i]); });

Shouldn't that be checking whether data.props[i] starts with "attr_", and calling el$.attr if it does?
re: Using FiddlerCore to capture HTTP Requests with .NET
October 20, 2014 @ 2:47am | by Solomon

Great work -request to server normally come from client anywhere not localhost. Hostname is confiured to this regards.Am I missing anything here please - do this program decrypt SSL from incoming request from another machine even though certificates was created in the code?. I can see this in code // Ignore HTTPS connect requests
if (sess.RequestMethod == "CONNECT")
return;
re: Help with working with multiple Unicode Locales in a VFP ANSI application
October 18, 2014 @ 10:04pm | by MARLO

hi is anybody can help me regarding the russian characters for example in the entry form or if you upload to foxpro 9 dbf files it became scrats ?????...
I already change the settings of my computer to russian but the same...if you type in foxpro dbf file russian character p the system will change it to b i dont understand why....
re: West Wind WebSurge - an easy way to Load Test Web Applications
October 17, 2014 @ 7:02pm | by Rick Strahl

@Joe - What would you like to see and which parts do you want open for automation?

Currently you have command line operation so you can fire off tests from a build process or test harness.

If you have a focused idea for a feature you're looking for you can open an issue on Github (https://github.com/RickStrahl/WestWindWebSurge/issues), or if you want to have a more interactive discussion you can leave a message here or on our message board (http://west-wind.com/wwThreads/default.asp?forum=West+Wind+WebSurge). I'd be happy to explore what you're thinking about...
re: West Wind WebSurge - an easy way to Load Test Web Applications
October 17, 2014 @ 5:46pm | by Joe

This tool seems very thorough. Can this tool be adapted to automate testing?

Thanks for the free tools and reasonably priced products your offer.
re: DataTable JSON Serialization in JSON.NET and JavaScriptSerializer
October 17, 2014 @ 8:49am | by Jacob

This might help someone in the future, maybe me after I forget what I did.

Made a change to the DataRowConverter to handle rows that are sub-tables. Note that the method uses the newer parameterization, passing the root JsonSerializer.

        public override void WriteJson(JsonWriter writer, object dataRow, JsonSerializer serializer)
        {
            DataRow row = dataRow as DataRow;
 
            //JsonSerializer ser = new JsonSerializer();
 
            writer.WriteStartObject();
            foreach (DataColumn column in row.Table.Columns)
            {
                if (column.GetType() == typeof(DataTable))
                {
                    DataTableConverter converter = new DataTableConverter(json);
                    converter.WriteJson(writer, column, json);
                }
                writer.WritePropertyName(column.ColumnName);
                //ser.Serialize(writer, row[column]);
                json.Serialize(writer, row[column]);
            }
            writer.WriteEndObject();
        }

re: Capturing Performance Counter Data for a Process by Process Id
October 14, 2014 @ 12:54pm | by Rick Strahl

Thanks for the reference, Andrei. I've run into the 'process goes away' problem with long running process monitoring myself so I can relate to that.

OTOH, in cases when you are monitoring specific processes it seems that you are likely profiling a longer running process or service so this is probably much less of an issue than with just a desktop application that might come and go frequently.
re: Capturing Performance Counter Data for a Process by Process Id
October 14, 2014 @ 8:28am | by Andrei

Good article! One thing to mention related to windows process instance names is that they change dynamically when one of the processes exits.

For example if chrome#8 exits, chrome#9 will become chrome#8 and chrome#10 will become chrome#9. At this point getting the value of the counter previously created for chrome#10 will throw an exception.
This is really annoying if you want to to monitor multiple instances of multiple processes as it gets down to monitoring process exits and recreating all the counters (really ugly).

One way would be to change the way process instance names are generated (see http://support.microsoft.com/kb/281884) but this has the potential of affecting other apps using the perfmon api.
re: Error on 64 Bit Install of IIS – LoadLibraryEx failed on aspnet_filter.dll
October 13, 2014 @ 6:21am | by Vlad

Thank you for posting this, helped me a lot. While searching for answers I saw that everyone else was happy with just enabling 32 bit apps on the application pool, you were among the few that were concerned about the root problem.

Cheers!
re: Self-Hosting SignalR in a Windows Service
October 10, 2014 @ 8:11am | by Matthew Nichols

Thanks for this Rick...I have had a hard time finding an example of calling into a Hub from an outside source to publish data to connected SignalR clients...this gets me started.
re: Chrome DevTools Debugging Issues
October 09, 2014 @ 1:16pm | by Rick Strahl

@Miki - For me opening the file doesn't work properly either. The code simply doesn't step the display. As you say the debugger seems to work - I can step and see the next stop in the call stack, but the file display doesn't keep in sync. Even if the same file worked with most apps these days my code steps through many source files. I'll check Canary again but last I checked a few days ago this didn't work.

What's frustrating is that it's intermittent. With some code it works just fine. With other code it simply doesn't work at all.
re: Westwind Application Configuration Updates
October 09, 2014 @ 1:05pm | by Rick Strahl

@Dirk - List encryption works only if you encrypt the entire list in the .config provider. IOW, the top level list property on the object. It'll encrypt/decrypt the encoded list string. There's no support for individual list values.

JSON storage in the database is not directly supported, but you can use the string provider to generate the JSON and store and retrieve that from the db manually. You can open an issue on Github and add it as a suggestion. Would be easy enough to add this functionality as another provider.
re: Chrome DevTools Debugging Issues
October 09, 2014 @ 11:48am | by PilotBob

I would suggest turning off source map support in the debugger. See if that helps.

There is always the IE debugger, visual studio, firebug, yea, I know... not helpful. ;)
re: Chrome DevTools Debugging Issues
October 09, 2014 @ 6:14am | by Miki

If your source file is already visible, try F10 to step over and force a scroll to the next line. From my experience, the actual debugging works fine, the problem is the UI not showing the current line.
Where is the logged issue? I'd like to +1 and track it.
re: Chrome DevTools Debugging Issues
October 09, 2014 @ 5:49am | by Jeremy

Ran into this as well. Is a known bug and only happens if you have the rev tools window up when the page is loaded. I switched to the dev version and it seems to be fixed there. Haven't run into it for a while.
re: Westwind Application Configuration Updates
October 09, 2014 @ 5:40am | by Dirk Beckmann

Hello I really love the Configuration Library. It's such a great tool!

I've got two questions. I'm using the SqlServerConfigurationProvider
#1. With support for Lists, how do I entrypt property in List objects? Is this possible?
#2. Is it possible to store the config data as JSON string in the database?

Best regards, Dirk


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