<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://dotnetslackers.com/Community/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>KaushaL.NET</title><link>http://dotnetslackers.com/Community/blogs/kaushalparik/default.aspx</link><description>&lt;table cellpadding="0" cellspacing="0" style="width:100%;"&gt;
    &lt;tr&gt;
        &lt;td align="left" style="text-align:left;"&gt;
            &lt;p id="tagline" style="text-align:left;"&gt;
                &lt;img src="http://dotnetslackers.com/Community/blogs/kaushalparik/avatar_0e48be1b7ad0_128.png" alt="" /&gt;
                &lt;p&gt;
        &lt;/td&gt;
        &lt;td align="right" style="text-align:right;float:right;"&gt;
            { a .net developer&amp;#39;s blog; }
            &lt;br /&gt;&lt;br /&gt;
            &lt;a target="_blank" href="http://twitter.com/kaushalparik27" style="display:block;text-align:left;padding:3px 3px 3px 3px;"&gt;follow me on Twitter&lt;/a&gt;
            &lt;a target="_blank" href="http://kaushalparik.blogspot.com" style="display:block;text-align:left;padding:3px 3px 3px 3px;"&gt;Do You Know (DYK)?&lt;/a&gt;
            &lt;a target="_blank" href="https://mvp.support.microsoft.com/profile/KaushaL" style="display:block;text-align:left;padding:3px 3px 3px 3px;"&gt;MVP Profile&lt;/a&gt;
        &lt;/td&gt;
    &lt;/tr&gt;
&lt;/table&gt;</description><dc:language>en</dc:language><generator>CommunityServer 2007.1 SP1 (Build: 30415.43)</generator><item><title>How to call/Invoke a web service without adding web reference</title><link>http://dotnetslackers.com/Community/blogs/kaushalparik/archive/2010/05/14/how-to-call-invoke-a-web-service-without-adding-web-reference.aspx</link><pubDate>Fri, 14 May 2010 03:07:00 GMT</pubDate><guid isPermaLink="false">6afe0437-14b4-41d5-bc66-6d54a24dbd48:34929</guid><dc:creator>kaushalparik</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://dotnetslackers.com/Community/blogs/kaushalparik/rsscomments.aspx?PostID=34929</wfw:commentRss><comments>http://dotnetslackers.com/Community/blogs/kaushalparik/archive/2010/05/14/how-to-call-invoke-a-web-service-without-adding-web-reference.aspx#comments</comments><description>&lt;p style="font-family:Trebuchet MS;font-size:14px;"&gt;This something like - anybody would think why I will require to do this thing ever?. I mean calling a web service without adding reference of it. Obviously, to call a web service I would simply add the &amp;quot;Web Reference..&amp;quot; from the Solution Explorer; select the web service and once I am done; I would create the object of the Web Service and use its method - As simple as that.&lt;br /&gt;&lt;br /&gt;BUT, recently I came into a bit different scenario which I would like to share. While working on one of my DotNetNuke Solution - I require to have a web service inside my DotNetNuke project (in one of custom module) which is to be consumed by another application. The whole solution was a product which seem to be hosted at the potential customer&amp;#39;s side (on their server) - with appropriate configuration. That means, while hosting the DotNetNuke application at the client side - a fresh installation (using Install version) is needed with whatever &amp;quot;Virtual Directory&amp;quot; name they prefer.&lt;br /&gt;&lt;br /&gt;Here the problem starts; because every client may like to have different name/url of the application. That means, name of the &amp;quot;Virtual Directory&amp;quot; can be different at each client space. In this case, in another application which is consuming the web service - I need to modify the web reference as per the &amp;quot;Virtual Directory&amp;quot; name of the hosted DotNetNuke solution! That is not desirable. Another scenario to call a web service without adding web reference - I can think of - is to call a method from more then one web services based on some user input (That is - if you want to dynamically call appropriate web service method).&lt;br /&gt;&lt;br /&gt;Anyways, I end up with to calling web method without adding web reference. &lt;br /&gt;&lt;br /&gt;for the sake of simplicity, Below is the simple default web method &amp;quot;Hello World&amp;quot; which you will find while you add a web service in your solution. &lt;/p&gt;
&lt;p style="font-family:Trebuchet MS;font-size:14px;"&gt;&lt;img alt="web service" src="http://dotnetslackers.com/Community/blogs/kaushalparik/web-service/002.png" height="467" width="576" /&gt;&lt;/p&gt;
&lt;p style="font-family:Trebuchet MS;font-size:14px;"&gt;Once you done with the web methods, you add the web reference where you actually consume the web service methods. When you add a web reference - based on the WSDL specifications IDE actually created proxy classes in your application which represents the web service classes and its methods on the remote server. Visual Studio provides Intellisense with Web services, which will not be accurate till you update your web reference each time you change your web service, it is because the proxy classes which are local to your solution are being used to offer you the Intellisense. So, ultimately when you invoke a Web method you are invoking a method in one of these proxy classes. These classes, in turn, are capable of invoking the remote methods on the Web Service URL.&lt;br /&gt;&lt;br /&gt;So, every time the web service is updated, these proxy classes need to be regenerated by clicking Update Web Reference. However, the proxy classes do not always have to be generated from the IDE, .NET also gives us the WSDL.exe utility to manually generate these proxy classes and include them in your project.&lt;/p&gt;
&lt;p style="font-family:Trebuchet MS;font-size:14px;"&gt;&lt;img alt="web service" src="http://dotnetslackers.com/Community/blogs/kaushalparik/web-service/001.png" height="340" width="677" /&gt;&lt;br /&gt;&lt;br /&gt;To generate this proxy classes you need to generate these proxy classes thru &amp;quot;WSDL.exe&amp;quot; utility from Visual Basic Command Prompt.&lt;br /&gt;Once you are done, notice that WSDL.exe utility has created a proxy class for our Test web service at &amp;quot;C:\Program Files\Microsoft Visual Studio 10.0\VC\WebService.cs&lt;br /&gt;&lt;br /&gt;Just grab the class, create a new website and add that proxy class in App_Code folder. If you open the proxy class you will notice&amp;nbsp; the constructor of the proxy class contains &amp;quot;url&amp;quot; member property which is by default assigned the url of the website in which the web service exists. You can store the web service url in web.config or in database or whereever you wish it to be.&lt;/p&gt;
&lt;p style="font-family:Trebuchet MS;font-size:14px;"&gt;&lt;img alt="web service" src="http://dotnetslackers.com/Community/blogs/kaushalparik/web-service/003.png" height="265" width="742" /&gt;&lt;br /&gt;So, finally to call the &amp;quot;Hello World&amp;quot; web method - you need to create object of this proxy class and assign the url property correctly as below:&lt;br /&gt;&lt;br /&gt;public partial class _Default : System.Web.UI.Page &lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; protected void Page_Load(object sender, EventArgs e)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WebService objService = new WebService();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; objService.Url = &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Configuration.ConfigurationManager.AppSettings[&amp;quot;WebServiceUrl&amp;quot;];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Response.Write(&amp;quot;Output of the Web method call: &amp;quot; + objService.HelloWorld());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;First we created object of the proxy class, assigned the url property value from web.config file&amp;#39;s appsetting section and call the web method. Thats it!.Hope this would be helpful and informational to somebody who need the same.&lt;br /&gt;Below is the output of our example application:&lt;/p&gt;
&lt;p style="font-family:Trebuchet MS;font-size:14px;"&gt;&lt;img alt="web service" src="http://dotnetslackers.com/Community/blogs/kaushalparik/web-service/004.png" height="538" width="607" /&gt;&lt;br /&gt;Conclusion: you can call web service method without adding reference by creating proxy class thru wsdl.exe utility.&lt;/p&gt;&lt;img src="http://dotnetslackers.com/Community/aggbug.aspx?PostID=34929" width="1" height="1"&gt;</description><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/Kaushal/default.aspx">Kaushal</category><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/KaushalParik/default.aspx">KaushalParik</category><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/kaushalparik27/default.aspx">kaushalparik27</category><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/kaushal.net/default.aspx">kaushal.net</category><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/create+web+service/default.aspx">create web service</category><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/invoke+web+service+without+adding+reference/default.aspx">invoke web service without adding reference</category><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/call+a+web+service+without+adding+reference/default.aspx">call a web service without adding reference</category><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/wsdl.exe/default.aspx">wsdl.exe</category><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/web+service/default.aspx">web service</category><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/add+web+reference/default.aspx">add web reference</category></item><item><title>How to create DotNetNuke(DNN) Scheduler</title><link>http://dotnetslackers.com/Community/blogs/kaushalparik/archive/2010/05/11/how-to-create-dotnetnuke-dnn-scheduler.aspx</link><pubDate>Tue, 11 May 2010 07:44:00 GMT</pubDate><guid isPermaLink="false">6afe0437-14b4-41d5-bc66-6d54a24dbd48:34922</guid><dc:creator>kaushalparik</dc:creator><slash:comments>7</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://dotnetslackers.com/Community/blogs/kaushalparik/rsscomments.aspx?PostID=34922</wfw:commentRss><comments>http://dotnetslackers.com/Community/blogs/kaushalparik/archive/2010/05/11/how-to-create-dotnetnuke-dnn-scheduler.aspx#comments</comments><description>&lt;p style="font-family:Trebuchet MS;font-size:14px;"&gt;Did you ever need to write disconnected process which should be run at a defined interval time? Commonly, when we are in such need - we use to write window service which is based on some timer mechanism where we set some interval for the timer and in its elapsed method we execute the process we want to run at defined interval.&lt;br /&gt;&lt;br /&gt;When you work with DotNetNuke and you come across with such functionality that need tobe implemented - you can consider creating &amp;quot;DotNetNuke Scheduler&amp;quot;. While creating a DNN Scheduler - you are actually creating a simple class library which would be built and hosted in the DNN Schedule environment to be executed at the defined interval time.&lt;br /&gt;&lt;br /&gt;The possible scenario in which one need to look at such schedule functionality is:&lt;br /&gt;[1] You may need to send some set of fixed newletter everyday at defiend time to your customers.&lt;br /&gt;[2] You may need to read some of third party product feed to read regular update and modify your product database.&lt;br /&gt;[3] You may need to send some system generated reports to your third party vendor at some regular intervals.&lt;br /&gt;&lt;br /&gt;To Create a DNN Scheduler; you need to:&lt;br /&gt;[1] Create a class library project with a class which inherits DotNetNuke.Services.Scheduling.SchedulerClient.&lt;br /&gt;[2] Write the process which you wish to be executed at some interval and call it in DoWork() method. (You can consider the DoWork() method as entry point of the disconnected process execution.&lt;br /&gt;[3] Build the class library project and get th dll.&lt;br /&gt;[4] Copy the dll inside /bin directory of your DNN solution.&lt;br /&gt;[5] Make an entry in DNN Schedule (Host menu &amp;gt; Schedule submenu) service and host the dll by giving proper namespace and the elapsed time.&lt;br /&gt;&lt;br /&gt;Let us explore above step in some details.&lt;br /&gt;First step is to create a class library for which you need to add a new class library project inside your DNN solution.&lt;br /&gt;&lt;br /&gt;&lt;img style="border:1px solid black;" alt="DNN Schedule" src="http://dotnetslackers.com/Community/blogs/kaushalparik/dnn-schedule/dnn-sch1.png" height="440" width="683" /&gt;&lt;br /&gt;&lt;br /&gt;Once you add the class library; just rename/modify the namespce, classname and the class filename which is appropriate to your DNN Solution. Like I modified the namespace and classname as: YouProjectName.ModuleName.TestSchedule&lt;/p&gt;
&lt;p style="font-family:Trebuchet MS;font-size:14px;"&gt;&lt;br /&gt;The namespace is important to define correctly as it will be used later on to define the entry in DNN Schedule.&lt;br /&gt;Next, you need to add DotNetNuke.Library (DotNetNuke.dll) reference to your class library by right click class library project in the solution explorer and &amp;quot;Add Reference..&amp;quot; option. Once you add the DotNetNuke.Library reference you would be able to access DNN namespaces and classes which would be require to access DNN related functions and methods.&lt;/p&gt;
&lt;p style="font-family:Trebuchet MS;font-size:14px;"&gt;&lt;br /&gt;After adding reference, you need to inherit &amp;quot;DotNetNuke.Services.Scheduling.SchedulerClient&amp;quot; abstract class and implement DoWork() overridable method.&lt;br /&gt;&lt;br /&gt;&lt;img style="border:1px solid black;" alt="DNN Schedule" src="http://dotnetslackers.com/Community/blogs/kaushalparik/dnn-schedule/dnn-sch2.png" height="258" width="687" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img style="border:1px solid black;" alt="DNN Schedule" src="http://dotnetslackers.com/Community/blogs/kaushalparik/dnn-schedule/dnn-sch3.png" height="307" width="689" /&gt;&lt;br /&gt;&lt;br /&gt;Here, I am also adding a parameterized constructor to properly record the schedule history:&lt;br /&gt;&lt;br /&gt;&lt;img style="border:1px solid black;" alt="DNN Schedule" src="http://dotnetslackers.com/Community/blogs/kaushalparik/dnn-schedule/dnn-sch4.png" height="392" width="909" /&gt;&lt;br /&gt;&lt;br /&gt;For ease, I am creating a simple &amp;quot;Hello World&amp;quot; function which would create a new txt file at the defined path specifying current date and time. &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public override void DoWork()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //--start the pocessing&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.Progressing();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //--call the function/process that you wish to be executed&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ExecuteHelloWorld();&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //--intimate the schedule mechanism to write log note in schedule history&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.ScheduleHistoryItem.AddLogNote(&amp;quot;HelloWorld Service Start. Success.&amp;quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.ScheduleHistoryItem.Succeeded = true;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; catch (Exception Ex)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //--intimate the schedule mechanism to write log note in schedule history&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.ScheduleHistoryItem.Succeeded = false;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.ScheduleHistoryItem.AddLogNote(&amp;quot;HelloWorld Service Start. Failed. &amp;quot; + Ex.ToString());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.Errored(ref Ex);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //--function which needs tobe executed at specified interval&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void ExecuteHelloWorld()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.IO.File.WriteAllText(@&amp;quot;C:\\_SCHEDULER\\test&amp;quot; + Guid.NewGuid().ToString() + &amp;quot;.txt&amp;quot;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;quot;Hello World. The Time is - &amp;quot; + DateTime.Now.ToString());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; catch (Exception Ex)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; throw Ex;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;If you look at the above code - The processing always start from DoWork() method where I am calling the ExecuteHelloWorld() function. This is the function which will be executed at the defiend interval. Here, I am also logging in the Schedule history which would help us to know the status of the schedule execution.&lt;/p&gt;
&lt;p style="font-family:Trebuchet MS;font-size:14px;"&gt;&lt;br /&gt;Thats it!. You are done with the coding part. Next, all you need to do is;&amp;nbsp; build the class library project get the dll, copy inside /bin directory of DNN solution and host it under DNN Schedule. For that Go to &amp;quot;Host&amp;quot; menu &amp;gt; &amp;quot;Schedule&amp;quot; submenu option. Once you are there, you would see there are some schedule entries already exists in the list which are being used in DotNetNuke environment&lt;br /&gt;&lt;br /&gt;&lt;img style="border:1px solid black;" alt="DNN Schedule" src="http://dotnetslackers.com/Community/blogs/kaushalparik/dnn-schedule/dnn-sch5.png" height="350" width="182" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img style="border:1px solid black;" alt="DNN Schedule" src="http://dotnetslackers.com/Community/blogs/kaushalparik/dnn-schedule/dnn-sch6.png" height="334" width="915" /&gt;&lt;br /&gt;&lt;br /&gt;You would see a list of scheduled processes with its name, current status (enabled or disabled), the frequency of the execution, the next run as well as link to see the &amp;quot;Execution History&amp;quot;. To add our process; Click on the &amp;quot;Add Item to Schedule&amp;quot; link. You will be redirected to &amp;quot;Edit Schedule&amp;quot; page where in you need to add your process to schedule.&lt;br /&gt;&lt;br /&gt;&lt;img style="border:1px solid black;" alt="DNN Schedule" src="http://dotnetslackers.com/Community/blogs/kaushalparik/dnn-schedule/dnn-sch7.png" height="355" width="741" /&gt;&lt;br /&gt;&lt;br /&gt;[1] Give &amp;quot;Friendly Name&amp;quot; of the schedule process which will be seen in the schedule list.&lt;br /&gt;[2] Provide full classname with namespace along with the assembly name. For example, in our case it will be YouProjectName.ModuleName.TestSchedule,TestSchedule. Please note that you dont need to write &amp;quot;.dll&amp;quot; extension; just full classname and name of assembly (dll) followed by a comma separator. This entry should be correct.&lt;br /&gt;[3] Check the checkbox to enable the schedule.&lt;br /&gt;[4] Provide the interval time to execute the process&lt;br /&gt;[5] Provide the retry interval time; incase of failure.&lt;br /&gt;[6 ] Specify the number of records in &amp;quot;Retain Schedule History&amp;quot; for History listing.&lt;br /&gt;[7] You can specify &amp;quot;Run On Event&amp;quot; which will show Global.asax events; incase if you want schedule to execute the process on a specific event of global.asax. For example, APPLICATION_START event.&lt;br /&gt;[8 ] Check the checkbox &amp;quot;Catch Up Enabled&amp;quot;; incase if you want the schedule process tobe executed in a scenario like the webserver is ever out of service, when the webserver is back in service this event will run once for each frequency that was missed during the downtime.&lt;br /&gt;Click on the Update and you will see the newly hosted process in DNN Schedule list. You can click on &amp;quot;History&amp;quot; link to see the history of the execution. On History page, you will be presented with detailed Hisory records which we logged in our class library. This will helps to know the status of scheduled process.&lt;br /&gt;&lt;br /&gt;&lt;img style="border:1px solid black;" alt="DNN Schedule" src="http://dotnetslackers.com/Community/blogs/kaushalparik/dnn-schedule/dnn-sch9.png" height="283" width="923" /&gt;&lt;br /&gt;&lt;br /&gt;Here, some important note is that A DotNetNuke Scheduler can have 2 running modes:&lt;br /&gt;[1] Request Mode - in which DotNetNuke Scheduler will execute and run each time ONLY when a Browser Request is made.&lt;br /&gt;[2] Timer Mode - in which DotNetNuke Scheduler will execute and keep running behind the scene on the specified elapse time. &lt;br /&gt;By default, &amp;quot;Request Mode&amp;quot; is set which you can change from &amp;quot;Host&amp;quot; Menu &amp;gt; &amp;quot;Host Setting&amp;quot; submenu &amp;gt; Other Setting section &amp;gt; and Scheduler Mode Dropdown.&lt;br /&gt;&lt;br /&gt;&lt;img style="border:1px solid black;" alt="DNN Schedule" src="http://dotnetslackers.com/Community/blogs/kaushalparik/dnn-schedule/dnn-sch8.png" height="81" width="594" /&gt;&lt;br /&gt;&lt;br /&gt;Thats it!. I hope this would help a lot to one who needs to implement continuous background process execution in DNN environment.&lt;/p&gt;
&lt;p style="font-family:Trebuchet MS;font-size:14px;"&gt;Oh Yes!,, The output of our test Schedule :)&lt;/p&gt;
&lt;p&gt;&lt;img style="border:1px solid black;" alt="DNN Schedule" src="http://dotnetslackers.com/Community/blogs/kaushalparik/dnn-schedule/dnn-sch10.png" height="224" width="502" /&gt;&lt;/p&gt;&lt;img src="http://dotnetslackers.com/Community/aggbug.aspx?PostID=34922" width="1" height="1"&gt;</description><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/DotNetNuke/default.aspx">DotNetNuke</category><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/KaushalParik/default.aspx">KaushalParik</category><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/DNN+5.0/default.aspx">DNN 5.0</category><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/kaushalparik27/default.aspx">kaushalparik27</category><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/DNN/default.aspx">DNN</category><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/How+to+create+dnn+scheduler/default.aspx">How to create dnn scheduler</category><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/DNN+Scheduler/default.aspx">DNN Scheduler</category><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/disconnected+process/default.aspx">disconnected process</category><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/how+to+create+dotnetnuke+scheduler/default.aspx">how to create dotnetnuke scheduler</category><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/kaushal.net/default.aspx">kaushal.net</category><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/scheduler+in+dnn/default.aspx">scheduler in dnn</category></item><item><title>How would you create a perfect DotNetNuke (DNN) Environment/Installation</title><link>http://dotnetslackers.com/Community/blogs/kaushalparik/archive/2010/04/28/how-would-you-create-a-perfect-dotnetnuke-dnn-environment-installation.aspx</link><pubDate>Wed, 28 Apr 2010 03:46:00 GMT</pubDate><guid isPermaLink="false">6afe0437-14b4-41d5-bc66-6d54a24dbd48:34897</guid><dc:creator>kaushalparik</dc:creator><slash:comments>9</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://dotnetslackers.com/Community/blogs/kaushalparik/rsscomments.aspx?PostID=34897</wfw:commentRss><comments>http://dotnetslackers.com/Community/blogs/kaushalparik/archive/2010/04/28/how-would-you-create-a-perfect-dotnetnuke-dnn-environment-installation.aspx#comments</comments><description>&lt;div style="font-size:14px;"&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Trebuchet MS&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;Today, I am going to describe complete process of
creating a perfect DotNetNuke Environment or say how would you install DNN Site
(whether install or source version). I am going to use most latest and stable
05.04.00 install version of DotNetNuke.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Trebuchet MS&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;To download the source/install version you need to
have login/account at official DotNetNuke site. Once you login; you would go to
Download page where you can select &amp;ldquo;Community&amp;rdquo; Edition to download. There are 2
variations in DotNetNuke that you would find there. One is Community Edition
and other is &amp;ldquo;Professional&amp;rdquo; edition. You can install DotNetNuke via downloading
&amp;ldquo;Microsoft Web Platform Installer&amp;rdquo; that is available on the same page. This
installer additionally provides you other valuable resources to install as
well. For more information on Web Platform you would get here - &lt;a href="http://www.microsoft.com/web/default.aspx"&gt;http://www.microsoft.com/web/default.aspx&lt;/a&gt;,
Otherwise, you may click on the &amp;ldquo;Older version&amp;rdquo; link which would redirect you
to the version track page at &amp;ldquo;Codeplex&amp;rdquo; site. You would find the total &amp;ldquo;Release
Track/History&amp;rdquo; at the right hand side. I have selected most stable install version
to download.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Trebuchet MS&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;As I requested &amp;ndash; I received the download of &amp;ldquo;DotNetNuke_Community_05.04.00_Install.zip&amp;rdquo;
file. Once File get downloaded; you copy the zip file and extract at the particular
place where you want to have the DotNetNuke site physical folder. For sake of simplicity,
I have extracted the zip file under c:\inetpub\wwwroot folder.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Trebuchet MS&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;img alt="DNN Install" src="http://dotnetslackers.com/Community/blogs/kaushalparik/dnn-install/001.png" height="520" width="800" /&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Trebuchet MS&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;Please remember that if you are using Source
version and going to develop custom modules on that application than you need
to first keep the &amp;ldquo;web.config&amp;rdquo; (or just rename it something like
web.config.backup) file in backup and rename the &amp;ldquo;release.config&amp;rdquo; to &amp;ldquo;web.config&amp;rdquo;.
Also, remove the source control information from .sln file via opening the .sln
file in notepad and remove/delete the Global&amp;hellip;EndGlobal section.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Trebuchet MS&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;DNN is using some of Telerik Controls. So, just
make sure that Telerik dll (Telerik.Web.UI.dll) is exist in /bin folder. Other
thing to take care is (I don&amp;rsquo;t know whether they have corrected this one or
not. But, This problem was THERE in version 05.02.00) &amp;ndash; if you are using source
version then Telerik dll was not exist in /bin folder and you have to take it
from the install version.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Trebuchet MS&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;Once you extracted the zip file you need to create
the &amp;ldquo;Application Pool&amp;rdquo; (for OS other than XP) and Virtual Directory for the DNN
Site. Just go to the IIS (inetmgr) and create an &amp;ldquo;Application Pool&amp;rdquo; which would
target to proper .Net Framework version.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;img alt="DNN Install" src="http://dotnetslackers.com/Community/blogs/kaushalparik/dnn-install/002.png" /&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Trebuchet MS&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;Remember the &amp;ldquo;Identity&amp;rdquo; on which Application Pool
will be running on. On my case &amp;ndash; It is &amp;ldquo;NetworkService&amp;rdquo; Identity. It will be
require when you are giving proper permission to the extracted folder. You can
also change the Identity via &amp;ldquo;Advance Setting&amp;rdquo; of Application Pool.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Trebuchet MS&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;img alt="DNN Install" src="http://dotnetslackers.com/Community/blogs/kaushalparik/dnn-install/004.png" height="650" width="800" /&gt;&lt;span style="font-family:&amp;#39;Trebuchet MS&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt; &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Trebuchet MS&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;After creating Application Pool &amp;ndash; you need to create
Virtual Directory (Create Application..) under default website. Select the
AppPool that you have created for your DNN Site.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;img alt="DNN Install" src="http://dotnetslackers.com/Community/blogs/kaushalparik/dnn-install/003.png" /&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Trebuchet MS&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;You are now done with IIS. Next is you need to
create a blank database and a sql user account in sql server. Go to Sql
Management Studio and Create a blank database as usual. Create one Sql user (or
you may use the existing &amp;ldquo;sa&amp;rdquo; account). Make sure that the user account that
you are selecting must have the proper permission to execute on the blank
database that you have created for DNN installation.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Trebuchet MS&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;You are now done with Creating Database for the
installation. Move to the physical folder and apply proper permission for the
AppPool Identity user (Network Service in my case) as well as IIS user. This is
required otherwise DNN installation wizard would give you error related with
permission.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Trebuchet MS&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Trebuchet MS&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;After giving permission &amp;ndash; you are ready to run the
installation wizard and start installing your DNN Site. To start the wizard,
browse thru &lt;a href="http://localhost/dotnetnuke/install/installwizard.aspx"&gt;http://localhost/dotnetnuke/install/installwizard.aspx&lt;/a&gt;
and you would serve with below first stage.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;img alt="DNN Install" src="http://dotnetslackers.com/Community/blogs/kaushalparik/dnn-install/005.png" /&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Trebuchet MS&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;On this step, you would find 3 options to install
the DNN Site.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Trebuchet MS&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;[1] Custom: &lt;span style="color:black;"&gt;The
&amp;quot;Custom&amp;quot; installation method provides you with the ability to
completely customize your DotNetNuke installation. Select this option if you
wish to control which optional components get installed
.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Trebuchet MS&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:black;"&gt;[2] Typical: The &amp;quot;Typical&amp;quot;
installation method makes some &amp;quot;typical&amp;quot; choices for you.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Trebuchet MS&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:black;"&gt;[3] Auto: The &amp;quot;Auto&amp;quot;
installation method bypasses the Wizard completely and uses the legacy
Auto-Install procedure.
&lt;span&gt;&amp;nbsp;&lt;/span&gt;You can also browse thru &lt;/span&gt;&lt;span style="font-family:&amp;#39;Trebuchet MS&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&lt;a href="http://localhost/dotnetnuke/install/install.aspx"&gt;http://localhost/dotnetnuke/install/install.aspx&lt;/a&gt;
to start the legacy Auto-Install procedure directly.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Trebuchet MS&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;For sake of simplicity I am selecting most common &amp;ldquo;Custom&amp;rdquo;
option and click next.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;img alt="DNN Install" src="http://dotnetslackers.com/Community/blogs/kaushalparik/dnn-install/007.png" /&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Trebuchet MS&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;On this step DNN Installation Wizard would check
the permission set given to the physical folder and would provide you the appropriate
warning information if permission were not applied correctly. Otherwise it
would pass this stage via giving successful message. Click Next.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;img alt="DNN Install" src="http://dotnetslackers.com/Community/blogs/kaushalparik/dnn-install/008.png" height="705" width="823" /&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Trebuchet MS&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;On this step above &amp;ndash; you will be asked to enter
the database information that you have created earlier in this installation
process. Select proper sql databse, server, name of the database (dotnetnuke in
my case) and give the user and password information (by un-checking the &amp;ldquo;Integrated
Security&amp;rdquo; Checkbox, because its better not to use windows authentication).
Select &amp;ldquo;Run as DB Owner&amp;rdquo; checkbox option and give the &amp;ldquo;Object Qualifier&amp;rdquo; you
wish. This Qualifier would be appended to each table, procedure, view etc.. in
the database installation.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;img alt="DNN Install" src="http://dotnetslackers.com/Community/blogs/kaushalparik/dnn-install/009.png" height="575" width="831" /&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Trebuchet MS&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;Once database get installed successfully, Click
Next. Here you need to configure the &amp;ldquo;Host&amp;rdquo; account detail which is the &amp;ldquo;super
user&amp;rdquo; account for your DNN site.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;img alt="DNN Install" src="http://dotnetslackers.com/Community/blogs/kaushalparik/dnn-install/010.png" height="658" width="835" /&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Trebuchet MS&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;Provide proper information for the Host Account.
Remember the password as it will be the super user which will be used to manage
host and portal sites. It&amp;rsquo;s preferable if you give correct SMTP details because
this way you would able to identify and come to know the correct activity
whenever any new user gets registered, blocked, or deactivated. DNN Site would
shoot email on important activity or action.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Trebuchet MS&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;Once you are done with the Host Account
configuration, in next few steps you would be asked to select and install:&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Trebuchet MS&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;[1] Option Modules&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Trebuchet MS&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;[2] Skin and Containers&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Trebuchet MS&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;[3] Language Packs&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Trebuchet MS&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;[4] Authentication System (out of Active
Directory, LiveID and OpenID)&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Trebuchet MS&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;[5] Install Providers&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Trebuchet MS&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;You would be given available options in above
steps via checkbox where you can select the options you wish to install with
your DNN installation procedure. If you don&amp;rsquo;t select anything out of this step;
you can later do that via &amp;ldquo;Host Menu&amp;rdquo; &amp;gt; Module Definition &amp;gt; Install
Extension menu option. You would also find the same option from &amp;ldquo;Host Menu&amp;rdquo;
&amp;gt; Extension &amp;gt; Install available Extension link at the bottom of the page.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Trebuchet MS&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;After above all steps get passed; you would come
across below steps where you would configure Admin account just like you did
for Host Account. Give proper information for admin account.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;img alt="DNN Install" src="http://dotnetslackers.com/Community/blogs/kaushalparik/dnn-install/016.png" height="617" width="892" /&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Trebuchet MS&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;That&amp;rsquo;s it!! It&amp;rsquo;s the final stage where you are
just a single click away to your installed DNN Site. Click on &amp;ldquo;Start Building
Your New Site&amp;rdquo; and you are presented with the all new fresh DNN site installed.
Well well well, lets move on and play with it &lt;/span&gt;&lt;span style="font-family:Wingdings;"&gt;&lt;span&gt;J&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Trebuchet MS&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;img alt="DNN Install" src="http://dotnetslackers.com/Community/blogs/kaushalparik/dnn-install/017.png" height="312" width="777" /&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;img alt="DNN Install" src="http://dotnetslackers.com/Community/blogs/kaushalparik/dnn-install/018.png" /&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Trebuchet MS&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;I hope this would help novice people in
configuring perfect DNN environment.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Trebuchet MS&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;Here are few notes that are good to know:&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Trebuchet MS&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;[1] You would require installation templates if
you want to create custom DNN Skin or Dynamic/Simple DNN Custom Modules. You
would find these visual studio templates at the official DotNetNuke site
itself.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Trebuchet MS&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;[2] Once you are done with the site installation
and you redirected to installed DNN site. You may face IIS error saying &amp;ldquo;The
Web server is configured to not list the contents of this directory&amp;rdquo; or you can
notice the address of the site in address bar something like &lt;a href="http://localhost/dotnetnuke/install/"&gt;http://localhost/dotnetnuke/install/&lt;/a&gt;.
In this case only you need to do is &amp;gt; Go to the Database and open the &amp;ldquo;PortalAlias&amp;rdquo;
table. You would find the portal alias of the site configured incorrectly. Just
correct it to &amp;ldquo;localhost/dotnetnuke&amp;rdquo; instead of &amp;ldquo;localhost/dotnetnuke/install&amp;rdquo;.
Reset the IIS (iisreset) or recycle the App Pool and you are Done!.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Trebuchet MS&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;Have a Nice Day!!&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;&lt;img src="http://dotnetslackers.com/Community/aggbug.aspx?PostID=34897" width="1" height="1"&gt;</description><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/DotNetNuke/default.aspx">DotNetNuke</category><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/DNN+5.0/default.aspx">DNN 5.0</category><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/DNN/default.aspx">DNN</category><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/Install+DNN+Environment/default.aspx">Install DNN Environment</category><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/Install+DNN/default.aspx">Install DNN</category><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/problem+in+installing+dotnetnuke/default.aspx">problem in installing dotnetnuke</category><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/DNN+5.2.0/default.aspx">DNN 5.2.0</category><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/Install+DotNetNuke/default.aspx">Install DotNetNuke</category><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/how+to+install+dnn/default.aspx">how to install dnn</category></item><item><title>DotNetNuke - Where do you write your application CSS?</title><link>http://dotnetslackers.com/Community/blogs/kaushalparik/archive/2010/04/27/dotnetnuke-where-do-you-write-your-application-css.aspx</link><pubDate>Tue, 27 Apr 2010 16:44:00 GMT</pubDate><guid isPermaLink="false">6afe0437-14b4-41d5-bc66-6d54a24dbd48:34894</guid><dc:creator>kaushalparik</dc:creator><slash:comments>5</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://dotnetslackers.com/Community/blogs/kaushalparik/rsscomments.aspx?PostID=34894</wfw:commentRss><comments>http://dotnetslackers.com/Community/blogs/kaushalparik/archive/2010/04/27/dotnetnuke-where-do-you-write-your-application-css.aspx#comments</comments><description>&lt;p&gt;after Long time.... back in the community finally... :)&lt;/p&gt;
&lt;p&gt;I was working in DNN application since I used to add css classes as and when I need to add which are related to specific my custom dnn modules. Initially, I used to add those classes in MinimulExtropy skin css file. But, as time goes.. it grows in size and there are situations when skin tend to change everytime (because some skin related issues or client didnt like it). Sp, everytime when any skin got changed I need to manually &amp;quot;copy&amp;quot; and &amp;quot;paste&amp;quot; those application (related to custom desktop modules) css classes in to the targetted skin folder&amp;#39;s css files. Because, somehow AFAIK dnn doesn&amp;#39;t support App_Theme folder or .skin files (because of its skin architecture).&lt;/p&gt;
&lt;p&gt;Then I found a silly solution to add all those application css classes and images related to it in the base css file. So, whenever you need or arise in such type of situation &amp;gt; you can simply put the image files at &amp;quot;portals/_default&amp;quot; folder and copy-paste all the css files in &amp;quot;portals/_default/default.css&amp;quot; file. Once you have done all this &amp;gt; you gonna have a css file with having your application css classes and you dont worry about this when you change or modify skin for any portals!!&lt;/p&gt;
&lt;p&gt;Thats it! Happy DNNing!!&lt;/p&gt;&lt;img src="http://dotnetslackers.com/Community/aggbug.aspx?PostID=34894" width="1" height="1"&gt;</description><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/DotNetNuke/default.aspx">DotNetNuke</category><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/DNN+5.0/default.aspx">DNN 5.0</category><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/dnn+custom+module+css+classes/default.aspx">dnn custom module css classes</category><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/dotnetnuke+skinning/default.aspx">dotnetnuke skinning</category><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/how+to+install+dotnetnuke/default.aspx">how to install dotnetnuke</category></item><item><title>Function to get the Ordinal Numbers</title><link>http://dotnetslackers.com/Community/blogs/kaushalparik/archive/2009/09/30/function-to-get-the-ordinal-numbers.aspx</link><pubDate>Wed, 30 Sep 2009 11:43:00 GMT</pubDate><guid isPermaLink="false">6afe0437-14b4-41d5-bc66-6d54a24dbd48:32494</guid><dc:creator>kaushalparik</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://dotnetslackers.com/Community/blogs/kaushalparik/rsscomments.aspx?PostID=32494</wfw:commentRss><comments>http://dotnetslackers.com/Community/blogs/kaushalparik/archive/2009/09/30/function-to-get-the-ordinal-numbers.aspx#comments</comments><description>&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public string GetOrdinal(int Number)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (((Number % 100) / 10) != 1)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ((Number % 10) == 1)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return &amp;quot;st&amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if ((Number % 10) == 2)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return &amp;quot;nd&amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if ((Number % 10) == 3)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return &amp;quot;rd&amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return &amp;quot;th&amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return &amp;quot;th&amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;/p&gt;&lt;img src="http://dotnetslackers.com/Community/aggbug.aspx?PostID=32494" width="1" height="1"&gt;</description></item><item><title>DotNetNuke Professional and Community Edition</title><link>http://dotnetslackers.com/Community/blogs/kaushalparik/archive/2009/07/25/dotnetnuke-professional-and-community-edition.aspx</link><pubDate>Sat, 25 Jul 2009 05:48:00 GMT</pubDate><guid isPermaLink="false">6afe0437-14b4-41d5-bc66-6d54a24dbd48:31788</guid><dc:creator>kaushalparik</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://dotnetslackers.com/Community/blogs/kaushalparik/rsscomments.aspx?PostID=31788</wfw:commentRss><comments>http://dotnetslackers.com/Community/blogs/kaushalparik/archive/2009/07/25/dotnetnuke-professional-and-community-edition.aspx#comments</comments><description>&lt;p&gt;&lt;b&gt;Source -http://www.dotnetnuke.com&lt;/b&gt;&lt;/p&gt;
&lt;div class="c_head title_red"&gt;
&lt;div class="Head title"&gt;
            
            &lt;span id="dnn_ctr4033_dnnTITLE_lblTitle" class="Head"&gt;Comparison of the Professional and Community Editions&lt;/span&gt;

        &lt;/div&gt;
