<?xml version="1.0" encoding="utf-8"?>
<feed xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xml:lang="en-us" xmlns="http://www.w3.org/2005/Atom">
  <title>Ghazi Sarhan's Blog</title>
  <link rel="alternate" type="text/html" href="http://blog.delmonbay.com/" />
  <link rel="self" href="http://blog.delmonbay.com/SyndicationService.asmx/GetAtom" />
  <icon>favicon.ico</icon>
  <updated>2008-01-17T12:11:32.359375-06:00</updated>
  <author>
    <name>Ghazi Sarhan</name>
  </author>
  <subtitle>Can't Get Enough</subtitle>
  <id>http://blog.delmonbay.com/</id>
  <generator uri="http://www.dasblog.net" version="2.0.7180.0">DasBlog</generator>
  <entry>
    <title>Load WebUserControl at runtime and maintain its ViewState</title>
    <link rel="alternate" type="text/html" href="http://blog.delmonbay.com/2008/01/17/LoadWebUserControlAtRuntimeAndMaintainItsViewState.aspx" />
    <id>http://blog.delmonbay.com/PermaLink,guid,11fdb780-7db9-4a37-8851-a288bc45f5c9.aspx</id>
    <published>2008-01-17T07:16:50.515-06:00</published>
    <updated>2008-01-17T12:11:32.359375-06:00</updated>
    <category term="ASP.NET" label="ASP.NET" scheme="http://blog.delmonbay.com/CategoryView,category,ASP.NET.aspx" />
    <category term="C#" label="C#" scheme="http://blog.delmonbay.com/CategoryView,category,C%23.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Loading WebUserControls `.ascx` files at runtime gives you the ability to create a
dynamic page, the ability to create a page that accept plugins.
</p>
        <p>
The problem is when you load WebUserControl at runtime, any postback caused by the
page or the control itself will cause the control to disappear, here is a simple way
explaining how to load these controls and maintaining them after postback.
</p>
        <p>
First create two WebUserControls as shown below:
</p>
        <p>
          <img src="http://blog.delmonbay.com/content/binary/Control1.jpg" border="0" />
        </p>
        <p>
          <img src="http://blog.delmonbay.com/content/binary/Control2.jpg" border="0" />
        </p>
        <p>
 
</p>
        <p>
In the Save Button's code behind for both controls, write the following code:
</p>
        <pre>
          <font size="2">
            <p>
            </p>
          </font>
          <font color="#0000ff" size="2">protected</font>
          <font size="2">
          </font>
          <font color="#0000ff" size="2">void</font>
          <font size="2"> butSave_Click(</font>
          <font color="#0000ff" size="2">object</font>
          <font size="2"> sender, </font>
          <font color="#2b91af" size="2">EventArgs</font>
          <font size="2"> e)
<p>
{
</p><p>
   Label1.Text = TextBox1.Text;
</p><p>
}
</p></font>
        </pre>
        <p>
Then create an `aspx` page with three Buttons and a Panel on the page as shown
below:
</p>
        <p>
          <img src="http://blog.delmonbay.com/content/binary/Page1.jpg" border="0" />
        </p>
        <p>
 
</p>
        <p>
Write the following code in page's code behind:
</p>
        <pre>
          <font size="2">
            <p>
            </p>
          </font>
          <font color="#0000ff" size="2">protected</font>
          <font size="2">
          </font>
          <font color="#0000ff" size="2">void</font>
          <font size="2"> Page_Load(</font>
          <font color="#0000ff" size="2">object</font>
          <font size="2"> sender, </font>
          <font color="#2b91af" size="2">EventArgs</font>
          <font size="2"> e)
<p>
{
</p><p></p></font>
          <font color="#0000ff" size="2">   if</font>
          <font size="2"> (ViewState[</font>
          <font color="#a31515" size="2">"myControl"</font>
          <font size="2">]
!= </font>
          <font color="#0000ff" size="2">null</font>
          <font size="2"> &amp;&amp; ((</font>
          <font color="#0000ff" size="2">string</font>
          <font size="2">)ViewState[</font>
          <font color="#a31515" size="2">"myControl"</font>
          <font size="2">])
!= </font>
          <font color="#0000ff" size="2">string</font>
          <font size="2">.Empty)
<p>
   {
</p><p></p></font>
          <font color="#2b91af" size="2">      UserControl</font>
          <font size="2"> uc
= LoadControl(ViewState[</font>
          <font color="#a31515" size="2">"myControl"</font>
          <font size="2">]
+ </font>
          <font color="#a31515" size="2">".ascx"</font>
          <font size="2">) </font>
          <font color="#0000ff" size="2">as</font>
          <font size="2">
          </font>
          <font color="#2b91af" size="2">UserControl</font>
          <font size="2">;
<p>
      uc.ID = ((
</p></font>
          <font color="#0000ff" size="2">string</font>
          <font size="2">)ViewState[</font>
          <font color="#a31515" size="2">"myControl"</font>
          <font size="2">]);
<p></p></font>
          <font color="#008000" size="2">      // Do
not clear Panel1's controls in `Page_Load` using `Panel1.Controls.Clear()`</font>
          <p>
            <font color="#008000" size="2">      // in some cases
the control's viewstate will be lost.
</font>
          </p>
          <font size="2">
            <p>
      Panel1.Controls.Add(uc);
</p>
            <p>
   }
</p>
            <p>
}
</p>
            <p>
 
</p>
            <p>
            </p>
          </font>
          <font color="#0000ff" size="2">protected</font>
          <font size="2">
          </font>
          <font color="#0000ff" size="2">void</font>
          <font size="2"> butLoadControl1_Click(</font>
          <font color="#0000ff" size="2">object</font>
          <font size="2"> sender, </font>
          <font color="#2b91af" size="2">EventArgs</font>
          <font size="2"> e)
<p>
{
</p><p>
   ViewState[
</p></font>
          <font color="#a31515" size="2">"myControl"</font>
          <font size="2">] = </font>
          <font color="#a31515" size="2">"WebUserControl1"</font>
          <font size="2">;
<p></p></font>
          <font color="#2b91af" size="2">   UserControl</font>
          <font size="2"> uc
= LoadControl(</font>
          <font color="#a31515" size="2">"WebUserControl1.ascx"</font>
          <font size="2">) </font>
          <font color="#0000ff" size="2">as</font>
          <font size="2">
          </font>
          <font color="#2b91af" size="2">UserControl</font>
          <font size="2">;
<p>
   uc.ID = 
</p></font>
          <font color="#a31515" size="2">"WebUserControl1"</font>
          <font size="2">;
<p>
   Panel1.Controls.Clear();
</p><p>
   Panel1.Controls.Add(uc);
</p><p>
}
</p><p>
 
</p><p></p></font>
          <font color="#0000ff" size="2">protected</font>
          <font size="2">
          </font>
          <font color="#0000ff" size="2">void</font>
          <font size="2"> butLoadControl2_Click(</font>
          <font color="#0000ff" size="2">object</font>
          <font size="2"> sender, </font>
          <font color="#2b91af" size="2">EventArgs</font>
          <font size="2"> e)
<p>
{
</p><p>
   ViewState[
</p></font>
          <font color="#a31515" size="2">"myControl"</font>
          <font size="2">] = </font>
          <font color="#a31515" size="2">"WebUserControl2"</font>
          <font size="2">;
<p></p></font>
          <font color="#2b91af" size="2">   UserControl</font>
          <font size="2"> uc
= LoadControl(</font>
          <font color="#a31515" size="2">"WebUserControl2.ascx"</font>
          <font size="2">) </font>
          <font color="#0000ff" size="2">as</font>
          <font size="2">
          </font>
          <font color="#2b91af" size="2">UserControl</font>
          <font size="2">;
<p>
   uc.ID = 
</p></font>
          <font color="#a31515" size="2">"WebUserControl2"</font>
          <font size="2">;
<p>
   Panel1.Controls.Clear();
</p><p>
   Panel1.Controls.Add(uc);
</p><p>
}
</p><p>
 
</p><p>
 
</p></font>
        </pre>
        <p>
Run the code, and test it your self.
</p>
        <p>
 
</p>
        <p>
To download a sample project click the below link:
</p>
        <a href="http://blog.delmonbay.com/content/binary/LoadDynamicWebUserControl.zip">LoadDynamicWebUserControl.zip
(3.23 KB)</a>
        <img width="0" height="0" src="http://blog.delmonbay.com/aggbug.ashx?id=11fdb780-7db9-4a37-8851-a288bc45f5c9" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Take Your ASP.NET 2.0 App Offline</title>
    <link rel="alternate" type="text/html" href="http://blog.delmonbay.com/2008/01/17/TakeYourASPNET20AppOffline.aspx" />
    <id>http://blog.delmonbay.com/PermaLink,guid,a30f9d04-aaea-4501-8053-580b1aa74623.aspx</id>
    <published>2008-01-16T19:18:28.828125-06:00</published>
    <updated>2008-01-16T19:18:28.828125-06:00</updated>
    <category term="ASP.NET" label="ASP.NET" scheme="http://blog.delmonbay.com/CategoryView,category,ASP.NET.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
I just found a few minutes ago, that you can take an ASP.NET 2.0 application offline
temporarily by uploading a file called App_Offline.htm.  It will spin down the
appdomain and redirect all requests to that page.
</p>
        <img width="0" height="0" src="http://blog.delmonbay.com/aggbug.ashx?id=a30f9d04-aaea-4501-8053-580b1aa74623" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Enable Ping Reply (ICMP-EchoReply) for Speedtouch 510/530</title>
    <link rel="alternate" type="text/html" href="http://blog.delmonbay.com/2007/12/25/EnablePingReplyICMPEchoReplyForSpeedtouch510530.aspx" />
    <id>http://blog.delmonbay.com/PermaLink,guid,e62922d3-0053-4217-a60a-78a64fa22fe5.aspx</id>
    <published>2007-12-24T18:17:25.109-06:00</published>
    <updated>2008-01-16T04:51:25.046875-06:00</updated>
    <category term="Modems/Routers" label="Modems/Routers" scheme="http://blog.delmonbay.com/CategoryView,category,Modems%2fRouters.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Some people disable the Speedtouch's firewall just to enable the icmp-echoreply, which
is not correct, here is how to enable the icmp-echoreply on Speedtouch.
</p>
        <p>
First login to the Speedtouch's CLI using telnet, the default ip of the speedtouch
is 10.0.0.138.
</p>
        <p>
          <img src="http://blog.delmonbay.com/content/binary/telnet.jpg" border="0" />
        </p>
        <p>
 
