Archive for March, 2011
Using iMacro for Performance Testing
Posted by allenkwc in .net, SharePoint, Windows Server on March 29, 2011
http://wiki.imacros.net/Sample_Code
Stopwatch is useful for counting the duration of the steps.
jQuery UI Dialog with AJAX Content
<script type="text/javascript"> $(function () { $('<div>').dialog({ modal: true, open: function () { $(this).load('Sample.htm'); }, height: 400, width: 400, title: 'Dynamically Loaded Page' }); }); </script>
Writing a Custom Membership Provider for the Login Control in ASP.NET 2.0
1. Create a Class inheriting MembershipProvider
using System; using System.Collections.Generic; using System.Web; using System.Web.Security; using System.Data; using System.Data.Common; namespace myHelper { public class As400MembershipProvider : MembershipProvider { public override bool ValidateUser(string username, string password) { Boolean isAuthenicated = false; //Validate logic here return isAuthenicated ; } } }
2. Install the MembershipProvider in web.config
Ref:
http://www.15seconds.com/issue/050216.htm
Microsoft Guide Line:
Implementing a Membership Provider
Implementing a Role Provider
Crystal Reports 13 JavaScript Error in Visual Studio
First, locate “crv.js” file in “C:\Windows\Microsoft.NET\Framework\v4.0.30319\ASP.NETClientFiles\crystalreportviewers13\js\crviewer”, then search for this code block at the bottom of the file
if(typeof(Sys)!=='undefined') { Sys.Application.notifyScriptLoaded(); }
And replace it with this code block
if(typeof(Sys.Application)!=='undefined') { Sys.Application.notifyScriptLoaded(); }
After changed this code, everything works fine now and reports shows in ASP.NET pages.
http://www.emadmokhtar.com/CrystalReports13JavaScriptError.aspx
Crystal Reports for Visual Studio 2010 Production Release Now Available
Posted by allenkwc in .net, Business Objects on March 15, 2011
Using RequiredFieldValidator to Validate User Control
1. Add [ValidationProperty] tag to define the value to be validated
[ValidationProperty("Location")] public partial class LocationInputUserControl : System.Web.UI.UserControl { public string Location { get { return LocationTextBox.Text.Trim().ToUpper(); } } }
2. the ControlToValidate=”” property of validation control on the page should be the ID of the user control, colon(:), then the ID of the control to which ‘value’ is associated.
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" ControlToValidate="LocationInputUserControl1:LocationTextBox" runat="server" ErrorMessage="<%$ Resources:ErrorMessage, PleaseEnterLocation %>" Text="*" CssClass="errMessage"></asp:RequiredFieldValidator>
Executes a shell command synchronously
/// <summary> /// Executes a shell command synchronously. /// </summary> /// <param name="command">string command</param> /// <returns>string, as output of the command.</returns> public void ExecuteCommandSync(string command) { try { // create the ProcessStartInfo using "cmd" as the program to be run, // and "/c " as the parameters. // Incidentally, /c tells cmd that we want it to execute the command that follows, // and then exit. string cmdPath = System.IO.Path.Combine(Environment.SystemDirectory, "cmd.exe"); System.Diagnostics.ProcessStartInfo procStartInfo = new System.Diagnostics.ProcessStartInfo(cmdPath, "/c" + command); Console.WriteLine("Executing Command: " + command); // The following commands are needed to redirect the standard output. // This means that it will be redirected to the Process.StandardOutput StreamReader. procStartInfo.RedirectStandardOutput = true; procStartInfo.UseShellExecute = false; // Do not create the black window. procStartInfo.CreateNoWindow = true; // Now we create a process, assign its ProcessStartInfo and start it System.Diagnostics.Process proc = new System.Diagnostics.Process(); proc.StartInfo = procStartInfo; proc.Start(); // Get the output into a string string result = proc.StandardOutput.ReadToEnd(); // Display the command output. Console.WriteLine(result); } catch (Exception objException) { // Log the exception Console.WriteLine(objException.Message); } }
WerFault.exe Causing 100% CPU Loading
Posted by allenkwc in Windows Server on March 10, 2011
To disable the Windows Error Reporting Service (WerSvc) using control
panel:
1. Open control panel.
2. Select “System & Maintenance”
3. Select “Administrative Tools”
4. Select “Services”
5. Right-Click “Windows Error Reporting Service”
6. Select “Properties”
7. In the “Service Status” Section Click [Stop]
8. Set “Startup type:” to “Manual” or if this is started by another
application select “Disabled”
9. Save and close the dialog boxes.
CPU utilisation returned to normal immediately.
Using Web Services with a Site Protected by Forms Authentication
1. Start Visual Studio, and create a Windows Application project.
2. Add a button and text box to Form1.
3. Change the text box properties so that Multiline is True and Scrollbars is Vertical.
4. Resize the text box to fill the form under the button.
5. Add a Web reference to the Authentication Web service in the site that is protected by forms authentication; the Authentication Web service can be found in the path http://siteCollectionName/_vti_bin/authentication.asmx. Name this Web reference fbaAuth.
6. Add a second Web reference to the Lists Web service; it can be found in the path http://siteCollectionName/_vti_bin/lists.asmx. Name this Web reference fbaLists.
7. On the form, double-click Button1 to switch to code view and create an event handler for the click event. Create two variables for the Web service proxies, as shown in the following code.
fbaAuth.Authentication auth = new fbaAuth.Authentication(); fbaLists.Lists lists = new fbaLists.Lists();
8. Create a CookieContainer collection object for the Authentication class proxy; the authentication cookie will be stored in this container after calling the Login method.
9. Call the Login method, and check the result from that call, as shown in the following code.
auth.CookieContainer = new System.Net.CookieContainer(); auth.AllowAutoRedirect = true; fbaAuth.LoginResult lr = auth.Login("myUserName", "myUserPassword"); if (lr.ErrorCode == fbaAuth.LoginErrorCode.NoError) { //Now we can talk to the Lists Web service. }
If the Login method succeeds, the proxy for the Authentication Web service has a valid authentication cookie in its CookieContainer collection. To reuse this cookie, just set the CookieContainer property for the Lists Web service proxy equal to the CookieContainer property of the Authentication Web service proxy. You can then make calls to the Lists Web service, and the authentication cookie will be used to authenticate and authorize the request. That means that when you make a Web service request, the cookie with authenticate and authorize the request based on the permissions of whatever account was used to create the authentication cookie.
Following is the remainder of the code sample.
if (lr.ErrorCode == fbaAuth.LoginErrorCode.NoError) { // Now we can talk to the Lists Web service. lists.CookieContainer = auth.CookieContainer; XmlNode xData = lists.GetListCollection(); }
Ref: http://msdn.microsoft.com/en-us/library/bb975135(v=office.12).aspx#MOSSFBAPart2_UsingWebServices
Paging in ListView
1. Place the DataPager OUTSIDE the ListView
* Define PagedControlID to the ListView and the PageSize
<asp:DataPager ID="DataPager1" PagedControlID="ResultListView" PageSize="10" runat="server" OnPreRender="DataPager1_PreRender"> <Fields> <asp:NextPreviousPagerField FirstPageText="<<" ShowFirstPageButton="True" ShowNextPageButton="False" ShowPreviousPageButton="False" /> <asp:NumericPagerField /> <asp:NextPreviousPagerField LastPageText=">>" ShowLastPageButton="True" ShowNextPageButton="False" ShowPreviousPageButton="False" /> </Fields> </asp:DataPager>
2. Load the Data and Save it in ViewState, e.g.
ResultListView.DataSource = ResultDataSet; ResultListView.DataBind(); ViewState["ResultSet"] = ResultDataSet;
3. Get the result set from the ViewState, and Bind again
* This make the Pager works!!!
protected void DataPager1_PreRender(object sender, EventArgs e) { ResultListView.DataSource = ViewState["ResultSet"]; ResultListView.DataBind(); }