&lt;div class="clear_float"&gt;
        &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
    
        
        &lt;/p&gt;
&lt;div id="dnn_ctr4033_ModuleContent" class="DNN_HTMLContent"&gt;
&lt;div id="dnn_ctr4033_HtmlModule_lblContent" class="Normal"&gt;
&lt;p&gt;The
DotNetNuke Professional Edition 5.1 is a tested and verified version of
the DotNetNuke framework that meets the requirements of organizations
running business-critical web applications. The Professional Edition
offers the same features as the Community Edition plus some additional
features specifically designed for business-critical applications. The
matrix below indicates the differences between the DotNetNuke Community
and Professional Editions.&lt;/p&gt;
&lt;p&gt;For more information, also see:&lt;/p&gt;
&lt;div class="Head"&gt;&lt;a href="http://www.dotnetnuke.com/tabid/1209/Default.aspx"&gt;DotNetNuke Professional Edition 5.1 Overview&lt;/a&gt; &lt;/div&gt;
&lt;table cellpadding="5" cellspacing="0"&gt;

&lt;tr&gt;
&lt;td class="Head" align="center"&gt;Feature&lt;/td&gt;
&lt;td class="Head" align="center"&gt;Community&lt;br /&gt;
            Edition&lt;/td&gt;
&lt;td class="Head" align="center"&gt;Professional&lt;br /&gt;
            Edition&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;div&gt;&lt;strong&gt;Google Analytics Support&lt;/strong&gt;&lt;br /&gt;
            Support for injection of analytics tracking code or other content in a specific location of every page&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/td&gt;