</p>
        <p>
By default the speedtouch comes without username and password, just press Enter
on the username prompt, or type your username and password.
</p>
        <p>
On the speedtouch command prompt, copy and past the following:
</p>
        <p>
          <font color="#0000ff">:firewall chain create chain=input<br />
:firewall chain create chain=sink<br />
:firewall chain create chain=source<br />
:firewall chain create chain=output</font>
        </p>
        <p>
 
</p>
        <p>
          <img src="http://blog.delmonbay.com/content/binary/createchain.jpg" border="0" />
        </p>
        <p>
 
</p>
        <p>
Then... the following:
</p>
        <p>
          <font color="#0000ff">:firewall assign hook=input chain=input<br />
:firewall assign hook=sink chain=sink<br />
:firewall assign hook=source chain=source<br />
:firewall assign hook=output chain=output</font>
        </p>
        <p>
 
</p>
        <p>
          <img src="http://blog.delmonbay.com/content/binary/assignchain.jpg" border="0" />
        </p>
        <p>
 
</p>
        <p>
Then... the following:
</p>
        <p>
          <font color="#0000ff">:firewall rule create chain=input index=0 dstintfgrp=wan prot=icmp
icmptype=echo-request action=accept<br />
:firewall rule create chain=sink index=0 dstintfgrp=wan prot=icmp icmptype=echo-request
action=accept<br />
:firewall rule create chain=source index=0 dstintfgrp=wan prot=icmp icmptype=echo-reply
action=accept<br />
:firewall rule create chain=output index=0 dstintfgrp=wan prot=icmp icmptype=echo-reply
action=accept</font>
        </p>
        <p>
Finally:
</p>
        <p>
          <font color="#0000ff">Saveall</font>
        </p>
        <p>
 
</p>
        <p>
          <img src="http://blog.delmonbay.com/content/binary/createrule.jpg" border="0" />
        </p>
        <p>
 
</p>
        <p>
Now ping your wan ip from <a href="http://network-tools.com/">http://network-tools.com/</a></p>
        <p>
 
</p>
        <p>
If you want to know more about speedtouch firewall, check these sites:
</p>
        <p>
          <a href="http://www.speedtouch.nl/docs/AppNotes/AppNote_Firewalling.pdf">http://www.speedtouch.nl/docs/AppNotes/AppNote_Firewalling.pdf</a>
        </p>
        <p>
          <a href="http://www.fredshack.com/docs/alcatel.html">http://www.fredshack.com/docs/alcatel.html</a>
        </p>
        <img width="0" height="0" src="http://blog.delmonbay.com/aggbug.ashx?id=e62922d3-0053-4217-a60a-78a64fa22fe5" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Add an unsupported assembly to Sql Server</title>
    <link rel="alternate" type="text/html" href="http://blog.delmonbay.com/2007/12/22/AddAnUnsupportedAssemblyToSqlServer.aspx" />
    <id>http://blog.delmonbay.com/PermaLink,guid,3193e866-c6a4-4738-b902-e2b7a48b94c4.aspx</id>
    <published>2007-12-21T22:58:45.843-06:00</published>
    <updated>2007-12-22T09:42:04.296875-06:00</updated>
    <category term="C#" label="C#" scheme="http://blog.delmonbay.com/CategoryView,category,C%23.aspx" />
    <category term="SQL Server" label="SQL Server" scheme="http://blog.delmonbay.com/CategoryView,category,SQL%2BServer.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
I needed to create a CLR function to generate a report and uses <a href="http://zedgraph.org/">ZedGraph</a> to
make a graph and save it on the disk.
</p>
        <p>
I used VS 2005 to make the CLR function, but when try to add a reference to the
project, all I see is few of the .Net assemblies, and there is no `Browse` button
to add assemblies from the disk.
</p>
        <p>
          <img src="http://blog.delmonbay.com/content/binary/AddReference1.jpg" border="0" />
        </p>
        <p>
 
</p>
        <p>
I did some google as usual and found this on Sql Server's Book Online:
</p>
        <p>
          <strong>Unsupported Libraries</strong>
        </p>
        <p>
Unsupported libraries can still be called from your managed stored procedures, triggers,
user-defined functions, user-defined types, and user-defined aggregates. The unsupported
library must first be registered in the SQL Server database, using the CREATE ASSEMBLY
statement, before it can be used in your code. Any unsupported library that is registered
and run on the server should be reviewed and tested for security and reliability.
</p>
        <p>
And that solved the problem...
</p>
        <p>
First, I'm not sure what Permission_Set ZedGrpah needs, so I'm going to mark the database
as TrustWorthy so I can give the assembly an unsafe Permission_Set.
</p>
        <font color="#0000ff" size="2">
          <p>
Use
</p>
        </font>
        <font color="#000000" size="2">
        </font>
        <font color="#0000ff" size="2">Master
</font>
        <font size="2">
          <p>
Go
</p>
        </font>
        <font color="#0000ff" size="2">
          <p>
Alter
</p>
        </font>
        <font color="#000000" size="2">
        </font>
        <font color="#0000ff" size="2">Database</font>
        <font color="#000000" size="2"> Test </font>
        <font color="#0000ff" size="2">Set</font>
        <font color="#000000" size="2">
        </font>
        <font color="#0000ff" size="2">TrustWorthy</font>
        <font color="#000000" size="2">
        </font>
        <font color="#0000ff" size="2">On
</font>
        <font size="2">
          <p>
Go
</p>
        </font>
        <font color="#0000ff" size="2">
          <p>
Use
</p>
        </font>
        <font size="2">
          <font color="#000000"> Test</font>
          <p>
Go
</p>
        </font>
        <p>
Then when I added the ZedGraph I got an error message:
</p>
        <font color="#0000ff" size="2">
          <p>
Create
</p>
        </font>
        <font color="#000000" size="2">
        </font>
        <font color="#0000ff" size="2">Assembly</font>
        <font size="2">
          <font color="#000000"> [ZedGraph]</font>
        </font>
        <font color="#0000ff" size="2">
          <p>
From
</p>
        </font>
        <font color="#000000" size="2">
        </font>
        <font color="#ff0000" size="2">'C:\ZedGraph\ZedGraph.dll'
</font>
        <font color="#0000ff" size="2">
          <p>
With
</p>
        </font>
        <font color="#000000" size="2">
        </font>
        <font color="#0000ff" size="2">Permission_Set</font>
        <font color="#808080" size="2">=</font>
        <font color="#0000ff" size="2">Unsafe
</font>
        <font size="2">
          <p>
 
</p>
          <font size="1">
            <p>
              <font color="#ff0000">Msg 10301, Level 16, State 1, Line 1</font>
            </p>
            <p>
              <font color="#ff0000">Assembly 'ZedGraph' references assembly 'system.windows.forms,
version=2.0.0.0, culture=neutral, publickeytoken=b77a5c561934e089.', which is not
present in the current database. SQL Server attempted to locate and automatically
load the referenced assembly from the same location where referring assembly came
from, but that operation has failed (reason: 2(The system cannot find the file specified.)).
Please load the referenced assembly into the current database and retry your request.</font>
            </p>
          </font>
          <p>
So I did as it says, I added the System.Windows.Forms first
</p>
          <font color="#0000ff" size="2">
            <p>
Create
</p>
          </font>
          <font color="#000000" size="2">
          </font>
          <font color="#0000ff" size="2">Assembly</font>
          <font size="2">
            <font color="#000000"> [System.Windows.Forms]</font>
          </font>
          <font color="#0000ff" size="2">
            <p>
From
</p>
          </font>
          <font color="#000000" size="2">
          </font>
          <font color="#ff0000" size="2">'C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.Windows.Forms.dll'
</font>
          <font color="#0000ff" size="2">
            <p>
With
</p>
          </font>
          <font color="#000000" size="2">
          </font>
          <font color="#0000ff" size="2">Permission_Set</font>
          <font color="#808080" size="2">=</font>
          <font color="#0000ff" size="2">Unsafe</font>
        </font>
        <p>
 
</p>
        <p>
I noticed on the object explorer that the System.Windows.Forms was added with its
refereces
</p>
        <p>
          <img src="http://blog.delmonbay.com/content/binary/ObjectExplorer1.jpg" border="0" />
        </p>
        <p>
 
</p>
        <p>
Now add the ZedGraph
</p>
        <font color="#0000ff" size="2">
          <p>
Create
</p>
        </font>
        <font color="#000000" size="2">
        </font>
        <font color="#0000ff" size="2">Assembly</font>
        <font size="2">
          <font color="#000000"> [ZedGraph]</font>
        </font>
        <font color="#0000ff" size="2">
          <p>
From
</p>
        </font>
        <font color="#000000" size="2">
        </font>
        <font color="#ff0000" size="2">'C:\ZedGraph\ZedGraph.dll'
</font>
        <font color="#0000ff" size="2">
          <p>
With
</p>
        </font>
        <font color="#000000" size="2">
        </font>
        <font color="#0000ff" size="2">Permission_Set</font>
        <font color="#808080" size="2">=</font>
        <font color="#0000ff" size="2">Unsafe</font>
        <p>
 
</p>
        <p>
Now back to VS 2005
</p>
        <p>
 
</p>
        <p>
          <img src="http://blog.delmonbay.com/content/binary/AddReference2.jpg" border="0" />
        </p>
        <p>
 
</p>
        <p>
And everything goes well.
</p>
        <p>
 
</p>
        <p>
          <font color="#ff0000">Important: Always add the unsupported assemblies from a query
window, using CREATE ASSEMBLY command, do not add them using the Object Explorer,
I tried it and it always gives error.</font>
        </p>
        <p>
 
</p>
        <img width="0" height="0" src="http://blog.delmonbay.com/aggbug.ashx?id=3193e866-c6a4-4738-b902-e2b7a48b94c4" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Finding the current trust level in ASP.NET </title>
    <link rel="alternate" type="text/html" href="http://blog.delmonbay.com/2007/12/22/FindingTheCurrentTrustLevelInASPNET.aspx" />
    <id>http://blog.delmonbay.com/PermaLink,guid,47b54953-eac8-47af-a7b3-dc21b4605753.aspx</id>
    <published>2007-12-21T22:07:36.171-06:00</published>
    <updated>2007-12-21T22:08:24.6875-06:00</updated>
    <category term="ASP.NET" label="ASP.NET" scheme="http://blog.delmonbay.com/CategoryView,category,ASP.NET.aspx" />
    <category term="C#" label="C#" scheme="http://blog.delmonbay.com/CategoryView,category,C%23.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
