Common mistake in ASP.NET Forms Authentication

We are all used to this now…


    

    

    

    

In ASP.NET Forms authentication, you can allow access to particular users or deny them using the allow and deny tags. Likewise, you can allow or deny access to particular roles.
E.g. to allow access to a page, say Customer, you will do


  

        

             //Allow users in Customers role

         // Deny rest of all users

    

   

Common Mistake is to place 

 before 



This web config below will not allow users even if they are in Customers role


  

        

             // Deny rest of all users

             //Allow users in Customers role       

    

   

VS 2010 SP1 (Beta) and IIS Express

ScottGu has blogged on the VS 2010 SP1 (Beta) and IIS Express, see his article here
Basically Visual Studio 2010 SP1 adds support for IIS Express
IIS Express is a free version of IIS 7.5 that is optimized for developer scenarios:

  • It’s lightweight and easy to install (less than 5Mb download and a quick install)
  • It does not require an administrator account to run/debug applications from Visual Studio
  • It enables a full web-server feature set – including SSL, URL Rewrite, and other IIS 7.x modules
  • It supports and enables the same extensibility model and web.config file settings that IIS 7.x support
  • It can be installed side-by-side with the full IIS web server as well as the ASP.NET Development Server (they do not conflict at all)
  • It works on Windows XP and higher operating systems – giving you a full IIS 7.x developer feature-set on all Windows OS platforms

Check out ScottGu’s blog and go for it.

ASP.NET Error Bar Chart

The Error Bar chart type consists of lines with markers that are used to display statistical information about the data displayed in a graph. A series of the Error Bar chart type has three Y values. While these values can be manually assigned to each point, in most cases, the values are calculated from the data present in another series. The order of the Y values is important because each position in the array of values represents a value on the error bar.


Adding Error Bar series to another series on same chart
Lets say we have a chart named Chart1 and series named Series1. 
We can add the Error Bar series to Series1 using the following snippet…
.

     Series errorBarSeries = new Series(“ErrorBar”);  

            errorBarSeries.ChartType = SeriesChartType.ErrorBar;  

            errorBarSeries.MarkerBorderColor = Color.FromArgb(64, 64, 64);  

            errorBarSeries.MarkerSize = 6;  

            errorBarSeries.YValuesPerPoint = 3;  

            errorBarSeries.BorderColor = Color.FromArgb(180, 26, 59, 105);  

            errorBarSeries.Color = Color.FromArgb(252, 180, 65);  

            errorBarSeries.ShadowOffset = 1;  

            errorBarSeries.MarkerStyle = MarkerStyle.None;  

            errorBarSeries[“PointWidth”] = “0.1”;  

            double error = 100;  

            foreach (DataPoint point in Series1.Points)  

            {  

                double centerY = point.YValues[0];  

                double lowerErrorY = centerY – error;  

                double upperErrorY = centerY + error;  

                errorBarSeries.Points.AddXY(point.XValue, centerY, lowerErrorY, upperErrorY);  

            }  

            Chart1.Series.Add(errorBarSeries); 

.
Calculating Error Values from Another Series
This can be done using the following code snippet.

  // Populate series with data
    double[]    yValues = {32.4, 56.9, 89.7, 98.5, 59.3, 33.8, 78.8, 44.6, 76.4, 68.9};
    Chart1.Series[“DataSeries”].Points.DataBindY(yValues);

    // Set error bar chart type
    chart1.Series[“ErrorBar”].ChartType = SeriesChartType.ErrorBar;

    // Link error bar series with data series
    Chart1.Series[“ErrorBar”][“ErrorBarSeries”] = “DataSeries”;

    // Set error calculation type
    Chart1.Series[“ErrorBar”][“ErrorBarType”] = “StandardError”;

    // Set error bar upper & lower error style
    Chart1.Series[“ErrorBar”][“ErrorBarStyle”] = “UpperError”;

    // Set error bar center marker style
    Chart1.Series[“ErrorBar”][“ErrorBarCenterMarkerStyle”] = “Circle”;
Adapted from:
MSDN Error Bar Chart     
Social MSDN Error Bar Chart

Using osql to do backup/restore and escaping special characters in ‘LIKE’

Using osql util
Some quick quips to share on Sql Server on using osql command line util to performe  backups/restore
backup

osql -E -Sinstancename -q “BACKUP DATABASE [dbname] TO  DISK = N’backupfile.bak’ WITH NOFORMAT, INIT,  NAME = N’dbName Database Backup’, SKIP, NOREWIND, NOUNLOAD,  STATS = 10”

restore

osql -E -Sinstancename  -q “RESTORE DATABASE [dbname] FROM  DISK = N’backupfile.bak’ WITH  FILE = 1,  NOUNLOAD,  REPLACE,  STATS = 10”

Using ‘LIKE’
Using ‘LIKE’ to determine if a value or a column of values IS ALL DIGITS

SELECT * FROM testtable WHERE columnxyz NOT LIKE ‘%[^0-9]%’



‘^’ means ‘NOT’, so the expression above evaluates to ‘Select only rows from testtable where everything in the columnxyz is a digit from 0 to 9’
Use the ESCAPE clause and the escape character in order to use special characters in your expression.
E.g. to find the exact character string 10-15% in column c1 of the mytbl2 table, we use

SELECT c1 FROM mytbl2 WHERE c1 LIKE ‘%10-15!% off%’ ESCAPE ‘!’

Further reading on the BOL LIKE reference

Using TRUNCATE_ONLY in SQL Server 2008

After upgrading to SQL Server 2008 from 2005, I got an error with one of my scripts. I am using Sql 2008 SqlExpress 10GB.

This is my T-SQL

BACKUP LOG “pathtomylogfile” WITH TRUNCATE_ONLY;

And I get this error:
Msg 155, Level 15, State 1, Line 1
‘TRUNCATE_ONLY’ is not a recognized BACKUP option.


So I asked myself if there is an option similar to what ‘TRUNCATE_ONLY’ was doing in 2005?
I posted a query at Ask Sql Server Central

I got very nice responses, including a link to this article by Brent Ozar


Check out the responses above, hope it helps you if you are upgrading to Sql Server 2008.
You can also read further on this article on how to configure Sql Server 2008



Google Instant

Google Instant is a new search enhancement that shows results as you type. We are pushing the limits of our technology and infrastructure to help you get better search results, faster. Our key technical insight was that people type slowly, but read quickly, typically taking 300 milliseconds between keystrokes, but only 30 milliseconds (a tenth of the time!) to glance at another part of the page. This means that you can scan a results page while you type.