&lt;td align="center"&gt;&lt;img src="http://www.dotnetnuke.com/Portals/25/SiteFiles/opts_24x24.gif" alt="" /&gt;&lt;/td&gt;
&lt;td align="center"&gt;&lt;img src="http://www.dotnetnuke.com/Portals/25/SiteFiles/opts_24x24.gif" alt="" /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;div&gt;&lt;strong&gt;Google Analytics for Marketing Support&lt;/strong&gt;&lt;br /&gt;
Support for advanced Google Analytics functionality such as visitor
type, landing page, role, or referrer segmentation&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/td&gt;
&lt;td align="center"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td align="center"&gt;&lt;img src="http://www.dotnetnuke.com/Portals/25/SiteFiles/opts_24x24.gif" alt="" /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;div&gt;&lt;strong&gt;Advanced Content Approval Process&lt;/strong&gt;&lt;br /&gt;
            Allows administrators to create custom workflows with an unlimited number of states and reviewers&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/td&gt;
&lt;td align="center"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td align="center"&gt;&lt;img src="http://www.dotnetnuke.com/Portals/25/SiteFiles/opts_24x24.gif" alt="" /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;div&gt;&lt;strong&gt;Change Audit&lt;/strong&gt;&lt;br /&gt;
            Last modified and full history audit trails&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/td&gt;