I found a great post on <a href="http://blogs.msdn.com/dmitryr/archive/2007/01/23/finding-out-the-current-trust-level-in-asp-net.aspx">dmitryr's
blog</a> on how to find the current trust level for your ASP.NET application,
it is practical if you are hosting your site on a hosting company as the hosting company
can set the trust level for your application in their machine.config file, and set
it un-overridable.
</p>
        <p>
Here is how to check the trust level:
</p>
        <p>
Create an aspx page and place a Label:
</p>
        <font size="2">
          <p>
&lt;%
</p>
        </font>
        <font color="#0000ff" size="2">@</font>
        <font size="2">
        </font>
        <font color="#a31515" size="2">Page</font>
        <font size="2">
        </font>
        <font color="#ff0000" size="2">Language</font>
        <font color="#0000ff" size="2">="C#"</font>
        <font size="2">
        </font>
        <font color="#ff0000" size="2">AutoEventWireup</font>
        <font color="#0000ff" size="2">="true"</font>
        <font size="2">
        </font>
        <font color="#ff0000" size="2">CodeFile</font>
        <font color="#0000ff" size="2">="CheckTrustLevel.aspx.cs"</font>
        <font size="2">
        </font>
        <font color="#ff0000" size="2">Inherits</font>
        <font color="#0000ff" size="2">="CheckTrustLevel"</font>
        <font size="2"> %&gt;
</font>
        <font color="#0000ff" size="2">
          <p>
&lt;!
</p>
        </font>
        <font color="#a31515" size="2">DOCTYPE</font>
        <font color="#000000" size="2">
        </font>
        <font color="#ff0000" size="2">html</font>
        <font color="#000000" size="2">
        </font>
        <font color="#ff0000" size="2">PUBLIC</font>
        <font color="#000000" size="2">
        </font>
        <font color="#0000ff" size="2">"-//W3C//DTD
XHTML 1.0 Transitional//EN"</font>
        <font color="#000000" size="2">
        </font>
        <font color="#0000ff" size="2">"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
<p>
&lt;
</p></font>
        <font color="#a31515" size="2">html</font>
        <font color="#000000" size="2">
        </font>
        <font color="#ff0000" size="2">xmlns</font>
        <font color="#0000ff" size="2">="http://www.w3.org/1999/xhtml"</font>
        <font color="#000000" size="2">
        </font>
        <font color="#0000ff" size="2">&gt;
<p>
&lt;
</p></font>
        <font color="#a31515" size="2">head</font>
        <font color="#000000" size="2">
        </font>
        <font color="#ff0000" size="2">runat</font>
        <font color="#0000ff" size="2">="server"&gt;
</font>
        <font size="2">
          <p>
          </p>
        </font>
        <font color="#0000ff" size="2">&lt;</font>
        <font color="#a31515" size="2">title</font>
        <font color="#0000ff" size="2">&gt;</font>
        <font size="2">Untitled
Page</font>
        <font color="#0000ff" size="2">&lt;/</font>
        <font color="#a31515" size="2">title</font>
        <font color="#0000ff" size="2">&gt;
<p>
&lt;/
</p></font>
        <font color="#a31515" size="2">head</font>
        <font color="#0000ff" size="2">&gt;
<p>
&lt;
</p></font>
        <font color="#a31515" size="2">body</font>
        <font color="#0000ff" size="2">&gt;
</font>
        <font size="2">
          <p>
          </p>
        </font>
        <font color="#0000ff" size="2">&lt;</font>
        <font color="#a31515" size="2">form</font>
        <font size="2">
        </font>
        <font color="#ff0000" size="2">id</font>
        <font color="#0000ff" size="2">="form1"</font>
        <font size="2">
        </font>
        <font color="#ff0000" size="2">runat</font>
        <font color="#0000ff" size="2">="server"&gt;
</font>
        <font size="2">
          <p>
          </p>
        </font>
        <font color="#0000ff" size="2">&lt;</font>
        <font color="#a31515" size="2">div</font>
        <font color="#0000ff" size="2">&gt;
</font>
        <font size="2">
          <p>
          </p>
        </font>
        <font color="#0000ff" size="2">&lt;</font>
        <font color="#a31515" size="2">asp</font>
        <font color="#0000ff" size="2">:</font>
        <font color="#a31515" size="2">Label</font>
        <font size="2">
        </font>
        <font color="#ff0000" size="2">ID</font>
        <font color="#0000ff" size="2">="Label1"</font>
        <font size="2">
        </font>
        <font color="#ff0000" size="2">runat</font>
        <font color="#0000ff" size="2">="server"</font>
        <font size="2">
        </font>
        <font color="#ff0000" size="2">Text</font>
        <font color="#0000ff" size="2">="Label"&gt;&lt;/</font>
        <font color="#a31515" size="2">asp</font>
        <font color="#0000ff" size="2">:</font>
        <font color="#a31515" size="2">Label</font>
        <font color="#0000ff" size="2">&gt;
</font>
        <font size="2">
          <p>
          </p>
        </font>
        <font color="#0000ff" size="2">&lt;/</font>
        <font color="#a31515" size="2">div</font>
        <font color="#0000ff" size="2">&gt;
</font>
        <font size="2">
          <p>
          </p>
        </font>
        <font color="#0000ff" size="2">&lt;/</font>
        <font color="#a31515" size="2">form</font>
        <font color="#0000ff" size="2">&gt;
<p>
&lt;/
</p></font>
        <font color="#a31515" size="2">body</font>
        <font color="#0000ff" size="2">&gt;
<p>
&lt;/
</p></font>
        <font color="#a31515" size="2">html</font>
        <font color="#0000ff" size="2">&gt;</font>
        <p>
 
</p>
        <p>
 
</p>
        <p>
 
</p>
        <p>
In code behind... 
</p>
        <p>
 
</p>
        <font color="#0000ff" size="2">
          <p>
using
</p>
        </font>
        <font size="2">
          <font color="#000000"> System;</font>
        </font>
        <font color="#0000ff" size="2">
          <p>
using
</p>
        </font>
        <font size="2">
          <font color="#000000"> System.Data;</font>
        </font>
        <font color="#0000ff" size="2">
          <p>
using
</p>
        </font>
        <font size="2">
          <font color="#000000"> System.Configuration;</font>
        </font>
        <font color="#0000ff" size="2">
          <p>
using
</p>
        </font>
        <font size="2">
          <font color="#000000"> System.Collections;</font>
        </font>
        <font color="#0000ff" size="2">
          <p>
using
</p>
        </font>
        <font size="2">
          <font color="#000000"> System.Web;</font>
        </font>
        <font color="#0000ff" size="2">
          <p>
using
</p>
        </font>
        <font size="2">
          <font color="#000000"> System.Web.Security;</font>
        </font>
        <font color="#0000ff" size="2">
          <p>
using
</p>
        </font>
        <font size="2">
          <font color="#000000"> System.Web.UI;</font>
        </font>
        <font color="#0000ff" size="2">
          <p>
using
</p>
        </font>
        <font size="2">
          <font color="#000000"> System.Web.UI.WebControls;</font>
        </font>
        <font color="#0000ff" size="2">
          <p>
using
</p>
        </font>
        <font size="2">
          <font color="#000000"> System.Web.UI.WebControls.WebParts;</font>
        </font>
        <font color="#0000ff" size="2">
          <p>
using
</p>
        </font>
        <font size="2">
          <font color="#000000"> System.Web.UI.HtmlControls;</font>
        </font>
        <font color="#0000ff" size="2">
          <p>
public
</p>
        </font>
        <font color="#000000" size="2">
        </font>
        <font color="#0000ff" size="2">partial</font>
        <font color="#000000" size="2">
        </font>
        <font color="#0000ff" size="2">class</font>
        <font color="#000000" size="2">
        </font>
        <font color="#2b91af" size="2">CheckTrustLevel</font>
        <font color="#000000" size="2"> :
System.Web.UI.</font>
        <font color="#2b91af" size="2">Page
</font>
        <font size="2">
          <p>
{
</p>
          <p>
          </p>
        </font>
        <font color="#0000ff" size="2">protected</font>
        <font size="2">
        </font>
        <font color="#0000ff" size="2">void</font>
        <font size="2"> Page_Load(</font>
        <font color="#0000ff" size="2">object</font>
        <font size="2"> sender, </font>
        <font color="#2b91af" size="2">EventArgs</font>
        <font size="2"> e)
<p>
{
</p><p>
Label1.Text = GetCurrentTrustLevel().ToString();
</p><p>
}
</p><p></p></font>
        <font color="#2b91af" size="2">AspNetHostingPermissionLevel</font>
        <font size="2"> GetCurrentTrustLevel()
<p>
{
</p><p></p></font>
        <font color="#0000ff" size="2">foreach</font>
        <font size="2"> (</font>
        <font color="#2b91af" size="2">AspNetHostingPermissionLevel</font>
        <font size="2"> trustLevel </font>
        <font color="#0000ff" size="2">in
</font>
        <font size="2">
          <p>
          </p>
        </font>
        <font color="#0000ff" size="2">new</font>
        <font size="2">
        </font>
        <font color="#2b91af" size="2">AspNetHostingPermissionLevel</font>
        <font size="2">[]
{
<p></p></font>
        <font color="#2b91af" size="2">AspNetHostingPermissionLevel</font>
        <font size="2">.Unrestricted,
<p></p></font>
        <font color="#2b91af" size="2">AspNetHostingPermissionLevel</font>
        <font size="2">.High,
<p></p></font>
        <font color="#2b91af" size="2">AspNetHostingPermissionLevel</font>
        <font size="2">.Medium,
<p></p></font>
        <font color="#2b91af" size="2">AspNetHostingPermissionLevel</font>
        <font size="2">.Low,
<p></p></font>
        <font color="#2b91af" size="2">AspNetHostingPermissionLevel</font>
        <font size="2">.Minimal 
<p>
})
</p><p>
{
</p><p></p></font>
        <font color="#0000ff" size="2">try
</font>
        <font size="2">
          <p>
{
</p>
          <p>
          </p>
        </font>
        <font color="#0000ff" size="2">new</font>
        <font size="2">
        </font>
        <font color="#2b91af" size="2">AspNetHostingPermission</font>
        <font size="2">(trustLevel).Demand();
<p>
}
</p><p></p></font>
        <font color="#0000ff" size="2">catch</font>
        <font size="2"> (System.Security.</font>
        <font color="#2b91af" size="2">SecurityException</font>
        <font size="2">)
<p>
{
</p><p></p></font>
        <font color="#0000ff" size="2">continue</font>
        <font size="2">;
<p>
}
</p><p></p></font>
        <font color="#0000ff" size="2">return</font>
        <font size="2"> trustLevel;
<p>
}
</p><p></p></font>
        <font color="#0000ff" size="2">return</font>
        <font size="2">
        </font>
        <font color="#2b91af" size="2">AspNetHostingPermissionLevel</font>
        <font size="2">.None;
<p>
}
</p><p>
}
</p></font>
        <p>
 