&lt;td align="center"&gt;&lt;img src="http://www.dotnetnuke.com/Portals/25/SiteFiles/opts_24x24.gif" alt="" /&gt;&lt;/td&gt;
&lt;td align="center"&gt;&lt;img src="http://www.dotnetnuke.com/Portals/25/SiteFiles/opts_24x24.gif" alt="" /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;div&gt;&lt;strong&gt;Granular Permissions&lt;/strong&gt;&lt;br /&gt;
            Page, module and folder level extended permissions to provide more granular security rights&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/td&gt;
&lt;td align="center"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td align="center"&gt;&lt;img src="http://www.dotnetnuke.com/Portals/25/SiteFiles/opts_24x24.gif" alt="" /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;div&gt;&lt;strong&gt;Distributed Caching Provider&lt;/strong&gt;&lt;br /&gt;
            More efficient resource usage in large web farms&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/td&gt;
&lt;td align="center"&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/td&gt;
&lt;td align="center"&gt;&lt;img src="http://www.dotnetnuke.com/Portals/25/SiteFiles/opts_24x24.gif" alt="" /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;div&gt;&lt;strong&gt;File Integrity Checking&lt;/strong&gt;&lt;br /&gt;
            Checks files in the installation and reports any inconsistencies which may impact website reliability&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/td&gt;
&lt;td align="center"&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/td&gt;
&lt;td align="center"&gt;&lt;img src="http://www.dotnetnuke.com/Portals/25/SiteFiles/opts_24x24.gif" alt="" /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;div&gt;&lt;strong&gt;Health Monitoring&lt;/strong&gt;&lt;br /&gt;
Pings the website periodically to identify failures and will notify the
site owner. Also ensures the site stays in web server memory for faster
user accessibility&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/td&gt;
&lt;td align="center"&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/td&gt;
&lt;td align="center"&gt;&lt;img src="http://www.dotnetnuke.com/Portals/25/SiteFiles/opts_24x24.gif" alt="" /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;div&gt;&lt;strong&gt;Vulnerability Database&lt;/strong&gt;&lt;br /&gt;
            Maintains a vulnerability database for each product version to easily identify potential issues&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/td&gt;
&lt;td align="center"&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/td&gt;
&lt;td align="center"&gt;&lt;img src="http://www.dotnetnuke.com/Portals/25/SiteFiles/opts_24x24.gif" alt="" /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;div&gt;&lt;b&gt;Comprehensive documentation and online Knowledge Base&lt;/b&gt; that provide guidance for DotNetNuke administrative tasks and answers to common technical questions&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/td&gt;
&lt;td align="center"&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/td&gt;
&lt;td align="center"&gt;&lt;img src="http://www.dotnetnuke.com/Portals/25/SiteFiles/opts_24x24.gif" alt="" /&gt;&lt;/td&gt;
&lt;/tr&gt;

&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://dotnetslackers.com/Community/aggbug.aspx?PostID=31788" width="1" height="1"&gt;</description><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/DotNetNuke/default.aspx">DotNetNuke</category><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/DNN+5.0/default.aspx">DNN 5.0</category><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/Compare+dotnetnuke+edition/default.aspx">Compare dotnetnuke edition</category><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/professional+vs+community+edition/default.aspx">professional vs community edition</category></item><item><title>I'm a Microsoft MVP (again!)</title><link>http://dotnetslackers.com/Community/blogs/kaushalparik/archive/2009/07/01/i-m-a-microsoft-mvp-again.aspx</link><pubDate>Wed, 01 Jul 2009 18:34:00 GMT</pubDate><guid isPermaLink="false">6afe0437-14b4-41d5-bc66-6d54a24dbd48:31686</guid><dc:creator>kaushalparik</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://dotnetslackers.com/Community/blogs/kaushalparik/rsscomments.aspx?PostID=31686</wfw:commentRss><comments>http://dotnetslackers.com/Community/blogs/kaushalparik/archive/2009/07/01/i-m-a-microsoft-mvp-again.aspx#comments</comments><description>&lt;p&gt;friends...&lt;/p&gt;
&lt;p&gt;I have been re-awarded with 2009 Microsoft&amp;reg; MVP Award in .NET/ASP.NET Category. This is the second consecutive year as an MVP; and it feels like allmost full moon of my career!!&lt;br /&gt;&lt;br /&gt;The mail I received:&lt;/p&gt;
&lt;p&gt;Dear Kaushal Parik,&lt;br /&gt;&lt;br /&gt;Congratulations! We are pleased to present you with 
the 2009 Microsoft&amp;reg; MVP Award! This award is given to exceptional technical 
community leaders who actively share their high quality, real world expertise 
with others. We appreciate your outstanding contributions in ASP/ASP.NET 
technical communities during the past year.&lt;/p&gt;
&lt;p&gt;........ long live community :)&lt;/p&gt;&lt;img src="http://dotnetslackers.com/Community/aggbug.aspx?PostID=31686" width="1" height="1"&gt;</description><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/Kaushal/default.aspx">Kaushal</category><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/KaushalParik/default.aspx">KaushalParik</category><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/kaushalparik27/default.aspx">kaushalparik27</category><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/forums.asp.net/default.aspx">forums.asp.net</category><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/MVP+2009/default.aspx">MVP 2009</category><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/Microsoft+MVP/default.aspx">Microsoft MVP</category><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/dotnetslackers/default.aspx">dotnetslackers</category></item><item><title>TechEd on Road – Ahmedabad (Gujarat - India) June 20, 2009</title><link>http://dotnetslackers.com/Community/blogs/kaushalparik/archive/2009/06/11/teched-on-road-ahmedabad-gujarat-india-june-20-2009.aspx</link><pubDate>Thu, 11 Jun 2009 17:27:00 GMT</pubDate><guid isPermaLink="false">6afe0437-14b4-41d5-bc66-6d54a24dbd48:31619</guid><dc:creator>kaushalparik</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://dotnetslackers.com/Community/blogs/kaushalparik/rsscomments.aspx?PostID=31619</wfw:commentRss><comments>http://dotnetslackers.com/Community/blogs/kaushalparik/archive/2009/06/11/teched-on-road-ahmedabad-gujarat-india-june-20-2009.aspx#comments</comments><description>&lt;p&gt;Hi all &amp;hellip;&lt;/p&gt;
&lt;p&gt;This time a great news for all the technology enthusiast and want to meet 
great peoples in technology and you missed &lt;b&gt;TechEd India 2009 &lt;/b&gt;so 
you can attend now the same kind of event in &lt;b&gt;Ahmedabad, India on June 
20, 2009 Saturday(TechEd on Road) by 1:30 PM.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;You will get a chance to meet Two MVP&amp;rsquo;S here &lt;a href="http://beyondrelational.com/blogs/jacob/default.aspx"&gt;Jacob Sebastian&lt;/a&gt; 
and &lt;a href="http://blog.sqlauthority.com/"&gt;Pinal Dave&lt;/a&gt; , who presents 
numerous technical sessions on SQL Server, Exchange Server 2010, Windows Server 
2008 and Virtualization. &lt;/p&gt;
&lt;p&gt;Anyone who is interested in technology can attend this event .This is free 
event no charges will be taken to attend this event. You can get detailed 
information about this event on &lt;a href="http://blog.sqlauthority.com/2009/06/09/sqlauthority-news-teched-on-road-ahmedabad-india-is-announced-june-20-2009-saturday/"&gt;Pinal&amp;rsquo;s 
Blog&lt;/a&gt; and &lt;a href="http://beyondrelational.com/blogs/jacob/archive/2009/06/10/beyond-relational-news-tech-ed-ahmedabad-2009-announced-20-june-2009-saturday-hotel-rock-regency.aspx"&gt;Jacob&amp;rsquo;s 
Blog&lt;/a&gt; . &lt;br /&gt;&lt;br /&gt;&lt;img src="http://www.pinaldave.com/bimg/techedonroad.jpg" width="595" height="842" alt="" /&gt; &lt;/p&gt;
&lt;p&gt;So mark your calendar for this grand event in Ahmedabad here are the details 
of this event ::&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Location ::&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Hotel Rock Regency &lt;br /&gt;C.G. Road &lt;br /&gt;Ahmedabad, India.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Date &amp;amp; Time::&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;June 20, 2009 Saturday &lt;br /&gt;1:30 PM &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://dotnetslackers.com/Community/aggbug.aspx?PostID=31619" width="1" height="1"&gt;</description><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/Ahmedabad/default.aspx">Ahmedabad</category><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/Gujarat/default.aspx">Gujarat</category><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/TechEd/default.aspx">TechEd</category></item><item><title>are you (MS) certifiable?!</title><link>http://dotnetslackers.com/Community/blogs/kaushalparik/archive/2009/05/08/are-you-ms-certifiable.aspx</link><pubDate>Fri, 08 May 2009 11:37:00 GMT</pubDate><guid isPermaLink="false">6afe0437-14b4-41d5-bc66-6d54a24dbd48:31452</guid><dc:creator>kaushalparik</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://dotnetslackers.com/Community/blogs/kaushalparik/rsscomments.aspx?PostID=31452</wfw:commentRss><comments>http://dotnetslackers.com/Community/blogs/kaushalparik/archive/2009/05/08/are-you-ms-certifiable.aspx#comments</comments><description>&lt;p&gt;







&lt;/p&gt;
&lt;p&gt;Just check out &lt;a target="_blank" title="Are you certifiable?" href="http://www.microsoft.com/click/areyoucertifiable"&gt;microsoft.com/areyoucertifiable&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;a funny dummy test environment who wants to appear and test yourself for ms certification. You can create login or can play as guest, select avtar. There are more than 400 Questions (objective - options to select) with 20 episodes and 5 seasons.&lt;/p&gt;
&lt;p&gt;lol.. i loved this :)&lt;/p&gt;&lt;img src="http://dotnetslackers.com/Community/aggbug.aspx?PostID=31452" width="1" height="1"&gt;</description><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/Kaushal/default.aspx">Kaushal</category><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/KaushalParik/default.aspx">KaushalParik</category><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/kaushalparik27/default.aspx">kaushalparik27</category><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/MCST/default.aspx">MCST</category><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/MCSD/default.aspx">MCSD</category><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/MS+Certification/default.aspx">MS Certification</category><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/MCTS/default.aspx">MCTS</category></item><item><title>Open AJAX Accordion Panes on MouseOver</title><link>http://dotnetslackers.com/Community/blogs/kaushalparik/archive/2009/05/08/open-ajax-accordion-panes-on-mouseover.aspx</link><pubDate>Fri, 08 May 2009 05:38:00 GMT</pubDate><guid isPermaLink="false">6afe0437-14b4-41d5-bc66-6d54a24dbd48:31448</guid><dc:creator>kaushalparik</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://dotnetslackers.com/Community/blogs/kaushalparik/rsscomments.aspx?PostID=31448</wfw:commentRss><comments>http://dotnetslackers.com/Community/blogs/kaushalparik/archive/2009/05/08/open-ajax-accordion-panes-on-mouseover.aspx#comments</comments><description>&lt;p&gt;The default behaviour of &lt;a href="http://www.asp.net/AJAX/AjaxControlToolkit/Samples/Accordion/Accordion.aspx"&gt;AJAX Accordion&lt;/a&gt; is: you click on any Accordion pane (say; any control placed in Accorion Pane Header section) cause that pane to Expand and collapse rest of the panes other than the pane which you clicked.&lt;/p&gt;
&lt;p&gt;It is also fairly easy to open Accordion Panes when you &amp;quot;MouseOver&amp;quot; on Pane rather than need to click the pane to open it.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://dotnetslackers.com/Community/blogs/kaushalparik/accordion-example/accordion-example.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;All you need to add a JavaScript function to ahieve that and call it or &amp;quot;MouseOver&amp;quot; event of ImageButton / Link / or any submit control which is placed inside Accordion Pane.&lt;/p&gt;
&lt;p&gt;You need to add below script in your page:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;script language=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; function Openpane(paneIndex)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //MyAccordion is the ID of AJAX Accordion control&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var behavior = $get(&amp;quot;&amp;lt;%=MyAccordion.ClientID%&amp;gt;&amp;quot;).AccordionBehavior;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; behavior.set_SelectedIndex(paneIndex);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/script&amp;gt;&lt;/p&gt;
&lt;p&gt;You need to pass the current Accordion Pane index as asrument of the above script function and call this function on &amp;quot;MouseOver&amp;quot; event as:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Panes&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ajaxToolkit:AccordionPane ID=&amp;quot;AccordionPane1&amp;quot; runat=&amp;quot;server&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Header&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;a href=&amp;quot;&amp;quot; class=&amp;quot;accordionLink&amp;quot; &lt;span style="text-decoration:underline;"&gt;&lt;b&gt;onmouseover=&amp;quot;Openpane(&amp;#39;0&amp;#39;)&amp;quot;&lt;/b&gt;&lt;/span&gt;&amp;gt;1. Accordion&amp;lt;/a&amp;gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Content&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; The Accordion is a web control that allows you to provide multiple panes and display&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; them one at a time. It is like having several Panes where only one can be expanded&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at a time. The Accordion is implemented as a web control that contains AccordionPane&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; web controls. Each AccordionPane control has a template for its Header and its Content.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; We keep track of the selected pane so it stays visible across postbacks.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/Content&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/ajaxToolkit:AccordionPane&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/Panes&amp;gt;&lt;/p&gt;
&lt;p&gt;for every pane, you can call the script function on &amp;quot;MouseOver&amp;quot; event by passing the index of that pane as argument.&lt;/p&gt;
&lt;p&gt;Thats it! Hope it would be helpful for someone in same need.&lt;/p&gt;&lt;img src="http://dotnetslackers.com/Community/aggbug.aspx?PostID=31448" width="1" height="1"&gt;</description><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/AJAX/default.aspx">AJAX</category><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/Kaushal/default.aspx">Kaushal</category><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/KaushalParik/default.aspx">KaushalParik</category><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/accordion/default.aspx">accordion</category><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/kaushalparik27/default.aspx">kaushalparik27</category><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/MouseOver/default.aspx">MouseOver</category><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/Accordion+Panes/default.aspx">Accordion Panes</category><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/Open+Accordion+Pane+on+MouseOver/default.aspx">Open Accordion Pane on MouseOver</category><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/AJAX+Accordion/default.aspx">AJAX Accordion</category><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/open+panes/default.aspx">open panes</category></item><item><title>Captcha Control in DotNetNuke/DNN Module</title><link>http://dotnetslackers.com/Community/blogs/kaushalparik/archive/2009/05/07/captcha-control-in-dotnetnuke-dnn-module.aspx</link><pubDate>Thu, 07 May 2009 10:02:00 GMT</pubDate><guid isPermaLink="false">6afe0437-14b4-41d5-bc66-6d54a24dbd48:31446</guid><dc:creator>kaushalparik</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://dotnetslackers.com/Community/blogs/kaushalparik/rsscomments.aspx?PostID=31446</wfw:commentRss><comments>http://dotnetslackers.com/Community/blogs/kaushalparik/archive/2009/05/07/captcha-control-in-dotnetnuke-dnn-module.aspx#comments</comments><description>&lt;p&gt;
    &lt;span style="font-family:Trebuchet MS,sans-serif;"&gt;&lt;span style="font-size:medium;"&gt;&lt;span&gt;
        I need to add Captcha Control for couple of contact and submission forms to stop
        possible spam bots. I tried with the similar way I approched In previous website
        application developed in ASP.NET. But, Its even too easy to add Captcha capability
        in forms than we do for simple websites. DotNetNuke/DNN is having a built in Captcha
        control which can be used on contact and submission forms.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;
    &lt;span style="font-family:Trebuchet MS,sans-serif;"&gt;&lt;span style="font-size:medium;"&gt;&lt;span&gt;
        First you need to add register tag for the control on your module user control.
        This will allow to create Captcha control and use it in code. The register line
        goes as:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;
    &lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="background:transparent none repeat scroll 0% 0%;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;
        &lt;span style="color:#0000ff;"&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;&lt;span&gt;%@
        &lt;/span&gt;&lt;/span&gt;&lt;span style="color:#ff0000;"&gt;&lt;span&gt;Register TagPrefix&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&lt;span&gt;=&amp;quot;dnn&amp;quot; &lt;/span&gt;&lt;/span&gt;&lt;span style="color:#ff0000;"&gt;&lt;span&gt;
                Assembly&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&lt;span&gt;=&amp;quot;DotNetNuke&amp;quot; &lt;/span&gt;
        &lt;/span&gt;&lt;span style="color:#ff0000;"&gt;&lt;span&gt;Namespace&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&lt;span&gt;=&amp;quot;DotNetNuke.UI.WebControls&amp;quot;%&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;
    &lt;span style="font-family:Trebuchet MS,sans-serif;"&gt;&lt;span style="font-size:medium;"&gt;&lt;span&gt;
        Next, is you need to create the control in ascx page as:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-bottom:0in;"&gt;
    &lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="background:transparent none repeat scroll 0% 0%;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;
        &lt;span style="color:#0000ff;"&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;&lt;span&gt;dnn:CaptchaControl&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="color:#ff0000;"&gt;&lt;span&gt;runat&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&lt;span&gt;=&amp;quot;server&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;&lt;span&gt;
                &lt;/span&gt;&lt;/span&gt;&lt;span style="color:#ff0000;"&gt;&lt;span&gt;ID&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&lt;span&gt;=&amp;quot;dnnCaptchaControl&amp;quot;
                &lt;/span&gt;&lt;/span&gt;&lt;span style="color:#ff0000;"&gt;&lt;span&gt;ErrorStyle-CssClass&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&lt;span&gt;=&amp;quot;NormalRed&amp;quot; &lt;/span&gt;&lt;/span&gt;&lt;span style="color:#ff0000;"&gt;
                        &lt;span&gt;cssclass&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&lt;span&gt;=&amp;quot;Normal&amp;quot; &lt;/span&gt;
        &lt;/span&gt;&lt;span style="color:#ff0000;"&gt;&lt;span&gt;ErrorMessage&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&lt;span&gt;=&amp;quot;The
            typed code must match the image, please try again&amp;quot; &lt;/span&gt;&lt;/span&gt;&lt;span style="color:#ff0000;"&gt;
                &lt;span&gt;CaptchaHeight&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&lt;span&gt;=&amp;quot;35&amp;quot; &lt;/span&gt;
        &lt;/span&gt;&lt;span style="color:#ff0000;"&gt;&lt;span&gt;CaptchaWidth&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&lt;span&gt;=&amp;quot;120&amp;quot;
            /&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-bottom:0in;"&gt;
    &lt;img src="http://dotnetslackers.com/Community/blogs/kaushalparik/catcha/screen-1.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;
    &lt;span style="font-family:Trebuchet MS,sans-serif;"&gt;&lt;span style="font-size:medium;"&gt;Believe
        me, you are done with DNN Captcha control! You only need to validate whether the
        entered value for captcha by user is correct or not. You can write below code in
        contact/sybmission form&amp;#39;s submit button click event:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-bottom:0in;"&gt;
    &lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="color:#0000ff;"&gt;if&lt;/span&gt;&lt;span style="color:#000000;"&gt;(ctlCaptcha.IsValid)&lt;br /&gt;
            {&lt;br /&gt;
        &lt;/span&gt;&lt;span style="color:#006400;"&gt;&amp;nbsp;&amp;nbsp; //Captcha is valid! Code to submit
            the contact/submission form...&lt;br /&gt;
        &lt;/span&gt;&lt;span style="color:#000000;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-bottom:0in;"&gt;
    &lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="color:#0000ff;"&gt;else&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-bottom:0in;"&gt;
    &lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;nbsp; return;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;img src="http://dotnetslackers.com/Community/aggbug.aspx?PostID=31446" width="1" height="1"&gt;</description><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/DotNetNuke/default.aspx">DotNetNuke</category><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/Kaushal/default.aspx">Kaushal</category><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/KaushalParik/default.aspx">KaushalParik</category><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/DNN+5.0/default.aspx">DNN 5.0</category><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/kaushalparik27/default.aspx">kaushalparik27</category><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/DNN/default.aspx">DNN</category><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/Implement+Captcha/default.aspx">Implement Captcha</category><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/Captcha+in+DNN/default.aspx">Captcha in DNN</category><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/Captcha/default.aspx">Captcha</category><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/Captcha+in+DotNetNuke/default.aspx">Captcha in DotNetNuke</category></item><item><title>File download problem: filename with spaces truncated in FF and replaced by underscore in IE</title><link>http://dotnetslackers.com/Community/blogs/kaushalparik/archive/2009/05/06/file-download-problem-filename-with-spaces-truncated-in-ff-and-replaced-by-underscore-in-ie.aspx</link><pubDate>Wed, 06 May 2009 13:01:00 GMT</pubDate><guid isPermaLink="false">6afe0437-14b4-41d5-bc66-6d54a24dbd48:31444</guid><dc:creator>kaushalparik</dc:creator><slash:comments>6</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://dotnetslackers.com/Community/blogs/kaushalparik/rsscomments.aspx?PostID=31444</wfw:commentRss><comments>http://dotnetslackers.com/Community/blogs/kaushalparik/archive/2009/05/06/file-download-problem-filename-with-spaces-truncated-in-ff-and-replaced-by-underscore-in-ie.aspx#comments</comments><description>&lt;p style="margin-bottom:0in;"&gt;
    &lt;span style="font-family:Calibri,sans-serif;"&gt;&lt;span style="font-size:medium;"&gt;This
        is a mere note to remember for future rather than a blog entry. While I am working
        on code to download file from server. I write below code:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;
    &lt;span id="ctl00_ContentPlaceHolder1_output"&gt;
&lt;pre class="csharpcode"&gt;        {&lt;br /&gt;            int ChunkSize = 10000;&lt;br /&gt;            string sFileFullPath = Server.MapPath(&amp;quot;New Text Document.txt&amp;quot;);&lt;br /&gt;            System.IO.FileInfo toDownload = new System.IO.FileInfo(sFileFullPath);&lt;br /&gt;            if (System.IO.File.Exists(sFileFullPath))&lt;br /&gt;            {&lt;br /&gt;                Response.Clear();&lt;br /&gt;                using (FileStream iStream = System.IO.File.OpenRead(sFileFullPath))&lt;br /&gt;                {                  &lt;br /&gt;                    long dataLengthToRead = iStream.Length;&lt;br /&gt;                    Byte[] buffer = new Byte[dataLengthToRead];                   &lt;br /&gt;                    Response.ContentType = &amp;quot;application/octet-stream&amp;quot;;                   &lt;br /&gt;                    Response.AddHeader(&amp;quot;Content-Disposition&amp;quot;, &amp;quot;attachment; filename=&amp;quot; + filename);                                                          &lt;br /&gt;                    while (ChunkSize &amp;gt; 0 &amp;amp;&amp;amp; Response.IsClientConnected)&lt;br /&gt;                    {&lt;br /&gt;                        if (ChunkSize &amp;gt; dataLengthToRead)&lt;br /&gt;                        {&lt;br /&gt;                            ChunkSize = int.Parse(dataLengthToRead.ToString());&lt;br /&gt;                        }                      &lt;br /&gt;                        int lengthRead = iStream.Read(buffer, 0, ChunkSize);&lt;br /&gt;                        Response.OutputStream.Write(buffer, 0, lengthRead);&lt;br /&gt;                        Response.Flush();&lt;br /&gt;                        dataLengthToRead = dataLengthToRead - lengthRead;&lt;br /&gt;                    }&lt;br /&gt;                }&lt;br /&gt;                Response.Close();&lt;br /&gt;                Response.End();&lt;br /&gt;            }&lt;br /&gt;            else&lt;br /&gt;            {&lt;br /&gt;                this.Page.ClientScript.RegisterStartupScript(GetType(), &amp;quot;ShowMessage&amp;quot;, &amp;quot;&amp;lt;script language=&amp;#39;javascript&amp;#39;&amp;gt;alert(&amp;#39;No Files Available&amp;#39;);&amp;lt;/script&amp;gt;&amp;quot;);&lt;br /&gt;            }&lt;br /&gt;        }&lt;/pre&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin-bottom:0in;"&gt;
    &lt;span style="font-family:Calibri,sans-serif;"&gt;&lt;span style="font-size:medium;"&gt;&lt;span style="color:#000000;"&gt;When I ran the application I found that the file which I
        need to download was containing spaces in its name like &amp;ldquo;New Text Document.txt&amp;rdquo;.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-bottom:0in;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin-bottom:0in;"&gt;
    &lt;span style="font-family:Calibri,sans-serif;"&gt;&lt;span style="font-size:medium;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="text-decoration:underline;"&gt;The problem is&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-bottom:0in;"&gt;
    &lt;span style="font-family:Calibri,sans-serif;"&gt;&lt;span style="font-size:medium;"&gt;&lt;span style="color:#000000;"&gt;In FF, was truncating the filename from space while showing
        the file download dialog . So, its only showing the filename as &amp;ldquo;New&amp;rdquo;
        (and truncating the rest of the filename after space).&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-bottom:0in;"&gt;
    &lt;img src="http://dotnetslackers.com/Community/blogs/kaushalparik/filedownloadprob/screen-1.gif" alt="" /&gt;&lt;/p&gt;
&lt;p style="margin-bottom:0in;"&gt;
    &lt;span style="font-family:Calibri,sans-serif;"&gt;&lt;span style="font-size:medium;"&gt;&lt;span style="color:#000000;"&gt;In IE, was replacing the spaces in filename with underscore
        ( _ ) as &amp;ldquo;New_Text_Document.txt&amp;rdquo; while showing the file download dialog
        box.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-bottom:0in;"&gt;
    &lt;img src="http://dotnetslackers.com/Community/blogs/kaushalparik/filedownloadprob/screen-2.gif" alt="" /&gt;&lt;/p&gt;
&lt;p style="margin-bottom:0in;"&gt;
    &lt;span style="font-family:Calibri,sans-serif;"&gt;&lt;span style="font-size:medium;"&gt;&lt;span style="color:#000000;"&gt;This something I dont want to have. I need to have the exact
        filename as it is on server. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin-bottom:0in;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin-bottom:0in;"&gt;
    &lt;span style="font-family:Calibri,sans-serif;"&gt;&lt;span style="font-size:medium;"&gt;&lt;span style="text-decoration:underline;"&gt;&lt;span style="color:#000000;"&gt;The solution is&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;span style="text-decoration:none;"&gt;:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-bottom:0in;"&gt;
    &lt;span style="font-family:Calibri,sans-serif;"&gt;&lt;span style="font-size:medium;"&gt;&lt;span style="color:#000000;"&gt;For FF: you need to enclose the name of the file in Quotes
        while you add it as attachment in response header as:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-bottom:0in;"&gt;
    &lt;span style="color:#000000;"&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-size:medium;"&gt;&lt;span&gt;Response.AddHeader(&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;&lt;span style="font-size:medium;"&gt;&lt;span&gt;&amp;quot;Content-Disposition&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-size:medium;"&gt;&lt;span&gt;, &lt;/span&gt;&lt;/span&gt;
    &lt;/span&gt;&lt;span style="color:#a31515;"&gt;&lt;span style="font-size:medium;"&gt;&lt;span&gt;&amp;quot;attachment;
        filename=\&amp;quot;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-size:medium;"&gt;&lt;span&gt;
            + filename + &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;&lt;span style="font-size:medium;"&gt;
                &lt;span&gt;&amp;quot;\&amp;quot;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-size:medium;"&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-bottom:0in;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin-bottom:0in;"&gt;
    &lt;span style="font-family:Calibri,sans-serif;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-size:medium;"&gt;For IE: you need to identify and replace the space in
        filename with &amp;ldquo;%20&amp;rdquo; (something like encoding filename) as:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;
    &lt;span id="ctl00_ContentPlaceHolder1_output"&gt;
&lt;pre class="csharpcode"&gt;String userAgent = Request.Headers.Get(&amp;quot;User-Agent&amp;quot;);&lt;br /&gt;String filename = toDownload.Name;&lt;br /&gt;if (userAgent.Contains(&amp;quot;MSIE 7.0&amp;quot;))&lt;br /&gt;    filename = toDownload.Name.Replace(&amp;quot; &amp;quot;, &amp;quot;%20&amp;quot;);&lt;/pre&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin-bottom:0in;"&gt;
    &lt;span style="color:#000000;"&gt;&lt;span style="font-family:Calibri,sans-serif;"&gt;&lt;span style="font-size:medium;"&gt;&lt;span&gt;Thats It! Hope it would be helpful for
            someone in same need!&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-bottom:0in;"&gt;
    &lt;span style="color:#000000;"&gt;&lt;span style="font-family:Calibri,sans-serif;"&gt;&lt;span style="font-size:medium;"&gt;&lt;span&gt;Complete Code would be:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-bottom:0in;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;
    &lt;span id="ctl00_ContentPlaceHolder1_output"&gt;
&lt;pre class="csharpcode"&gt;        {&lt;br /&gt;            int ChunkSize = 10000;&lt;br /&gt;            string sFileFullPath = Server.MapPath(&amp;quot;New Text Document.txt&amp;quot;);&lt;br /&gt;            System.IO.FileInfo toDownload =&lt;br /&gt;            new System.IO.FileInfo(sFileFullPath);&lt;br /&gt;            if (System.IO.File.Exists(sFileFullPath))&lt;br /&gt;            {&lt;br /&gt;                Response.Clear();&lt;br /&gt;                using (FileStream iStream = System.IO.File.OpenRead(sFileFullPath))&lt;br /&gt;                {                  &lt;br /&gt;                    long dataLengthToRead = iStream.Length;&lt;br /&gt;                    Byte[] buffer = new Byte[dataLengthToRead];                   &lt;br /&gt;                    Response.ContentType = &amp;quot;application/octet-stream&amp;quot;;                   &lt;br /&gt;                    String userAgent = Request.Headers.Get(&amp;quot;User-Agent&amp;quot;);                  &lt;br /&gt;                    String filename = toDownload.Name;&lt;br /&gt;                    if (userAgent.Contains(&amp;quot;MSIE 7.0&amp;quot;))&lt;br /&gt;                        filename = toDownload.Name.Replace(&amp;quot; &amp;quot;, &amp;quot;%20&amp;quot;);&lt;br /&gt;                    Response.AddHeader(&amp;quot;Content-Disposition&amp;quot;, &amp;quot;attachment; filename=\&amp;quot;&amp;quot; + filename + &amp;quot;\&amp;quot;&amp;quot;);                  &lt;br /&gt;                    while (ChunkSize &amp;gt; 0 &amp;amp;&amp;amp; Response.IsClientConnected)&lt;br /&gt;                    {&lt;br /&gt;                        if (ChunkSize &amp;gt; dataLengthToRead)&lt;br /&gt;                        {&lt;br /&gt;                            ChunkSize = int.Parse(dataLengthToRead.ToString());&lt;br /&gt;                        }                      &lt;br /&gt;                        int lengthRead = iStream.Read(buffer, 0, ChunkSize);&lt;br /&gt;                        Response.OutputStream.Write(buffer, 0, lengthRead);&lt;br /&gt;                        Response.Flush();&lt;br /&gt;                        dataLengthToRead = dataLengthToRead - lengthRead;&lt;br /&gt;                    }&lt;br /&gt;                }&lt;br /&gt;                Response.Close();&lt;br /&gt;                Response.End();&lt;br /&gt;            }&lt;br /&gt;            else&lt;br /&gt;            {&lt;br /&gt;                this.Page.ClientScript.RegisterStartupScript(GetType(), &amp;quot;ShowMessage&amp;quot;, &amp;quot;&amp;lt;script language=&amp;#39;javascript&amp;#39;&amp;gt;alert(&amp;#39;No Files Available&amp;#39;);&amp;lt;/script&amp;gt;&amp;quot;);&lt;br /&gt;            }&lt;br /&gt;        }&lt;/pre&gt;
&lt;/span&gt;
&lt;/p&gt;&lt;img src="http://dotnetslackers.com/Community/aggbug.aspx?PostID=31444" width="1" height="1"&gt;</description><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/Kaushal/default.aspx">Kaushal</category><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/KaushalParik/default.aspx">KaushalParik</category><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/asp/default.aspx">asp</category><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/file+download+in+asp.net/default.aspx">file download in asp.net</category><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/filename+with+spaces+are+replaced+with+underscore+in+IE/default.aspx">filename with spaces are replaced with underscore in IE</category><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/filename+with+spaces+truncated+in+IE/default.aspx">filename with spaces truncated in IE</category><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/file+download/default.aspx">file download</category><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/browser+compatibility/default.aspx">browser compatibility</category></item><item><title>OnKeyPress event - event.keyCode and event.which (validating for numarics)</title><link>http://dotnetslackers.com/Community/blogs/kaushalparik/archive/2009/05/05/onkeypress-event-event-keycode-and-event-which-validating-for-numarics.aspx</link><pubDate>Tue, 05 May 2009 06:20:00 GMT</pubDate><guid isPermaLink="false">6afe0437-14b4-41d5-bc66-6d54a24dbd48:31435</guid><dc:creator>kaushalparik</dc:creator><slash:comments>4</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://dotnetslackers.com/Community/blogs/kaushalparik/rsscomments.aspx?PostID=31435</wfw:commentRss><comments>http://dotnetslackers.com/Community/blogs/kaushalparik/archive/2009/05/05/onkeypress-event-event-keycode-and-event-which-validating-for-numarics.aspx#comments</comments><description>&lt;p style="margin-bottom:0in;"&gt;&lt;span style="font-family:Calibri,sans-serif;"&gt;&lt;span style="font-size:medium;"&gt;I
am trying to validate textbox for numeric entry, while I added this
code to accomplish in page_load event:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-bottom:0in;"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:medium;"&gt;&lt;span&gt;textbox.Attributes.Add(&lt;/span&gt;&lt;span style="color:#a31515;"&gt;&lt;span&gt;&amp;quot;onkeypress&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;&lt;span&gt;&amp;quot;return
(window.event.keyCode == 45 || window.event.keyCode == 13 ||
window.event.keyCode == 8 || window.event.keyCode == 9 ||
window.event.keyCode == 189 || window.event.keyCode == 109 ||
(window.event.keyCode &amp;gt;= 48 &amp;amp;&amp;amp; window.event.keyCode &amp;lt;=
58) )&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-bottom:0in;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-family:Calibri,sans-serif;"&gt;&lt;span style="font-size:medium;"&gt;&lt;span&gt;It
worked fine in IE7 and IE8, but it didnt work for FF though. A bit
googling gave me conclusion that FF doest recognize 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;&lt;span style="font-family:Calibri,sans-serif;"&gt;&lt;span style="font-size:medium;"&gt;&lt;span&gt;window.event.keyCode.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-family:Calibri,sans-serif;"&gt;&lt;span style="font-size:medium;"&gt;&lt;span&gt;Basically
Firefox supports the which property instead of the keyCode property
IE does. By checking which (&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;&lt;span style="font-family:Calibri,sans-serif;"&gt;&lt;span style="font-size:medium;"&gt;&lt;span&gt;window.event.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;&lt;span style="font-family:Calibri,sans-serif;"&gt;&lt;span style="font-size:medium;"&gt;&lt;span&gt;which&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-family:Calibri,sans-serif;"&gt;&lt;span style="font-size:medium;"&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;&lt;span style="font-family:Calibri,sans-serif;"&gt;&lt;span style="font-size:medium;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-family:Calibri,sans-serif;"&gt;&lt;span style="font-size:medium;"&gt;&lt;span&gt;of
them exists with an if statement we can reliably get the key that was
pressed. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin-bottom:0in;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-family:Calibri,sans-serif;"&gt;&lt;span style="font-size:medium;"&gt;&lt;span&gt;I
replaced above code with:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-bottom:0in;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:medium;"&gt;&lt;span&gt;textBox.Attributes.Add(&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:medium;"&gt;&lt;span&gt;&amp;quot;onkeypress&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:medium;"&gt;&lt;span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:medium;"&gt;&lt;span&gt;&amp;quot;var
key; if(window.event){ key = event.keyCode;}else if(event.which){ key
= event.which;} return (key == 45 || key == 13 || key == 8 || key ==
9 || key == 189 || (key &amp;gt;= 48 &amp;amp;&amp;amp; key &amp;lt;= 58) )&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:medium;"&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-family:Calibri,sans-serif;"&gt;&lt;span style="font-size:medium;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin-bottom:0in;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-family:Calibri,sans-serif;"&gt;&lt;span style="font-size:medium;"&gt;&lt;span&gt;it
worked for both IE and FF. Hope
it would help someone in same need!&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://dotnetslackers.com/Community/aggbug.aspx?PostID=31435" width="1" height="1"&gt;</description><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/JavaScript/default.aspx">JavaScript</category><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/Kaushal/default.aspx">Kaushal</category><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/KaushalParik/default.aspx">KaushalParik</category><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/validating+numeric+entries/default.aspx">validating numeric entries</category><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/event.keyCode/default.aspx">event.keyCode</category><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/Keypress+event/default.aspx">Keypress event</category><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/event.which/default.aspx">event.which</category><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/javascript+numeric+validation/default.aspx">javascript numeric validation</category><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/window.event.which/default.aspx">window.event.which</category><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/window.event.keyCode/default.aspx">window.event.keyCode</category></item><item><title>Create PDF files on-the-fly in ASP.NET (Using Crystal Report!)</title><link>http://dotnetslackers.com/Community/blogs/kaushalparik/archive/2009/05/04/create-pdf-files-on-the-fly-in-asp-net-using-crystal-report.aspx</link><pubDate>Mon, 04 May 2009 06:02:00 GMT</pubDate><guid isPermaLink="false">6afe0437-14b4-41d5-bc66-6d54a24dbd48:31419</guid><dc:creator>kaushalparik</dc:creator><slash:comments>7</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://dotnetslackers.com/Community/blogs/kaushalparik/rsscomments.aspx?PostID=31419</wfw:commentRss><comments>http://dotnetslackers.com/Community/blogs/kaushalparik/archive/2009/05/04/create-pdf-files-on-the-fly-in-asp-net-using-crystal-report.aspx#comments</comments><description>&lt;p style="margin-bottom:0in;text-decoration:none;"&gt;
    &lt;span style="font-family:Trebuchet MS,sans-serif;"&gt;&lt;span&gt;
        Here is another requirement (perhaps a common requirement!) I needed to implement
        in one of on-going project website application. I needed to generate a PDF file
        as output from the inputs entered by end-user in a form. On Completing the form,
        end-user should be able to download a PDF file of what they have given the inputs
        in the form.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-bottom:0in;text-decoration:none;"&gt;
    &lt;span style="font-family:Trebuchet MS,sans-serif;"&gt;&lt;span&gt;
        I need to generate PDF file in a given format and force the download dialog to let
        the user save generated PDF save on their/client machine.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-bottom:0in;text-decoration:none;"&gt;
    &lt;span style="font-family:Trebuchet MS,sans-serif;"&gt;&lt;span&gt;
        I tried searching any free :) third party dlls which would help me to generate PDF
        files on-the-fly. Things I tried:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-bottom:0in;"&gt;
    &lt;span style="font-family:Trebuchet MS,sans-serif;"&gt;&lt;span&gt;
        &lt;span style="text-decoration:none;"&gt;&lt;span&gt;[1] Tried searching almost third party tools/dlls
            including &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Trebuchet MS,sans-serif;"&gt;
                &lt;span&gt;&lt;a href="http://www.topshareware.com/Siberix-PDF-Library-download-8131.htm"&gt;
                    Siberix PDF Library&lt;/a&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Trebuchet MS,sans-serif;"&gt;
                        &lt;span&gt;&lt;span style="text-decoration:none;"&gt;&lt;span&gt;, &lt;a href="http://www.sautinsoft.com/products/convert-html-pdf-and-tiff-pdf-asp.net/order.php"&gt;
                            PDF Vision .Net&lt;/a&gt; etc etc, which are having similar functionality. But not FREE
                            :(&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-bottom:0in;"&gt;
    &lt;span style="font-family:Trebuchet MS,sans-serif;"&gt;&lt;span&gt;
        &lt;span style="text-decoration:none;"&gt;&lt;span&gt;[2] Tried with &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
    &lt;/span&gt;&lt;span style="font-family:Trebuchet MS,sans-serif;"&gt;&lt;span&gt;
        &lt;a href="http://itextsharp.sourceforge.net/tutorial/index.html"&gt;iTextSharp - Tutorial&lt;/a&gt;
    &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Trebuchet MS,sans-serif;"&gt;&lt;span&gt;
        &lt;span style="text-decoration:none;"&gt;&lt;span&gt;and &lt;a href="http://pdfsharp.com/PDFsharp/index.php?option=com_content&amp;amp;task=view&amp;amp;id=54&amp;amp;Itemid=64"&gt;
            PDFsharp - Download PDFsharp Version 1.20&lt;/a&gt; These dlls/libraries are totally free
            and really interesting to work with. All we need to do is define elements like HTML
            and add those elements to PDF document object which then finally generated as PDF
            document. But, this is the problem for me as I am having a huge PDF file needed
            to generate as output and it would required a loot of time to code for a document
            by placing line by line cells, TR and TD, Tables and background, Border colors,
            images etc. and most of all is annoying Texts to be placed in those elements with
            proper fonts, colors and padding/alignment.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-bottom:0in;"&gt;
    &lt;span style="font-family:Trebuchet MS,sans-serif;"&gt;&lt;span&gt;
        &lt;span style="text-decoration:none;"&gt;&lt;span&gt;At last after wasting time in googling and
            on free tools/libraries, I got an idea to create PDF on-the-fly. I was thinking
            of creating PDF files dynamically and I created it smoothly with out too much work
            and code.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-bottom:0in;"&gt;
    &lt;span style="font-family:Trebuchet MS,sans-serif;"&gt;&lt;span&gt;
        &lt;span style="text-decoration:none;"&gt;&lt;span&gt;This is how it goes:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-bottom:0in;"&gt;
    &lt;span style="font-family:Trebuchet MS,sans-serif;"&gt;&lt;span&gt;
        &lt;span style="text-decoration:none;"&gt;&lt;span&gt;[1] I created a clean A4 size SnapShot of
            the PDF file I needed to be generated dynamically.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-bottom:0in;"&gt;
    &lt;span style="font-family:Trebuchet MS,sans-serif;"&gt;&lt;span&gt;
        &lt;span style="text-decoration:none;"&gt;&lt;span&gt;[2] Next, I added a blank crystal report
            to the solution.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-bottom:0in;"&gt;
    &lt;span style="font-family:Trebuchet MS,sans-serif;"&gt;&lt;span&gt;
        &lt;span style="text-decoration:none;"&gt;&lt;span&gt;[3] I added/set the PDF SnapShot as the background
            of the crystal report by Right Click on the detail section of the crystal report
            &amp;gt; Insert &amp;gt; Picture &amp;gt; and select the SnapShot and place it inside the detail
            section with proper left-top padding.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-bottom:0in;"&gt;&lt;img src="http://dotnetslackers.com/Community/blogs/kaushalparik/crystal-pdf/screen-1.png" alt="" /&gt;&lt;/p&gt;
&lt;p style="margin-bottom:0in;"&gt;
    &lt;span style="font-family:Trebuchet MS,sans-serif;"&gt;&lt;span&gt;
        &lt;span style="text-decoration:none;"&gt;&lt;span&gt;[4] as of now, Crystal Report is showing
            exactly same as the PDF file with blank inputs.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-bottom:0in;"&gt;
    &lt;span style="font-family:Trebuchet MS,sans-serif;"&gt;&lt;span&gt;
        &lt;span style="text-decoration:none;"&gt;&lt;span&gt;[5] next is, to accept inputs from end-user
            and pass those inputs as parameters to Crystal Report.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-bottom:0in;"&gt;
    &lt;span style="font-family:Trebuchet MS,sans-serif;"&gt;&lt;span&gt;
        &lt;span style="text-decoration:none;"&gt;&lt;span&gt;[6 ] I declared required parameters those
            are needed to pass runtime with the input values entered by end-user to Crystal
            Report. And place those parameters object in the Crystal Report accurately in a
            way, like those parameters were showing as the resultant values in PDF files. At
            this time, Crystal Report is having PDF like look with parameters. For this I need to set the PDF SnapShot background &amp;quot;send to BACK&amp;quot; as:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-bottom:0in;"&gt;&lt;img src="http://dotnetslackers.com/Community/blogs/kaushalparik/crystal-pdf/screen-2.png" alt="" /&gt;&lt;/p&gt;
&lt;p style="margin-bottom:0in;"&gt;Below are the declared parameters which will be passed dynamically after accepting/submitting user inputs.&lt;/p&gt;
&lt;p style="margin-bottom:0in;"&gt;&lt;img src="http://dotnetslackers.com/Community/blogs/kaushalparik/crystal-pdf/screen-4.png" alt="" /&gt;&lt;/p&gt;
&lt;p style="margin-bottom:0in;"&gt;This is how Crystal Report saw when Parameters placed on the Crystal Report Detailed section after moving the SnapShot to move BACK:&lt;/p&gt;
&lt;p style="margin-bottom:0in;"&gt;&lt;img src="http://dotnetslackers.com/Community/blogs/kaushalparik/crystal-pdf/screen-3.png" alt="" /&gt;&lt;/p&gt;
&lt;p style="margin-bottom:0in;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin-bottom:0in;"&gt;
    &lt;span style="font-family:Trebuchet MS,sans-serif;"&gt;&lt;span&gt;
        &lt;span style="text-decoration:none;"&gt;&lt;span&gt;[7] After Declaring parameters, only thing
            left is to pass values and directly export the Crystal Report in PDF file rather
            than to show it on user screen. And after successful Export in PDF file, force download
            dialog to let end-user save the generated PDF file.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin-bottom:0in;"&gt;
    &lt;span style="font-family:Trebuchet MS,sans-serif;"&gt;&lt;span&gt;
        &lt;span style="text-decoration:none;"&gt;&lt;span&gt;Below is the Code to pass parameters dynamically
            and force download dialog to save the file:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-bottom:0in;"&gt;
    &lt;span style="color:#000000;"&gt;&lt;span style="text-decoration:none;"&gt;&lt;/span&gt;&lt;/span&gt;
    &lt;span style="color:#000000;"&gt;&lt;span style="text-decoration:none;"&gt;&lt;/span&gt;&lt;/span&gt;
    &lt;span style="color:#008000;"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span&gt;&lt;span&gt;&lt;span style="text-decoration:none;"&gt;&lt;span&gt;&amp;#39;create
            the report document&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-bottom:0in;"&gt;
    &lt;span style="color:#000000;"&gt;&lt;/span&gt;&lt;span style="font-family:Courier New,monospace;"&gt;
        &lt;span style="color:#0000ff;"&gt;&lt;span&gt;&lt;span&gt;Dim&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;span&gt;&lt;span&gt; doc &lt;/span&gt;&lt;/span&gt;
        &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&lt;span&gt;&lt;span&gt;As&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;
        &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&lt;span&gt;&lt;span&gt;New&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;span&gt;&lt;span&gt; ReportDocument()&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-bottom:0in;"&gt;
    &lt;span style="color:#000000;"&gt;&lt;/span&gt;&lt;span style="font-family:Courier New,monospace;"&gt;
        &lt;span style="color:#0000ff;"&gt;&lt;span&gt;&lt;span&gt;Dim&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;span&gt;&lt;span&gt; fileName &lt;/span&gt;
            &lt;/span&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&lt;span&gt;&lt;span&gt;
                As&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;span&gt;&lt;span&gt;
                &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&lt;span&gt;
                    &lt;span&gt;String&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;span&gt;&lt;span&gt;
                        = Server.MapPath(&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;&lt;span&gt;&lt;span&gt;&amp;quot;~/DesktopModules/OnlineForm/OnlineForm.rpt&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-bottom:0in;"&gt;
    &lt;span style="color:#000000;"&gt;&lt;/span&gt;&lt;span style="font-family:Courier New,monospace;"&gt;
        &lt;span style="color:#008000;"&gt;&lt;span&gt;&lt;span&gt;&amp;#39;load the rpt
            file to document&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-bottom:0in;"&gt;
    &lt;span style="color:#000000;"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span&gt;doc.Load(fileName)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-bottom:0in;"&gt;
    &lt;span style="color:#000000;"&gt;&lt;/span&gt;&lt;span style="font-family:Courier New,monospace;"&gt;
        &lt;span style="color:#008000;"&gt;&lt;span&gt;&lt;span&gt;&amp;#39;pass the user
            inputs to crystal report parameters those will sit in the output pdf file&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-bottom:0in;"&gt;
    &lt;span style="color:#000000;"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span&gt;&lt;span&gt;doc.SetParameterValue(&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;&lt;span&gt;&lt;span&gt;&amp;quot;@CompanyName&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;span&gt;&lt;span&gt;, txtCompany.Text.Trim())&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-bottom:0in;"&gt;
    &lt;span style="color:#000000;"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span&gt;&lt;span&gt;doc.SetParameterValue(&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;&lt;span&gt;&lt;span&gt;&amp;quot;@CustomerName&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;span&gt;&lt;span&gt;, txtFirstName.Text.Trim()
                    + &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;&lt;span&gt;
                        &lt;span&gt;&amp;quot; &amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;span&gt;&lt;span&gt;
                            + txtLastName.Text.Trim())&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-bottom:0in;"&gt;
    &lt;span style="color:#000000;"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span&gt;&lt;span&gt;doc.SetParameterValue(&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;&lt;span&gt;&lt;span&gt;&amp;quot;@Address&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;span&gt;&lt;span&gt;, txtAddress.Text.Trim())&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-bottom:0in;"&gt;
    &lt;span style="color:#000000;"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span&gt;&lt;span&gt;doc.SetParameterValue(&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;&lt;span&gt;&lt;span&gt;&amp;quot;@City&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;span&gt;&lt;span&gt;, txtCity.Text.Trim())&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-bottom:0in;"&gt;
    &lt;span style="color:#000000;"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span&gt;&lt;span&gt;doc.SetParameterValue(&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;&lt;span&gt;&lt;span&gt;&amp;quot;@Province&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;span&gt;&lt;span&gt;, txtProvince.Text.Trim())&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-bottom:0in;"&gt;
    &lt;span style="color:#000000;"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span&gt;&lt;span&gt;doc.SetParameterValue(&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;&lt;span&gt;&lt;span&gt;&amp;quot;@PostalCode&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;span&gt;&lt;span&gt;, txtPostalCode.Text.Trim())&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-bottom:0in;"&gt;
    &lt;span style="color:#000000;"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span&gt;&lt;span&gt;doc.SetParameterValue(&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;&lt;span&gt;&lt;span&gt;&amp;quot;@Phone1&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;span&gt;&lt;span&gt;, txtPhone11.Text.Trim()
                    + &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;&lt;span&gt;
                        &lt;span&gt;&amp;quot; - &amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;span&gt;&lt;span&gt;
                            + txtPhone12.Text.Trim() + &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;&lt;span&gt;&lt;span&gt;&amp;quot; - &amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;span&gt;&lt;span&gt; + txtPhone13.Text.Trim())&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-bottom:0in;"&gt;
    &lt;span style="color:#000000;"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span&gt;&lt;span&gt;doc.SetParameterValue(&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;&lt;span&gt;&lt;span&gt;&amp;quot;@Phone2&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;span&gt;&lt;span&gt;, txtPhone21.Text.Trim()
                    + &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;&lt;span&gt;
                        &lt;span&gt;&amp;quot; - &amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;span&gt;&lt;span&gt;
                            + txtPhone22.Text.Trim() + &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;&lt;span&gt;&lt;span&gt;&amp;quot; - &amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;span&gt;&lt;span&gt; + txtPhone23.Text.Trim())&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-bottom:0in;"&gt;
    &lt;span style="color:#000000;"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span&gt;&lt;span&gt;doc.SetParameterValue(&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;&lt;span&gt;&lt;span&gt;&amp;quot;@Phone3&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;span&gt;&lt;span&gt;, txtPhone31.Text.Trim()
                    + &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;&lt;span&gt;
                        &lt;span&gt;&amp;quot; - &amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;span&gt;&lt;span&gt;
                            + txtPhone32.Text.Trim() + &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;&lt;span&gt;&lt;span&gt;&amp;quot; - &amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;span&gt;&lt;span&gt; + txtPhone33.Text.Trim())&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-bottom:0in;"&gt;
    &lt;span style="color:#000000;"&gt;&lt;/span&gt;&lt;span style="font-family:Courier New,monospace;"&gt;
        &lt;span style="color:#008000;"&gt;&lt;span&gt;&lt;span&gt;&amp;#39;set the export
            options to PDF&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-bottom:0in;"&gt;
    &lt;span style="color:#000000;"&gt;&lt;/span&gt;&lt;span style="font-family:Courier New,monospace;"&gt;
        &lt;span style="color:#0000ff;"&gt;&lt;span&gt;&lt;span&gt;Dim&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;span&gt;&lt;span&gt; exportOpts &lt;/span&gt;
            &lt;/span&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&lt;span&gt;&lt;span&gt;
                As&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;span&gt;&lt;span&gt;
                    ExportOptions = doc.ExportOptions&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-bottom:0in;"&gt;
    &lt;span style="color:#000000;"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span&gt;exportOpts.ExportFormatType = ExportFormatType.PortableDocFormat&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-bottom:0in;"&gt;
    &lt;span style="color:#000000;"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span&gt;exportOpts.ExportDestinationType = ExportDestinationType.DiskFile&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-bottom:0in;"&gt;
    &lt;span style="color:#000000;"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span&gt;&lt;span&gt;exportOpts.DestinationOptions = &lt;/span&gt;&lt;/span&gt;
    &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&lt;span&gt;&lt;span&gt;New&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;span&gt;&lt;span&gt; DiskFileDestinationOptions()&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-bottom:0in;"&gt;
    &lt;span style="color:#000000;"&gt;&lt;/span&gt;&lt;span style="font-family:Courier New,monospace;"&gt;
        &lt;span style="color:#008000;"&gt;&lt;span&gt;&lt;span&gt;&amp;#39; Set the disk
            file options.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-bottom:0in;"&gt;
    &lt;span style="color:#000000;"&gt;&lt;/span&gt;&lt;span style="font-family:Courier New,monospace;"&gt;
        &lt;span style="color:#0000ff;"&gt;&lt;span&gt;&lt;span&gt;Dim&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;span&gt;&lt;span&gt; diskOpts &lt;/span&gt;
            &lt;/span&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&lt;span&gt;&lt;span&gt;
                As&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;span&gt;&lt;span&gt;
                &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&lt;span&gt;
                    &lt;span&gt;New&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;span&gt;&lt;span&gt;
                        DiskFileDestinationOptions()&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-bottom:0in;"&gt;
    &lt;span style="color:#000000;"&gt;&lt;/span&gt;&lt;span style="font-family:Courier New,monospace;"&gt;
        &lt;span style="color:#0000ff;"&gt;&lt;span&gt;&lt;span&gt;CType&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;span&gt;&lt;span&gt;(doc.ExportOptions.DestinationOptions,
                DiskFileDestinationOptions).DiskFileName = Server.MapPath(&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;&lt;span&gt;&lt;span&gt;&amp;quot;~/DesktopModules/OnlineForm/OnlineForm.pdf&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-bottom:0in;"&gt;
    &lt;span style="color:#000000;"&gt;&lt;/span&gt;&lt;span style="font-family:Courier New,monospace;"&gt;
        &lt;span style="color:#008000;"&gt;&lt;span&gt;&lt;span&gt;&amp;#39;export the report
            to PDF rather than displaying the report in a viewer&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-bottom:0in;"&gt;
    &lt;span style="color:#000000;"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span&gt;doc.Export()&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-bottom:0in;"&gt;
    &lt;span style="color:#000000;"&gt;&lt;/span&gt;&lt;span style="font-family:Courier New,monospace;"&gt;
        &lt;span style="color:#008000;"&gt;&lt;span&gt;&lt;span&gt;&amp;#39;force download
            dialog to download the PDF file at user end.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-bottom:0in;"&gt;
    &lt;span style="color:#000000;"&gt;&lt;/span&gt;&lt;span style="font-family:Courier New,monospace;"&gt;
        &lt;span style="color:#008000;"&gt;&lt;span&gt;&lt;span&gt;&amp;#39;Set the appropriate
            ContentType.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-bottom:0in;"&gt;
    &lt;span style="color:#000000;"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span&gt;&lt;span&gt;Response.ContentType = &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;&lt;span&gt;&lt;span&gt;&amp;quot;Application/pdf&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-bottom:0in;"&gt;
    &lt;span style="color:#000000;"&gt;&lt;/span&gt;&lt;span style="font-family:Courier New,monospace;"&gt;
        &lt;span style="color:#008000;"&gt;&lt;span&gt;&lt;span&gt;&amp;#39;Get the physical
            path to the file.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-bottom:0in;"&gt;
    &lt;span style="color:#000000;"&gt;&lt;/span&gt;&lt;span style="font-family:Courier New,monospace;"&gt;
        &lt;span style="color:#0000ff;"&gt;&lt;span&gt;&lt;span&gt;Dim&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;span&gt;&lt;span&gt; FilePath &lt;/span&gt;
            &lt;/span&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&lt;span&gt;&lt;span&gt;
                As&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;span&gt;&lt;span&gt;
                &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&lt;span&gt;
                    &lt;span&gt;String&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;span&gt;&lt;span&gt;
                        = Server.MapPath(&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;&lt;span&gt;&lt;span&gt;&amp;quot;~/DesktopModules/OnlineForm/OnlineForm.pdf&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-bottom:0in;"&gt;
    &lt;span style="color:#000000;"&gt;&lt;/span&gt;&lt;span style="font-family:Courier New,monospace;"&gt;
        &lt;span style="color:#008000;"&gt;&lt;span&gt;&lt;span&gt;&amp;#39;Write the file
            directly to the HTTP content output stream.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-bottom:0in;"&gt;
    &lt;span style="color:#000000;"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span&gt;Response.WriteFile(FilePath)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-bottom:0in;"&gt;
    &lt;span style="color:#000000;"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span&gt;&lt;span&gt;Response.End()&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;
    Thats it!
&lt;/p&gt;
&lt;p&gt;
    Hope it would help anybody who need to develop similar functionality!&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="text-decoration:underline;"&gt;&lt;b&gt;UPDATE&lt;/b&gt;&lt;/span&gt;: &lt;/p&gt;
&lt;p&gt;incase, if anybody needs code in C#:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span class="Apple-style-span" style="border-collapse:separate;color:#000000;font-family:Verdana;font-size:13px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;orphans:2;text-indent:0px;text-transform:none;white-space:normal;widows:2;word-spacing:0px;"&gt;
&lt;pre class="csharpcode" style="font-size:small;color:black;font-family:Consolas,&amp;#39;Courier New&amp;#39;,Courier,monospace;background-color:#ffffff;"&gt;&lt;span class="rem" style="color:#008000;"&gt;//create the report document&lt;/span&gt;&lt;br /&gt;ReportDocument doc = &lt;span class="kwrd" style="color:#0000ff;"&gt;new&lt;/span&gt; ReportDocument();&lt;br /&gt;&lt;span class="kwrd" style="color:#0000ff;"&gt;string&lt;/span&gt; fileName = Server.MapPath(&lt;span class="str" style="color:#006080;"&gt;&amp;quot;~/DesktopModules/OnlineForm/OnlineForm.rpt&amp;quot;&lt;/span&gt;);&lt;br /&gt;&lt;span class="rem" style="color:#008000;"&gt;//load the rpt file to document&lt;/span&gt;&lt;br /&gt;doc.Load(fileName);&lt;br /&gt;&lt;br /&gt;&lt;span class="rem" style="color:#008000;"&gt;//pass the user inputs to crystal report parameters those will sit in the output pdf file&lt;/span&gt;&lt;br /&gt;doc.SetParameterValue(&lt;span class="str" style="color:#006080;"&gt;&amp;quot;@CompanyName&amp;quot;&lt;/span&gt;, txtCompany.Text.Trim());&lt;br /&gt;doc.SetParameterValue(&lt;span class="str" style="color:#006080;"&gt;&amp;quot;@CustomerName&amp;quot;&lt;/span&gt;, txtFirstName.Text.Trim() + &lt;span class="str" style="color:#006080;"&gt;&amp;quot; &amp;quot;&lt;/span&gt; + txtLastName.Text.Trim());&lt;br /&gt;doc.SetParameterValue(&lt;span class="str" style="color:#006080;"&gt;&amp;quot;@Address&amp;quot;&lt;/span&gt;, txtAddress.Text.Trim());&lt;br /&gt;doc.SetParameterValue(&lt;span class="str" style="color:#006080;"&gt;&amp;quot;@City&amp;quot;&lt;/span&gt;, txtCity.Text.Trim());&lt;br /&gt;doc.SetParameterValue(&lt;span class="str" style="color:#006080;"&gt;&amp;quot;@Province&amp;quot;&lt;/span&gt;, txtProvince.Text.Trim());&lt;br /&gt;doc.SetParameterValue(&lt;span class="str" style="color:#006080;"&gt;&amp;quot;@PostalCode&amp;quot;&lt;/span&gt;, txtPostalCode.Text.Trim());&lt;br /&gt;doc.SetParameterValue(&lt;span class="str" style="color:#006080;"&gt;&amp;quot;@Phone1&amp;quot;&lt;/span&gt;, txtPhone11.Text.Trim() + &lt;span class="str" style="color:#006080;"&gt;&amp;quot; - &amp;quot;&lt;/span&gt; + txtPhone12.Text.Trim() + &lt;span class="str" style="color:#006080;"&gt;&amp;quot; - &amp;quot;&lt;/span&gt; + txtPhone13.Text.Trim());&lt;br /&gt;doc.SetParameterValue(&lt;span class="str" style="color:#006080;"&gt;&amp;quot;@Phone2&amp;quot;&lt;/span&gt;, txtPhone21.Text.Trim() + &lt;span class="str" style="color:#006080;"&gt;&amp;quot; - &amp;quot;&lt;/span&gt; + txtPhone22.Text.Trim() + &lt;span class="str" style="color:#006080;"&gt;&amp;quot; - &amp;quot;&lt;/span&gt; + txtPhone23.Text.Trim());&lt;br /&gt;doc.SetParameterValue(&lt;span class="str" style="color:#006080;"&gt;&amp;quot;@Phone3&amp;quot;&lt;/span&gt;, txtPhone31.Text.Trim() + &lt;span class="str" style="color:#006080;"&gt;&amp;quot; - &amp;quot;&lt;/span&gt; + txtPhone32.Text.Trim() + &lt;span class="str" style="color:#006080;"&gt;&amp;quot; - &amp;quot;&lt;/span&gt; + txtPhone33.Text.Trim());&lt;br /&gt;&lt;br /&gt;&lt;span class="rem" style="color:#008000;"&gt;//set the export options to PDF&lt;/span&gt;&lt;br /&gt;ExportOptions exportOpts = doc.ExportOptions;&lt;br /&gt;exportOpts.ExportFormatType = ExportFormatType.PortableDocFormat;&lt;br /&gt;exportOpts.ExportDestinationType = ExportDestinationType.DiskFile;&lt;br /&gt;exportOpts.DestinationOptions = &lt;span class="kwrd" style="color:#0000ff;"&gt;new&lt;/span&gt; DiskFileDestinationOptions();&lt;br /&gt;&lt;br /&gt;&lt;span class="rem" style="color:#008000;"&gt;// Set the disk file options.&lt;/span&gt;&lt;br /&gt;DiskFileDestinationOptions diskOpts = &lt;span class="kwrd" style="color:#0000ff;"&gt;new&lt;/span&gt; DiskFileDestinationOptions();&lt;br /&gt;((DiskFileDestinationOptions)doc.ExportOptions.DestinationOptions).DiskFileName = Server.MapPath(&lt;span class="str" style="color:#006080;"&gt;&amp;quot;~/DesktopModules/OnlineForm/OnlineForm.pdf&amp;quot;&lt;/span&gt;);&lt;br /&gt;&lt;span class="rem" style="color:#008000;"&gt;//export the report to PDF rather than displaying the report in a viewer&lt;/span&gt;&lt;br /&gt;doc.Export();&lt;br /&gt;&lt;br /&gt;&lt;span class="rem" style="color:#008000;"&gt;//force download dialog to download the PDF file at user end.&lt;/span&gt;&lt;br /&gt;&lt;span class="rem" style="color:#008000;"&gt;//Set the appropriate ContentType.&lt;/span&gt;&lt;br /&gt;Response.ContentType = &lt;span class="str" style="color:#006080;"&gt;&amp;quot;Application/pdf&amp;quot;&lt;/span&gt;;&lt;br /&gt;&lt;span class="rem" style="color:#008000;"&gt;//Get the physical path to the file.&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd" style="color:#0000ff;"&gt;string&lt;/span&gt; FilePath = Server.MapPath(&lt;span class="str" style="color:#006080;"&gt;&amp;quot;~/DesktopModules/OnlineForm/OnlineForm.pdf&amp;quot;&lt;/span&gt;);&lt;br /&gt;&lt;span class="rem" style="color:#008000;"&gt;//Write the file directly to the HTTP content output stream.&lt;/span&gt;&lt;br /&gt;Response.WriteFile(FilePath);&lt;br /&gt;Response.End();&lt;/pre&gt;
&lt;/span&gt;&lt;/p&gt;&lt;img src="http://dotnetslackers.com/Community/aggbug.aspx?PostID=31419" width="1" height="1"&gt;</description><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/c_2300_/default.aspx">c#</category><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/export+crystal+report+to+PDF+document/default.aspx">export crystal report to PDF document</category><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/generate+PDF+files+in+asp.net/default.aspx">generate PDF files in asp.net</category><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/Crystal+Report/default.aspx">Crystal Report</category><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/PDF+file/default.aspx">PDF file</category><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/PDF+files+on-the-fly/default.aspx">PDF files on-the-fly</category><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/force+download+dialog/default.aspx">force download dialog</category><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/dynamically+create+PDF+file/default.aspx">dynamically create PDF file</category><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/Create+PDF+files+in+asp.net/default.aspx">Create PDF files in asp.net</category></item><item><title>Core ASP.NET Card, Get it Free</title><link>http://dotnetslackers.com/Community/blogs/kaushalparik/archive/2009/05/01/core-asp-net-card-get-it-free.aspx</link><pubDate>Fri, 01 May 2009 11:08:00 GMT</pubDate><guid isPermaLink="false">6afe0437-14b4-41d5-bc66-6d54a24dbd48:31396</guid><dc:creator>kaushalparik</dc:creator><slash:comments>16</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://dotnetslackers.com/Community/blogs/kaushalparik/rsscomments.aspx?PostID=31396</wfw:commentRss><comments>http://dotnetslackers.com/Community/blogs/kaushalparik/archive/2009/05/01/core-asp-net-card-get-it-free.aspx#comments</comments><description>&lt;p&gt;&lt;a target="_blank" title="Core ASP.NET Card" href="http://refcardz.dzone.com/refcardz/core-aspnet?oid=hom8751"&gt;&lt;img alt="Core ASP.NET Card" src="http://refcardz.dzone.com/sites/all/files/refcardz/thumbs/8751.png" width="103" height="133" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Core ASP.NET&lt;/b&gt;: This Refcard summarizes the most commonly used core functions and controls in ASP.NET&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" title="Core ASP.NET Card" href="http://refcardz.dzone.com/refcardz/core-aspnet?oid=hom8751"&gt;Try it&lt;/a&gt;! Its free but requires registration.&lt;/p&gt;&lt;img src="http://dotnetslackers.com/Community/aggbug.aspx?PostID=31396" width="1" height="1"&gt;</description><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/Kaushal/default.aspx">Kaushal</category><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/KaushalParik/default.aspx">KaushalParik</category><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/kaushalparik27/default.aspx">kaushalparik27</category><category domain="http://dotnetslackers.com/Community/blogs/kaushalparik/archive/tags/Core+ASP.NET+Card/default.aspx">Core ASP.NET Card</category></item></channel></rss>