</p>
        <p>
 
</p>
        <p>
Run the page and it will tell you what trust level your application has.
</p>
        <img width="0" height="0" src="http://blog.delmonbay.com/aggbug.ashx?id=47b54953-eac8-47af-a7b3-dc21b4605753" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Using HttpWebRequest with Cookies for Form Authentication</title>
    <link rel="alternate" type="text/html" href="http://blog.delmonbay.com/2007/12/20/UsingHttpWebRequestWithCookiesForFormAuthentication.aspx" />
    <id>http://blog.delmonbay.com/PermaLink,guid,c542d35f-569d-4b81-8942-64792fbed26d.aspx</id>
    <published>2007-12-20T09:24:22.468-06:00</published>
    <updated>2007-12-21T20:20:26.296875-06:00</updated>
    <category term="ASP.NET" label="ASP.NET" scheme="http://blog.delmonbay.com/CategoryView,category,ASP.NET.aspx" />
    <category term="C#" label="C#" scheme="http://blog.delmonbay.com/CategoryView,category,C%23.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
I use a website provided by the mobile phone company to send SMS messages, and charge
it to my mobile phone, good to send bulk messages to friends and family.
</p>
        <p>
I thought about using an automated method to send SMS to make it easier, I asked
the mobile phone company if they provide something like a WebAPI or SMPP, but they
don't.
</p>
        <p>
So... I thought about using their form, and here come the greate HttpWebRequest
and HttpWebResponse.
</p>
        <p>
 
</p>
        <p>
First I opened the login page... opened the page source, search for all form fields,
login id, password and hidden fields.
</p>
        <p>
Then I opened the Send SMS page... and did the same.
</p>
        <p>
Now writing a test page:
</p>
        <font size="2">
          <p>
          </p>
        </font>
        <font color="#0000ff" size="2">protected</font>
        <font size="2">
        </font>
        <font color="#0000ff" size="2">void</font>
        <font size="2"> Page_Load(</font>
        <font color="#0000ff" size="2">object</font>
        <font size="2"> sender, </font>
        <font color="#2b91af" size="2">EventArgs</font>
        <font size="2"> e)
<p>
{
</p><p></p></font>
        <font color="#008000" size="2">// Login Page
</font>
        <font size="2">
          <p>
          </p>
        </font>
        <font color="#2b91af" size="2">Uri</font>
        <font size="2"> uri = </font>
        <font color="#0000ff" size="2">new</font>
        <font size="2">
        </font>
        <font color="#2b91af" size="2">Uri</font>
        <font size="2">(</font>
        <font color="#a31515" size="2">"http://WebSite/index.php"</font>
        <font size="2">);
<p></p></font>
        <font color="#008000" size="2">// Login Form Fields
</font>
        <font size="2">
          <p>
          </p>
        </font>
        <font color="#0000ff" size="2">string</font>
        <font size="2"> data = </font>
        <font color="#a31515" size="2">"mo=login"</font>
        <font size="2">;
<p>
data += 
</p></font>
        <font color="#a31515" size="2">"&amp;passwd=password"</font>
        <font size="2">;
<p>
data += 
</p></font>
        <font color="#a31515" size="2">"&amp;login=1"</font>
        <font size="2">;
<p></p></font>
        <font color="#008000" size="2">// Create a new instance of the CookieContainer
</font>
        <font size="2">
          <p>
          </p>
        </font>
        <font color="#2b91af" size="2">CookieContainer</font>
        <font size="2"> cookieContainer
= </font>
        <font color="#0000ff" size="2">new</font>
        <font size="2">
        </font>
        <font color="#2b91af" size="2">CookieContainer</font>
        <font size="2">();
<p></p></font>
        <font color="#0000ff" size="2">if</font>
        <font size="2"> (uri.Scheme == </font>
        <font color="#2b91af" size="2">Uri</font>
        <font size="2">.UriSchemeHttp)
<p>
{
</p><p></p></font>
        <font color="#008000" size="2">// Create an instance of HttpWebRequest
</font>
        <font size="2">
          <p>
          </p>
        </font>
        <font color="#2b91af" size="2">HttpWebRequest</font>
        <font size="2"> request
= </font>
        <font color="#2b91af" size="2">HttpWebRequest</font>
        <font size="2">.Create(uri) </font>
        <font color="#0000ff" size="2">as</font>
        <font size="2">
        </font>
        <font color="#2b91af" size="2">HttpWebRequest</font>
        <font size="2">;
<p></p></font>
        <font color="#008000" size="2">// Preserve Cookies that have login information
</font>
        <font size="2">
          <p>
request.CookieContainer = cookieContainer;
</p>
          <p>
          </p>
        </font>
        <font color="#008000" size="2">// Method = Post
</font>
        <font size="2">
          <p>
request.Method = 
</p>
        </font>
        <font color="#2b91af" size="2">WebRequestMethods</font>
        <font size="2">.</font>
        <font color="#2b91af" size="2">Http</font>
        <font size="2">.Post;
<p></p></font>
        <font color="#008000" size="2">// Data Length &amp; Content Type
</font>
        <font size="2">
          <p>
request.ContentLength = data.Length;
</p>
          <p>
request.ContentType = 
</p>
        </font>
        <font color="#a31515" size="2">"application/x-www-form-urlencoded"</font>
        <font size="2">;
<p></p></font>
        <font color="#008000" size="2">// Write Data to stream, this will send
data to the website but will not fill the CookieContainer
</font>
        <font size="2">
          <p>
          </p>
        </font>
        <font color="#2b91af" size="2">StreamWriter</font>
        <font size="2"> writer
= </font>
        <font color="#0000ff" size="2">new</font>
        <font size="2">
        </font>
        <font color="#2b91af" size="2">StreamWriter</font>
        <font size="2">(request.GetRequestStream());
<p>
writer.Write(data);
</p><p>
writer.Close();
</p><p></p></font>
        <font color="#008000" size="2">// Get Response from website to fill the
CookieContainer
</font>
        <font size="2">
          <p>
request.GetResponse();
</p>
          <p>
}
</p>
          <p>
 
</p>
          <p>
 
</p>
          <p>
          </p>
        </font>
        <font color="#008000" size="2">// Do the same here, and submitting the
preserved cookies
</font>
        <font size="2">
          <p>
uri = 
</p>
        </font>
        <font color="#0000ff" size="2">new</font>
        <font size="2">
        </font>
        <font color="#2b91af" size="2">Uri</font>
        <font size="2">(</font>
        <font color="#a31515" size="2">"http://WebSite/myo/schedulemsg.php"</font>
        <font size="2">);
<p>
data = 
</p></font>
        <font color="#a31515" size="2">"srcMSISDN="</font>
        <font size="2">;
<p>
data += 
</p></font>
        <font color="#a31515" size="2">"&amp;CustomerId="</font>
        <font size="2">;
<p>
data += 
</p></font>
        <font color="#a31515" size="2">"&amp;strRawText1="</font>
        <font size="2">;
<p>
data += 
</p></font>
        <font color="#a31515" size="2">"&amp;pagename=batsms2.php"</font>
        <font size="2">;
<p>
data += 
</p></font>
        <font color="#a31515" size="2">"&amp;smsmode=web2sms"</font>
        <font size="2">;
<p>
data += 
</p></font>
        <font color="#a31515" size="2">"&amp;dstMSISDN="</font>
        <font size="2">;
<p>
data += 
</p></font>
        <font color="#a31515" size="2">"&amp;requestType=WEB2SMS"</font>
        <font size="2">;
<p>
data += 
</p></font>
        <font color="#a31515" size="2">"&amp;source=WEB"</font>
        <font size="2">;
<p>
data += 
</p></font>
        <font color="#a31515" size="2">"&amp;message=Messsgae to send"</font>
        <font size="2">;
<p>
data += 
</p></font>
        <font color="#a31515" size="2">"&amp;characters=1"</font>
        <font size="2">;
<p>
data += 
</p></font>
        <font color="#a31515" size="2">"&amp;coding=0"</font>
        <font size="2">;
<p>
data += 
</p></font>
        <font color="#a31515" size="2">"&amp;when=now"</font>
        <font size="2">;
<p>
data += 
</p></font>
        <font color="#a31515" size="2">"&amp;schdate="</font>
        <font size="2">;
<p>
data += 
</p></font>
        <font color="#a31515" size="2">"&amp;hh=00"</font>
        <font size="2">;
<p>
data += 
</p></font>
        <font color="#a31515" size="2">"&amp;mm=00"</font>
        <font size="2">;
<p>
data += 
</p></font>
        <font color="#a31515" size="2">"&amp;send=Send"</font>
        <font size="2">;
<p></p></font>
        <font color="#0000ff" size="2">if</font>
        <font size="2"> (uri.Scheme == </font>
        <font color="#2b91af" size="2">Uri</font>
        <font size="2">.UriSchemeHttp)
<p>
{
</p><p></p></font>
        <font color="#2b91af" size="2">HttpWebRequest</font>
        <font size="2"> request
= </font>
        <font color="#2b91af" size="2">HttpWebRequest</font>
        <font size="2">.Create(uri) </font>
        <font color="#0000ff" size="2">as</font>
        <font size="2">
        </font>
        <font color="#2b91af" size="2">HttpWebRequest</font>
        <font size="2">;
<p></p></font>
        <font color="#008000" size="2">// Submit preserved cookies
</font>
        <font size="2">
          <p>
request.CookieContainer = cookieContainer;
</p>
          <p>
request.Method = 
</p>
        </font>
        <font color="#2b91af" size="2">WebRequestMethods</font>
        <font size="2">.</font>
        <font color="#2b91af" size="2">Http</font>
        <font size="2">.Post;
<p>
request.ContentLength = data.Length;
</p><p>
request.ContentType = 
</p></font>
        <font color="#a31515" size="2">"application/x-www-form-urlencoded"</font>
        <font size="2">;
<p></p></font>
        <font color="#2b91af" size="2">StreamWriter</font>
        <font size="2"> writer
= </font>
        <font color="#0000ff" size="2">new</font>
        <font size="2">
        </font>
        <font color="#2b91af" size="2">StreamWriter</font>
        <font size="2">(request.GetRequestStream());
<p>
writer.Write(data);
</p><p>
writer.Close();
</p><p></p></font>
        <font color="#008000" size="2">// Create an instance of the response to
check if the message was sent
</font>
        <font size="2">
          <p>
          </p>
        </font>
        <font color="#2b91af" size="2">HttpWebResponse</font>
        <font size="2"> response
= request.GetResponse() </font>
        <font color="#0000ff" size="2">as</font>
        <font size="2">
        </font>
        <font color="#2b91af" size="2">HttpWebResponse</font>
        <font size="2">; 
<p></p></font>
        <font color="#2b91af" size="2">StreamReader</font>
        <font size="2"> reader
= </font>
        <font color="#0000ff" size="2">new</font>
        <font size="2">
        </font>
        <font color="#2b91af" size="2">StreamReader</font>
        <font size="2">(response.GetResponseStream());
<p></p></font>
        <font color="#0000ff" size="2">string</font>
        <font size="2"> tmp = reader.ReadToEnd();
<p>
response.Close();
</p><p></p></font>
        <font color="#0000ff" size="2">if</font>
        <font size="2"> (tmp.IndexOf(</font>
        <font color="#a31515" size="2">"Message
was sent successfully !."</font>
        <font size="2">) &gt; 0)
<p>
Label1.Text = 
</p></font>
        <font color="#a31515" size="2">"Message was sent successfully !."</font>
        <font size="2">;
<p></p></font>
        <font color="#0000ff" size="2">else
</font>
        <font size="2">
          <p>
{
</p>
          <p>
Label1.Text = 
</p>
        </font>
        <font color="#a31515" size="2">"Confirmation Message was not received."</font>
        <font size="2">;
<p>
}
</p><p>
}
</p><p>
}
</p><p>
 
</p></font>
        <p>
It is working :D as expected.
</p>
        <img width="0" height="0" src="http://blog.delmonbay.com/aggbug.ashx?id=c542d35f-569d-4b81-8942-64792fbed26d" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Run a VPN server behind Speedtouch 510/530</title>
    <link rel="alternate" type="text/html" href="http://blog.delmonbay.com/2007/12/19/RunAVPNServerBehindSpeedtouch510530.aspx" />
    <id>http://blog.delmonbay.com/PermaLink,guid,d2253683-8572-403c-af3e-f08337020acb.aspx</id>
    <published>2007-12-19T00:34:29.09375-06:00</published>
    <updated>2007-12-19T00:34:29.09375-06:00</updated>
    <category term="Modems/Routers" label="Modems/Routers" scheme="http://blog.delmonbay.com/CategoryView,category,Modems%2fRouters.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
From the Speedtouch CLI, write:
</p>
        <p>
nat create protocol=tcp inside_addr=<font color="#0000ff">’address of the server PC’</font> inside_port=1723
outside_addr=0 outside_port=1723 foreign_addr=0
</p>
        <p>
nat create protocol=gre inside_addr=<font color="#0000ff">’address of the server PC’</font> outside_addr=0
foreign_addr=0
</p>
        <p>
 
</p>
        <p>
Note that it is required for the server to have a static ip on the
network.
</p>
        <img width="0" height="0" src="http://blog.delmonbay.com/aggbug.ashx?id=d2253683-8572-403c-af3e-f08337020acb" />
      </div>
    </content>
  </entry>
  <entry>
    <title>LoadControl with Parameters</title>
    <link rel="alternate" type="text/html" href="http://blog.delmonbay.com/2007/12/19/LoadControlWithParameters.aspx" />
    <id>http://blog.delmonbay.com/PermaLink,guid,cb993991-dc2a-453f-996d-64dd6e3fb324.aspx</id>
    <published>2007-12-19T00:15:23.39-06:00</published>
    <updated>2007-12-19T17:08:19.875-06:00</updated>
    <category term="ASP.NET" label="ASP.NET" scheme="http://blog.delmonbay.com/CategoryView,category,ASP.NET.aspx" />
    <category term="C#" label="C#" scheme="http://blog.delmonbay.com/CategoryView,category,C%23.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Source: <a href="http://blah.winsmarts.com/2006/05/20/loadcontrol-a-usercontrol--and-pass-in-constructor-parameters.aspx">http://blah.winsmarts.com/2006/05/20/loadcontrol-a-usercontrol--and-pass-in-constructor-parameters.aspx</a><a href="http://geekswithblogs.net/shahed/archive/2006/03/23/73096.aspx"></a></p>
        <p>
 
</p>
        <p>
          <font face="Tahoma" size="2">The inability of LoadControl to accept Constructor Parameters
is a real pain in the donkey. This post tells you how to get around that hella annoying
issue.</font>
        </p>
        <p>
          <font face="Tahoma" size="2">The awesome thing about ServerControls in ASP.NET is
that you can instantiate them via a constructor, and hence offer a programming
model similar to windows forms user controls. Unfortunately, you can't apply the same
concept to UserControls because they are really mini pages within themselves. So you
are limited to calling something like - </font>
        </p>
        <p>
          <font face="Courier New" size="2">
            <strong>LoadControl("WebUserControl.ascx") ;</strong>
          </font>
        </p>
        <p>
          <font face="Tahoma" size="2">Wouldn't it be nice if you could instead do ...</font>
        </p>
        <p>
          <font face="Courier New" size="2">
            <strong>LoadControl("WebUserControl.ascx",constructorparameter1,
constructorparameter2, constructorparameter3 ...) ;</strong>
          </font>
        </p>
        <p>
          <font face="Tahoma" size="2">So say for instance, it would be nice if the following
code would work - </font>
        </p>
        <font size="2">
        </font>
        <p>
          <font face="Courier New">
            <strong>
              <font color="#008080" size="2">Control</font>
              <font size="2"> toAdd
= LoadControl(</font>
              <font color="#800000" size="2">"WebUserControl.ascx"</font>
              <font size="2">,</font>
              <font color="#800000" size="2">"Sahil
Malik"</font>
            </strong>
          </font>
          <font size="2">
            <font face="Courier New">
              <strong>,5) ;<br />
PlaceHolder1.Controls.Add(toAdd) ;</strong>
            </font>
          </font>
        </p>
        <p>
          <font face="Tahoma" size="1">Note: There is a new overload new in .NET 2.0 which takes
the signature LoadControl(Type,object[]), which is very similar to the above. But
it is frequently problematic in ASP.NET 2.0 to refer to a user control in a strongly
typed manner.</font>
        </p>
        <p>
          <font size="2">
            <font face="Tahoma">Well, here is how you'd make it work. </font>
          </font>
        </p>
        <p>
          <font size="2">
            <font face="Tahoma">1. First of all write the user control (Duhh!!).
My user control has a label on it called Label1, and it has the following code-behind.</font>
          </font>
        </p>
        <p>
          <font face="Courier New" size="2">
            <strong>public partial class WebUserControl : System.Web.UI.UserControl<br />
{<br />
    public WebUserControl()<br />
    {<br />
    }</strong>
          </font>
        </p>
        <p>
          <strong>
            <font face="Courier New" size="2">    public WebUserControl(string
labelText, int howManyTimes)<br />
    {<br />
        System.Text.StringBuilder sb = new System.Text.StringBuilder()
;<br />
        for (int i = 1; i &lt;= howManyTimes; i++)<br />
        {<br />
            sb.Append(labelText)
;<br />
            sb.Append("&lt;br&gt;")
;<br />
        }<br />
        Label1.Text = sb.ToString() ;<br />
    }<br />
}</font>
            <br />
          </strong>
        </p>
        <p>
          <font face="Tahoma" size="2">As you can see, I am simply appending the same text over
and over again. </font>
          <font face="Tahoma" size="2">
            <strong>Note</strong> that it
is important to explicitly create a default public constructor (i.e. one without parameters)
or you'd confuse the ASP.NET runtime. </font>
        </p>
        <p>
          <font face="Tahoma" size="2">2. Step #2 is to add the following private method to
your default.aspx, or add it as a protected method to the base class of all your pages,
or a static method that can somehow access your page object. In my case I kept things
simple and added a private method to my default.aspx.</font>
        </p>
        <p>
          <font face="Courier New" size="2">
            <strong>private UserControl LoadControl(string UserControlPath,
params object[] constructorParameters)<br />
{        
<br />
    List&lt;Type&gt; constParamTypes = new List&lt;Type&gt;() ;<br />
    foreach (object constParam in constructorParameters)<br />
    {<br />
        constParamTypes.Add(constParam.GetType())
;<br />
    }</strong>
          </font>
        </p>
        <p>
          <font face="Courier New" size="2">
            <strong>    UserControl ctl = Page.LoadControl(UserControlPath)
as UserControl;</strong>
          </font>
        </p>
        <p>
          <font face="Courier New" size="2">
            <strong>    <font color="#006400">//
Find the relevant constructor</font><br />
    ConstructorInfo constructor = ctl.GetType().BaseType.GetConstructor(constParamTypes.ToArray())
;</strong>
          </font>
        </p>
        <p>
          <font face="Courier New" size="2">
            <strong>    <font color="#006400">//And
then call the relevant constructor</font><br />
    if (constructor == null)<br />
    {<br />
        throw new MemberAccessException("The requested
constructor was not found on : " + ctl.GetType().BaseType.ToString()) ;<br />
    }<br />
    else<br />
    {<br />
        constructor.Invoke(ctl,constructorParameters)
;<br />
    }</strong>
          </font>
        </p>
        <p>
          <font face="Courier New" size="2">
            <strong>    <font color="#006400">//
Finally return the fully initialized UC</font><br />
    return ctl;<br />
}</strong>
          </font>
        </p>
        <p>
          <font face="Tahoma" size="2">3. And finally, add the following to the Page_Load (or
any other suitable place) of your default.aspx - </font>
        </p>
        <p>
          <font face="Courier New" size="2">
            <strong>protected void Page_Load(object sender,
EventArgs e)<br />
{<br />
    Control toAdd = LoadControl("WebUserControl.ascx","Sahil Malik",5)
;<br />
    PlaceHolder1.Controls.Add(toAdd) ;<br />
}</strong>
          </font>
        </p>
        <img width="0" height="0" src="http://blog.delmonbay.com/aggbug.ashx?id=cb993991-dc2a-453f-996d-64dd6e3fb324" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Created DateTime &amp; Modified DateTime Columns</title>
    <link rel="alternate" type="text/html" href="http://blog.delmonbay.com/2007/12/16/CreatedDateTimeModifiedDateTimeColumns.aspx" />
    <id>http://blog.delmonbay.com/PermaLink,guid,7f0a8bec-7e6d-408a-b717-6a5a5795bfe1.aspx</id>
    <published>2007-12-16T13:22:07.312-06:00</published>
    <updated>2007-12-16T13:23:50.171875-06:00</updated>
    <category term="SQL Server" label="SQL Server" scheme="http://blog.delmonbay.com/CategoryView,category,SQL%2BServer.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Sometimes you need to add a CreatedDateTime and ModifiedDateTime columns to your table,
here is an easy way to do it...
</p>
        <p>
First create a test table:
</p>
        <font color="#0000ff" size="2">
          <p>
Create
</p>
        </font>
        <font color="#000000" size="2">
        </font>
        <font color="#0000ff" size="2">Table</font>
        <font size="2">
          <font color="#000000"> Table_1 </font>
        </font>
        <font color="#808080" size="2">
          <p>
(
</p>
        </font>
        <font size="2">
          <p>
ID 
</p>
        </font>
        <font color="#0000ff" size="2">Int</font>
        <font size="2">
        </font>
        <font color="#0000ff" size="2">Primary</font>
        <font size="2">
        </font>
        <font color="#0000ff" size="2">Key</font>
        <font size="2">
        </font>
        <font color="#0000ff" size="2">Identity</font>
        <font color="#808080" size="2">(</font>
        <font size="2">1</font>
        <font color="#808080" size="2">,</font>
        <font size="2"> 1</font>
        <font color="#808080" size="2">),
</font>
        <font size="2">
          <p>
Col1 
</p>
        </font>
        <font color="#0000ff" size="2">Varchar</font>
        <font color="#808080" size="2">(</font>
        <font size="2">50</font>
        <font color="#808080" size="2">),
</font>
        <font size="2">
          <p>
CreatedDateTime 
</p>
        </font>
        <font color="#0000ff" size="2">DateTime</font>
        <font size="2">
        </font>
        <font color="#808080" size="2">Not</font>
        <font size="2">
        </font>
        <font color="#808080" size="2">Null</font>
        <font size="2">
        </font>
        <font color="#0000ff" size="2">Default</font>
        <font size="2">
        </font>
        <font color="#0000ff" size="2">Current_Timestamp</font>
        <font color="#808080" size="2">,
</font>
        <font size="2">
          <p>
ModifiedDateTime 
</p>
        </font>
        <font color="#0000ff" size="2">DateTime</font>
        <font size="2">
        </font>
        <font color="#808080" size="2">Null</font>
        <font size="2">
        </font>
        <font color="#0000ff" size="2">Default</font>
        <font size="2">
        </font>
        <font color="#808080" size="2">Null
<p>
)
</p><p>
 
</p></font>
        <p>
Note that the default value for the column CreatedDateTime is <font color="#0000ff">Current_Timestamp</font>.
</p>
        <p>
To update the ModifiedDateTime column we need this trigger:
</p>
        <font color="#0000ff" size="2">
          <p>
Create
</p>
        </font>
        <font color="#000000" size="2">
        </font>
        <font color="#0000ff" size="2">Trigger</font>
        <font color="#000000" size="2"> Table_1_Update </font>
        <font color="#0000ff" size="2">On</font>
        <font color="#000000" size="2"> Table_1 </font>
        <font color="#0000ff" size="2">After</font>
        <font color="#000000" size="2">
        </font>
        <font color="#0000ff" size="2">Update
<p>
As
</p><p>
Update
</p></font>
        <font color="#000000" size="2"> Table_1 </font>
        <font color="#0000ff" size="2">Set</font>
        <font color="#000000" size="2"> ModifiedDateTime </font>
        <font color="#808080" size="2">=</font>
        <font color="#000000" size="2">
        </font>
        <font color="#ff00ff" size="2">GetDate</font>
        <font color="#808080" size="2">()
</font>
        <font color="#0000ff" size="2">
          <p>
From
</p>
        </font>
        <font color="#000000" size="2"> Table_1 </font>
        <font color="#808080" size="2">Inner</font>
        <font color="#000000" size="2">
        </font>
        <font color="#808080" size="2">Join</font>
        <font size="2">
          <font color="#000000"> Inserted</font>
        </font>
        <font color="#0000ff" size="2">
          <p>
On
</p>
        </font>
        <font color="#000000" size="2"> Table_1</font>
        <font color="#808080" size="2">.</font>
        <font color="#000000" size="2">ID </font>
        <font color="#808080" size="2">=</font>
        <font color="#000000" size="2"> Inserted</font>
        <font color="#808080" size="2">.</font>
        <font size="2">
          <font color="#000000">ID</font>
        </font>
        <p>
          <font size="2">
            <font color="#000000">
            </font>
          </font> 
</p>
        <p>
Now Test:
</p>
        <font color="#0000ff" size="2">
          <p>
Insert
</p>
        </font>
        <font color="#000000" size="2">
        </font>
        <font color="#0000ff" size="2">Into</font>
        <font color="#000000" size="2"> Table_1 </font>
        <font color="#808080" size="2">(</font>
        <font color="#000000" size="2">Col1</font>
        <font color="#808080" size="2">)</font>
        <font color="#000000" size="2">
        </font>
        <font color="#0000ff" size="2">Values</font>
        <font color="#000000" size="2">
        </font>
        <font color="#808080" size="2">(</font>
        <font color="#ff0000" size="2">'Hello'</font>
        <font color="#808080" size="2">);
</font>
        <font color="#0000ff" size="2">
          <p>
Select
</p>
        </font>
        <font color="#000000" size="2">
        </font>
        <font color="#808080" size="2">*</font>
        <font color="#000000" size="2">
        </font>
        <font color="#0000ff" size="2">From</font>
        <font color="#000000" size="2"> Table_1</font>
        <font color="#808080" size="2">;
</font>
        <font color="#0000ff" size="2">
          <p>
Update
</p>
        </font>
        <font color="#000000" size="2"> Table_1 </font>
        <font color="#0000ff" size="2">Set</font>
        <font color="#000000" size="2"> Col1 </font>
        <font color="#808080" size="2">=</font>
        <font color="#000000" size="2">
        </font>
        <font color="#ff0000" size="2">'Hi'</font>
        <font color="#000000" size="2">
        </font>
        <font color="#0000ff" size="2">Where</font>
        <font color="#000000" size="2"> ID </font>
        <font color="#808080" size="2">=</font>
        <font color="#000000" size="2"> 1</font>
        <font color="#808080" size="2">;
</font>
        <font color="#0000ff" size="2">
          <p>
Select
</p>
        </font>
        <font color="#000000" size="2">
        </font>
        <font color="#808080" size="2">*</font>
        <font color="#000000" size="2">
        </font>
        <font color="#0000ff" size="2">From</font>
        <font color="#000000" size="2"> Table_1</font>
        <font color="#808080" size="2">;</font>
        <p>
          <font color="#808080" size="2">
          </font> 
</p>
        <font color="#808080" size="2">
          <font size="1">
            <p>
              <font face="Courier New" color="#000000">ID          Col1                CreatedDateTime         ModifiedDateTime</font>
            </p>
            <p>
              <font face="Courier New" color="#000000">----------- ------------------- -----------------------
-----------------------</font>
            </p>
            <p>
              <font face="Courier New" color="#000000">1          
Hello               2007-12-16
22:18:39.013 NULL</font>
            </p>
            <p>
              <font face="Courier New" color="#000000">
              </font>
              <font face="Courier New" color="#000000"> 
</font>
            </p>
            <p>
              <font face="Courier New" color="#000000">ID          Col1                CreatedDateTime         ModifiedDateTime</font>
            </p>
            <p>
              <font face="Courier New" color="#000000">----------- ------------------- -----------------------
-----------------------</font>
            </p>
            <p>
            </p>
          </font>
          <font face="Courier New" color="#000000">1          
Hi                 
2007-12-16 22:18:39.013 2007-12-16 22:18:39.013</font>
        </font>
        <img width="0" height="0" src="http://blog.delmonbay.com/aggbug.ashx?id=7f0a8bec-7e6d-408a-b717-6a5a5795bfe1" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Disable/Re-enable Trigger</title>
    <link rel="alternate" type="text/html" href="http://blog.delmonbay.com/2007/12/16/DisableReenableTrigger.aspx" />
    <id>http://blog.delmonbay.com/PermaLink,guid,15ab4a04-a867-4236-bf99-893038f5e0b5.aspx</id>
    <published>2007-12-16T12:43:18.421875-06:00</published>
    <updated>2007-12-16T12:43:18.421875-06:00</updated>
    <category term="SQL Server" label="SQL Server" scheme="http://blog.delmonbay.com/CategoryView,category,SQL%2BServer.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Sometimes you need to temporary disable a trigger, without dropping it, the following
commands do this...
</p>
        <p>
To disable a trigger:
</p>
        <font color="#0000ff" size="2">
          <p>
Disable
</p>
        </font>
        <font color="#000000" size="2">
        </font>
        <font color="#0000ff" size="2">Trigger</font>
        <font color="#000000" size="2"> Table_1_Trigger </font>
        <font color="#0000ff" size="2">On</font>
        <font size="2">
          <font color="#000000"> Table_1</font>
        </font>
        <p>
          <font size="2">
            <font color="#000000">Or</font>
          </font>
        </p>
        <font size="2">
          <font color="#0000ff" size="2">
            <p>
Alter
</p>
          </font>
          <font color="#000000" size="2">
          </font>
          <font color="#0000ff" size="2">Table</font>
          <font color="#000000" size="2"> Table_1 </font>
          <font color="#0000ff" size="2">Disable</font>
          <font color="#000000" size="2">
          </font>
          <font color="#0000ff" size="2">Trigger</font>
          <font size="2">
            <font color="#000000"> Table_1_Trigger</font>
          </font>
          <p>
            <font size="2">
              <font color="#000000">
              </font>
            </font> 
</p>
          <p>
            <font size="2">
              <font color="#000000">To Re-enable it:</font>
            </font>
          </p>
          <font size="2">
            <font color="#0000ff" size="2">
              <p>
Enable
</p>
            </font>
            <font color="#000000" size="2">
            </font>
            <font color="#0000ff" size="2">Trigger</font>
            <font color="#000000" size="2"> Table_1_Trigger </font>
            <font color="#0000ff" size="2">On</font>
            <font size="2">
              <font color="#000000"> Table_1</font>
            </font>
            <p>
              <font color="#000000">Or</font>
            </p>
            <font size="2">
              <font color="#0000ff" size="2">
                <p>
Alter
</p>
              </font>
              <font color="#000000" size="2">
              </font>
              <font color="#0000ff" size="2">Table</font>
              <font color="#000000" size="2"> Table_1 </font>
              <font color="#0000ff" size="2">Enable</font>
              <font color="#000000" size="2">
              </font>
              <font color="#0000ff" size="2">Trigger</font>
              <font size="2">
                <font color="#000000"> Table_1_Trigger</font>
              </font>
            </font>
          </font>
        </font>
        <img width="0" height="0" src="http://blog.delmonbay.com/aggbug.ashx?id=15ab4a04-a867-4236-bf99-893038f5e0b5" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Asynchronous Trigger</title>
    <link rel="alternate" type="text/html" href="http://blog.delmonbay.com/2007/12/16/AsynchronousTrigger.aspx" />
    <id>http://blog.delmonbay.com/PermaLink,guid,1dda3d1c-c7fe-4602-ab49-f936633fc15f.aspx</id>
    <published>2007-12-16T11:01:14.403-06:00</published>
    <updated>2007-12-16T11:15:48.758-06:00</updated>
    <category term="SQL Server" label="SQL Server" scheme="http://blog.delmonbay.com/CategoryView,category,SQL%2BServer.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <font color="#000000">
            <span>I developed a small application for my office, in this
application I used a trigger to read data from a web service, then update the table
after the record is inserted.</span>
          </font>
        </p>
        <p>
          <font color="#000000">
            <span>
              <span>Everything was working fine, except... the web service
sometimes takes time to come with the result, what keeps the user waits for a long
time before he gets a confirmation that the record was saved.</span>
            </span>
          </font>
        </p>
        <p>
          <font color="#000000">
            <span>I thought about an asynchronous trigger, I did some google,
and found that asynchronous triggers can be done with Sql Server's Service Broker,
l<span>ittle bit from here and there, I built the following as a template for my asynchronous
triggers:</span></span>
          </font>
        </p>
        <p>
          <font color="#000000">
            <span>
              <span>
              </span>
            </span>
          </font> 
</p>
        <font color="#000000">
          <span>
            <span>
              <font color="#0000ff">
                <p>
USE
</p>
              </font>
              <font color="#0000ff">master</font>
              <p>
GO 
</p>
              <font color="#008000">
                <p>
-- Check if database exists and drop it 
</p>
              </font>
              <font color="#0000ff">
                <p>
IF
</p>
              </font>
              <font color="#808080">EXISTS(</font>
              <font color="#0000ff">SELECT</font>
              <font color="#808080">*</font>
              <font color="#0000ff">FROM</font>
              <font color="#008000">sys.databases</font>
              <font color="#0000ff">where</font>
              <font color="#0000ff">name</font>
              <font color="#808080">=</font>
              <font color="#ff0000">'AsyncTrigger'</font>
              <font color="#808080">)</font>
              <p>
                <font color="#0000ff">DROP</font>
                <font color="#0000ff">DATABASE</font> AsyncTrigger 
</p>
              <p>
GO 
</p>
              <font color="#008000">
                <p>
-- Create the database 
</p>
              </font>
              <font color="#0000ff">
                <p>
CREATE
</p>
              </font>
              <font color="#0000ff">DATABASE</font> AsyncTrigger 
<p>
GO 
</p><font color="#008000"><p>
-- Enable Service Broker 
</p></font><font color="#0000ff"><p>
ALTER
</p></font><font color="#0000ff">DATABASE</font> AsyncTrigger 
<font color="#0000ff"><p>
SET
</p></font><font color="#0000ff">ENABLE_BROKER</font><p>
GO 
</p><font color="#0000ff"><p>
USE
</p></font> AsyncTrigger 
<p>
GO 
</p><font color="#008000"><p>
-- Create our test table 
</p></font><font color="#0000ff"><p>
CREATE
</p></font><font color="#0000ff">TABLE</font> Table_1<font color="#808080">(</font><p>
[id] [int] <font color="#0000ff">PRIMARY</font><font color="#0000ff">KEY</font><font color="#0000ff">IDENTITY</font><font color="#808080">(</font>1<font color="#808080">,</font>1<font color="#808080">)</font><font color="#808080">NOT</font><font color="#808080">NULL,</font></p><p><font color="#808080"></font>[Col1] [int] <font color="#808080">NOT</font><font color="#808080">NULL,</font></p><p>
[Col2] [int] <font color="#808080">NOT</font><font color="#808080">NULL,</font></p><p><font color="#808080"></font>[Sum] [int] <font color="#808080">NULL)</font></p><p>
GO 
</p><font color="#008000"><p>
-- This procedure will run asynchronously and execute our task 
</p></font><font color="#0000ff"><p>
CREATE
</p></font><font color="#0000ff">PROCEDURE</font> usp_Processor 
<font color="#0000ff"><p>
AS
</p></font><font color="#0000ff"><p>
BEGIN
</p></font><font color="#0000ff"><p>
SET
</p></font><font color="#0000ff">NOCOUNT</font><font color="#0000ff">ON</font><font color="#808080">;</font><font color="#0000ff"><p>
DECLARE
</p></font> @Handle <font color="#0000ff">UNIQUEIDENTIFIER</font><font color="#808080">;</font><font color="#0000ff"><p>
DECLARE
</p></font> @MessageType <font color="#0000ff">SYSNAME</font><font color="#808080">;</font><font color="#0000ff"><p>
DECLARE
</p></font> @Message <font color="#0000ff">XML</font><font color="#808080">;</font><font color="#0000ff"><p>
RECEIVE
</p></font><font color="#0000ff">TOP</font><font color="#808080">(</font>1<font color="#808080">)</font><p>
@Handle <font color="#808080">=</font><font color="#0000ff">conversation_handle</font><font color="#808080">,</font></p><p><font color="#808080"></font>@MessageType <font color="#808080">=</font> message_type_name<font color="#808080">,</font></p><p>
@Message <font color="#808080">=</font> message_body 
</p><font color="#0000ff"><p>
FROM
</p></font> [MyQ]<font color="#808080">;</font><font color="#0000ff"><p>
IF
</p></font><font color="#808080">(</font>@Handle <font color="#808080">IS</font><font color="#808080">NOT</font><font color="#808080">NULL</font><font color="#808080">AND</font> @Message <font color="#808080">IS</font><font color="#808080">NOT</font><font color="#808080">NULL)</font><font color="#0000ff"><p>
BEGIN
</p></font><font color="#0000ff"><p>
DECLARE
</p></font> @tmpT <font color="#0000ff">Table</font><font color="#808080">(</font>id <font color="#0000ff">int</font><font color="#808080">,</font> Col1 <font color="#0000ff">int</font><font color="#808080">,</font> Col2 <font color="#0000ff">int</font><font color="#808080">,</font> [Sum] <font color="#0000ff">int</font><font color="#808080">);</font><font color="#0000ff"><p>
insert
</p></font><font color="#0000ff">into</font> @tmpT <font color="#0000ff">SELECT</font><p>
Table1<font color="#808080">.</font>Column1<font color="#808080">.</font>value<font color="#808080">(</font><font color="#ff0000">'@ID'</font><font color="#808080">,</font><font color="#ff0000">'INT'</font><font color="#808080">)</font><font color="#0000ff">as</font> id<font color="#808080">,</font></p></span>
          </span>
        </font>
        <font color="#000000">
          <span>
            <span>
              <p>
Table1<font color="#808080">.</font>Column1<font color="#808080">.</font>value<font color="#808080">(</font><font color="#ff0000">'@Col1'</font><font color="#808080">,</font><font color="#ff0000">'INT'</font><font color="#808080">)</font><font color="#0000ff">as</font> col1<font color="#808080">,</font></p>
              <p>
                <font color="#808080">
                </font>Table1<font color="#808080">.</font>Column1<font color="#808080">.</font>value<font color="#808080">(</font><font color="#ff0000">'@Col2'</font><font color="#808080">,</font><font color="#ff0000">'INT'</font><font color="#808080">)</font><font color="#0000ff">as</font> col2<font color="#808080">,</font></p>
              <p>
Table1<font color="#808080">.</font>Column1<font color="#808080">.</font>value<font color="#808080">(</font><font color="#ff0000">'@Sum'</font><font color="#808080">,</font><font color="#ff0000">'INT'</font><font color="#808080">)</font><font color="#0000ff">as</font> [sum] 
</p>
              <font color="#0000ff">
                <p>
FROM
</p>
              </font> @Message<font color="#808080">.</font>nodes<font color="#808080">(</font><font color="#ff0000">'/row'</font><font color="#808080">)</font><font color="#0000ff">AS</font> Table1<font color="#808080">(</font>Column1<font color="#808080">)</font><font color="#0000ff"><p>
Update
</p></font> Table_1 <font color="#0000ff">set</font> [Sum] <font color="#808080">=</font> tmpT<font color="#808080">.</font>Col1 <font color="#808080">+</font> tmpT<font color="#808080">.</font>Col2 
<font color="#0000ff"><p>
from
</p></font> @tmpT <font color="#0000ff">as</font> tmpT <font color="#808080">Inner</font><font color="#808080">Join</font> Table_1 <font color="#0000ff">as</font> T 
<font color="#0000ff"><p>
on
</p></font> tmpT<font color="#808080">.</font>id <font color="#808080">=</font> T<font color="#808080">.</font>id<font color="#808080">;</font><font color="#0000ff"><p>
END
</p></font><font color="#008000">-- End If 
</font><font color="#0000ff"><p>
END
</p></font><font color="#008000">-- End Procedure usp_Processor 
</font><p>
GO 
</p><font color="#008000"><p>
-- Create Message Type 
</p></font><font color="#0000ff"><p>
CREATE
</p></font><font color="#0000ff">MESSAGE</font><font color="#0000ff">TYPE</font> [MyMessage]
VALIDATION <font color="#808080">=</font><font color="#0000ff">WELL_FORMED_XML</font><font color="#808080">;</font><p>
GO 
</p><font color="#008000"><p>
-- Create Contract 
</p></font><font color="#0000ff"><p>
CREATE
</p></font><font color="#0000ff">CONTRACT</font> [MyContract] <font color="#808080">(</font>[MyMessage]
SENT <font color="#0000ff">BY</font><font color="#808080">ANY);</font><p>
GO 
</p><font color="#008000"><p>
-- Create Queue 
</p></font><font color="#0000ff"><p>
CREATE
</p></font><font color="#0000ff">QUEUE</font> [MyQ] <font color="#0000ff">WITH</font> ACTIVATION 
<font color="#808080"><p>
(
</p></font><font color="#0000ff">STATUS</font><font color="#808080">=</font><font color="#0000ff">ON</font><font color="#808080">,</font> MAX_QUEUE_READERS <font color="#808080">=</font> 1<font color="#808080">,</font><p>
PROCEDURE_NAME <font color="#808080">=</font> usp_Processor<font color="#808080">,</font></p><font color="#0000ff"><p>
EXECUTE
</p></font><font color="#0000ff">AS</font><font color="#0000ff">OWNER</font><font color="#808080">);</font><p>
GO 
</p><font color="#008000"><p>
-- Create Service 
</p></font><font color="#0000ff"><p>
CREATE
</p></font><font color="#0000ff">SERVICE</font> [MyService] <font color="#0000ff">ON</font><font color="#0000ff">QUEUE</font> [MyQ] <font color="#808080">(</font>[MyContract]<font color="#808080">);</font><p>
GO 
</p><font color="#008000"><p>
-- This trigger will send our message to the queue 
</p></font><font color="#0000ff"><p>
CREATE
</p></font><font color="#0000ff">TRIGGER</font> Table_1_Insert <font color="#0000ff">ON</font> Table_1 <font color="#0000ff">AFTER</font><font color="#0000ff">INSERT</font><font color="#0000ff"><p>
AS
</p></font><font color="#0000ff"><p>
BEGIN
</p></font><font color="#0000ff"><p>
SET
</p></font><font color="#0000ff">NOCOUNT</font><font color="#0000ff">ON</font><font color="#808080">;</font><font color="#0000ff"><p>
DECLARE
</p></font> @MessageBody <font color="#0000ff">XML</font><font color="#808080">;</font><font color="#0000ff"><p>
set
</p></font> @MessageBody <font color="#808080">=</font><font color="#808080">(</font><font color="#0000ff">SELECT</font> ID<font color="#808080">,</font> Col1<font color="#808080">,</font> Col2<font color="#808080">,</font> [Sum] <font color="#0000ff">FROM</font> Inserted <font color="#0000ff">FOR</font><font color="#0000ff">XML</font><font color="#0000ff">RAW</font><font color="#808080">,</font><font color="#0000ff">TYPE</font><font color="#808080">);</font><font color="#0000ff"><p>
DECLARE
</p></font> @Handle <font color="#0000ff">UNIQUEIDENTIFIER</font><font color="#808080">;</font><font color="#0000ff"><p>
BEGIN
</p></font><font color="#0000ff">DIALOG</font><font color="#0000ff">CONVERSATION</font> @Handle 
<font color="#0000ff"><p>
FROM
</p></font><font color="#0000ff">SERVICE</font> [MyService] 
<font color="#0000ff"><p>
TO
</p></font><font color="#0000ff">SERVICE</font><font color="#ff0000">'MyService'</font><font color="#0000ff"><p>
ON
</p></font><font color="#0000ff">CONTRACT</font> [MyContract] 
<font color="#0000ff"><p>
WITH
</p></font><font color="#0000ff">ENCRYPTION</font><font color="#808080">=</font><font color="#0000ff">OFF</font><font color="#808080">;</font><font color="#0000ff"><p>
SEND
</p></font><font color="#0000ff">ON</font><font color="#0000ff">CONVERSATION</font> @Handle 
<font color="#0000ff"><p>
MESSAGE
</p></font><font color="#0000ff">TYPE</font> [MyMessage]<font color="#808080">(</font>@MessageBody<font color="#808080">);</font><font color="#0000ff"><p>
END
</p></font><p>
GO
</p><p>
 
</p><p>
Now execute the following: 
</p><p>
 
</p><font color="#0000ff"><p>
Insert
</p></font><font color="#0000ff">Into</font> Table_1 <font color="#808080">(</font>Col1<font color="#808080">,</font> Col2<font color="#808080">)</font><font color="#0000ff">Values</font><font color="#808080">(</font>34<font color="#808080">,</font> 78<font color="#808080">)</font><font color="#0000ff"><p>
Select
</p></font><font color="#808080">*</font><font color="#0000ff">From</font> Table_1 
<font color="#0000ff"><p>
Waitfor
</p></font><font color="#0000ff">Delay</font><font color="#ff0000">'00:00:03'</font><font color="#0000ff"><p>
Select
</p></font><font color="#808080">*</font><font color="#0000ff">From</font> Table_1 
<p>
 
</p><p>
The result will be: 
</p><p><font face="Tahoma">id            
Col1        Col2       
Sum<br />
----------- ----------- ----------- -----------<br />
1              34          
78           NULL </font></p><p>
 
</p><p><font face="Tahoma"></font></p><p><font face="Tahoma">id            
Col1        Col2       
Sum<br />
----------- ----------- ----------- -----------<br />
1              34          
78           112 </font></p></span>
          </span>
        </font>
        <img width="0" height="0" src="http://blog.delmonbay.com/aggbug.ashx?id=1dda3d1c-c7fe-4602-ab49-f936633fc15f" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Select... with optional parameters</title>
    <link rel="alternate" type="text/html" href="http://blog.delmonbay.com/2007/12/16/SelectWithOptionalParameters.aspx" />
    <id>http://blog.delmonbay.com/PermaLink,guid,8d7fb818-c474-4648-a6a2-3a51d02fd948.aspx</id>
    <published>2007-12-16T10:37:37.808-06:00</published>
    <updated>2007-12-16T11:16:55.126-06:00</updated>
    <category term="SQL Server" label="SQL Server" scheme="http://blog.delmonbay.com/CategoryView,category,SQL%2BServer.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <div class="text">
          <p>
I was working on a simple Address Book for my office using Sql Server and ASP.NET. 
</p>
          <p>
I created the table that has the fields: FirstName, LastName, Code,
StaffNo and Phone. 
</p>
          <p>
I prepaired the web page with five TextBoxes and a GridView. 
</p>
          <p>
Now... writing the code... 
</p>
          <p>
I want when the user enters the FirstName, he gets all matching records for this FirstName...
when he enters FirstName and LastName he gets all records with the matching FirstName and
LastName... 
</p>
          <p>
This means that if a field was not supplied, it shouldn't be included in the Where
clause... 
</p>
          <p>
This means that I will need to customize the search on the web page to check the supplied
fields, build the SQL Command dynamically then run the query... !@#$%^&amp;* 
</p>
          <p>
That didn't sound profissional... 
</p>
          <p>
I did some Google until I found this... 
</p>
          <p>
          </p>
          <font color="#0000ff">
            <font color="#0000ff">
              <p>
Select<font color="#000000"> FirstName</font><font color="#808080">,</font><font color="#000000"> LastName</font><font color="#808080">,</font><font color="#000000"> Code</font><font color="#808080">,</font><font color="#000000"> StaffNo</font><font color="#808080">,</font><font color="#000000"> Phone </font><font color="#0000ff">From</font><font color="#000000"> AddressBook </font><font color="#0000ff">Where</font></p>
            </font>
            <font color="#808080">
              <p>
((<font color="#000000">@FirstName </font><font color="#808080">is</font><font color="#000000"></font><font color="#808080">null)</font><font color="#000000"></font><font color="#808080">or</font><font color="#000000"></font><font color="#808080">(</font><font color="#000000">@FirstName </font><font color="#808080">=</font><font color="#000000"> FirstName</font><font color="#808080">))</font><font color="#000000"></font><font color="#808080">and</font><font color="#000000"></font></p>
            </font>
            <font color="#808080">
              <p>
((<font color="#000000">@LastName </font><font color="#808080">is</font><font color="#000000"></font><font color="#808080">null)</font><font color="#000000"></font><font color="#808080">or</font><font color="#000000"></font><font color="#808080">(</font><font color="#000000">@LastName </font><font color="#808080">=</font><font color="#000000"> LastName</font><font color="#808080">))</font><font color="#000000"></font><font color="#808080">and</font><font color="#000000"></font></p>
            </font>
            <font color="#808080">
              <p>
((<font color="#000000">@Code </font><font color="#808080">is</font><font color="#000000"></font><font color="#808080">null)</font><font color="#000000"></font><font color="#808080">or</font><font color="#000000"></font><font color="#808080">(</font><font color="#000000">@Code </font><font color="#808080">=</font><font color="#000000"> Code</font><font color="#808080">))</font><font color="#000000"></font><font color="#808080">and</font><font color="#000000"></font></p>
            </font>
            <font color="#808080">
              <p>
((<font color="#000000">@StaffNo </font><font color="#808080">is</font><font color="#000000"></font><font color="#808080">null)</font><font color="#000000"></font><font color="#808080">or</font><font color="#000000"></font><font color="#808080">(</font><font color="#000000">@StaffNo </font><font color="#808080">=</font><font color="#000000"> StaffNo</font><font color="#808080">))</font><font color="#000000"></font><font color="#808080">and</font><font color="#000000"></font></p>
            </font>
            <font color="#808080">
              <p>
((<font color="#000000">@Phone </font><font color="#808080">is</font><font color="#000000"></font><font color="#808080">null)</font><font color="#000000"></font><font color="#808080">or</font><font color="#000000"></font><font color="#808080">(</font><font color="#000000">@Phone </font><font color="#808080">=</font><font color="#000000"> Phone</font><font color="#808080">))</font></p>
            </font>
          </font>
          <font color="#808080">
          </font>
          <p>
            <font color="#808080">
            </font>
          </p>
          <p>
The where clause checks each parameter to see if it is NULL which means we don't want
to filter our results by that parameter. If the parameter is not null it then checks
the fields value with the parameter. 
</p>
        </div>
        <img width="0" height="0" src="http://blog.delmonbay.com/aggbug.ashx?id=8d7fb818-c474-4648-a6a2-3a51d02fd948" />
      </div>
    </content>
  </entry>
</feed>