<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">
  <channel>
    <title>kevin Mocha - Web</title>
    <link>http://blog.ilovedoudou.com/</link>
    <description>Bookmarks collected from web.</description>
    <language>en-us</language>
    <copyright>Kevin Mocha</copyright>
    <lastBuildDate>Wed, 31 Mar 2010 17:00:37 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 1.9.6264.0</generator>
    <managingEditor>lulustock@gmail.com</managingEditor>
    <webMaster>lulustock@gmail.com</webMaster>
    <item>
      <trackback:ping>http://blog.ilovedoudou.com/Trackback.aspx?guid=70421cc8-ee9c-4fb8-961e-96f54dd4ea48</trackback:ping>
      <pingback:server>http://blog.ilovedoudou.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.ilovedoudou.com/PermaLink,guid,70421cc8-ee9c-4fb8-961e-96f54dd4ea48.aspx</pingback:target>
      <dc:creator>Kevin Mocha</dc:creator>
      <wfw:comment>http://blog.ilovedoudou.com/CommentView,guid,70421cc8-ee9c-4fb8-961e-96f54dd4ea48.aspx</wfw:comment>
      <wfw:commentRss>http://blog.ilovedoudou.com/SyndicationService.asmx/GetEntryCommentsRss?guid=70421cc8-ee9c-4fb8-961e-96f54dd4ea48</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Good web site <a title="http://css-tricks.com/" href="http://css-tricks.com/">http://css-tricks.com/</a></p>
        <img width="0" height="0" src="http://blog.ilovedoudou.com/aggbug.ashx?id=70421cc8-ee9c-4fb8-961e-96f54dd4ea48" />
      </body>
      <title>CSS Tricks</title>
      <guid isPermaLink="false">http://blog.ilovedoudou.com/PermaLink,guid,70421cc8-ee9c-4fb8-961e-96f54dd4ea48.aspx</guid>
      <link>http://blog.ilovedoudou.com/PermaLink,guid,70421cc8-ee9c-4fb8-961e-96f54dd4ea48.aspx</link>
      <pubDate>Wed, 31 Mar 2010 17:00:37 GMT</pubDate>
      <description>&lt;p&gt;
Good web site &lt;a title="http://css-tricks.com/" href="http://css-tricks.com/"&gt;http://css-tricks.com/&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.ilovedoudou.com/aggbug.ashx?id=70421cc8-ee9c-4fb8-961e-96f54dd4ea48" /&gt;</description>
      <comments>http://blog.ilovedoudou.com/CommentView,guid,70421cc8-ee9c-4fb8-961e-96f54dd4ea48.aspx</comments>
      <category>Web</category>
    </item>
    <item>
      <trackback:ping>http://blog.ilovedoudou.com/Trackback.aspx?guid=eb5f2672-217d-4776-900d-7cc9d23f68ae</trackback:ping>
      <pingback:server>http://blog.ilovedoudou.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.ilovedoudou.com/PermaLink,guid,eb5f2672-217d-4776-900d-7cc9d23f68ae.aspx</pingback:target>
      <dc:creator>Kevin Mocha</dc:creator>
      <wfw:comment>http://blog.ilovedoudou.com/CommentView,guid,eb5f2672-217d-4776-900d-7cc9d23f68ae.aspx</wfw:comment>
      <wfw:commentRss>http://blog.ilovedoudou.com/SyndicationService.asmx/GetEntryCommentsRss?guid=eb5f2672-217d-4776-900d-7cc9d23f68ae</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a title="http://www.andybudd.com/archives/2004/02/css_crib_sheet_3_centering_a_div/" href="http://www.andybudd.com/archives/2004/02/css_crib_sheet_3_centering_a_div/">http://www.andybudd.com/archives/2004/02/css_crib_sheet_3_centering_a_div/</a>
        </p>
        <pre>body {
	text-align: center;
	min-width: 600px;
}

#wrapper {
	margin:0 auto;
	width:600px;
	text-align: left;
}</pre>
        <img width="0" height="0" src="http://blog.ilovedoudou.com/aggbug.ashx?id=eb5f2672-217d-4776-900d-7cc9d23f68ae" />
      </body>
      <title>CSS: center the div</title>
      <guid isPermaLink="false">http://blog.ilovedoudou.com/PermaLink,guid,eb5f2672-217d-4776-900d-7cc9d23f68ae.aspx</guid>
      <link>http://blog.ilovedoudou.com/PermaLink,guid,eb5f2672-217d-4776-900d-7cc9d23f68ae.aspx</link>
      <pubDate>Sun, 14 Mar 2010 19:41:36 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a title="http://www.andybudd.com/archives/2004/02/css_crib_sheet_3_centering_a_div/" href="http://www.andybudd.com/archives/2004/02/css_crib_sheet_3_centering_a_div/"&gt;http://www.andybudd.com/archives/2004/02/css_crib_sheet_3_centering_a_div/&lt;/a&gt;
&lt;/p&gt;
&lt;pre&gt;body {
	text-align: center;
	min-width: 600px;
}

#wrapper {
	margin:0 auto;
	width:600px;
	text-align: left;
}&lt;/pre&gt;
&lt;img width="0" height="0" src="http://blog.ilovedoudou.com/aggbug.ashx?id=eb5f2672-217d-4776-900d-7cc9d23f68ae" /&gt;</description>
      <comments>http://blog.ilovedoudou.com/CommentView,guid,eb5f2672-217d-4776-900d-7cc9d23f68ae.aspx</comments>
      <category>DotNet / ASP;Web</category>
    </item>
    <item>
      <trackback:ping>http://blog.ilovedoudou.com/Trackback.aspx?guid=2f2a66c4-a599-4a92-bfa1-7f859162fb34</trackback:ping>
      <pingback:server>http://blog.ilovedoudou.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.ilovedoudou.com/PermaLink,guid,2f2a66c4-a599-4a92-bfa1-7f859162fb34.aspx</pingback:target>
      <dc:creator>Kevin Mocha</dc:creator>
      <wfw:comment>http://blog.ilovedoudou.com/CommentView,guid,2f2a66c4-a599-4a92-bfa1-7f859162fb34.aspx</wfw:comment>
      <wfw:commentRss>http://blog.ilovedoudou.com/SyndicationService.asmx/GetEntryCommentsRss?guid=2f2a66c4-a599-4a92-bfa1-7f859162fb34</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Web 2.0 addresses the new web technologies that are used to bring more <strong>interactivity</strong> to
web<br />
applications. 
</p>
        <p>
Additionally, Web 2.0 also includes a behavioral shift on the web, where users are<br />
encouraged to customize their own content on web applications rather than view static/<br />
generic content supplied by an organization.
</p>
        <p>
In addition to the technology and behavior changes, Web 2.0 can also mean the shift<br />
from shrink-wrapped software to software as a service. 
</p>
        <p>
  
</p>
        <p>
Another aspect of Web 2.0 are mash-up and plug-in pages. (Personal google page) 
</p>
        <p>
  
</p>
        <p>
Injection attacks are based on a single problem that persists in many technologies:
namely,<br />
no strict separation exists between program instructions and user data (also referred
to as<br />
user input). This problem allows for attackers to sneak program instructions into
places<br />
where the developer expected only benign data. By sneaking in program instructions,
the<br />
attacker can instruct the program to perform actions of the attacker’s choosing. 
</p>
        <p>
  
</p>
        <p>
          <strong>
            <font color="#0000ff" size="3">Input Injection</font>
          </strong>
        </p>
        <p>
          <strong>
          </strong>  
</p>
        <p>
          <strong>SQL Injection</strong>
        </p>
        <p>
  
</p>
        <p>
SELECT id FROM user_table WHERE username = '' <font color="#ff0000">OR 1=1 -- </font>'
AND password<br />
= PASSWORD('x') 
</p>
        <p>
  
</p>
        <p>
Injection attacks are not necessary blind attacks. Many web applications are developed<br />
with open-source tools. To make injection attacks more successful, download free or<br />
evaluation copies of products and set up your own test system. Once you have found
an<br />
error in your test system, it is highly probable that the same issue will exist on
all web<br />
applications using that tool. 
</p>
        <p>
  
</p>
        <p>
Cure: 1. constrain data types, escape user input, prepared statements (the best) 
</p>
        <p>
  
</p>
        <p>
          <strong>XPath Injection</strong>
        </p>
        <p>
//users[username/text()='admin' and password/text()='' or '1'='1' ]/id/text() 
</p>
        <p>
  
</p>
        <p>
          <strong>Command Injection </strong>(Escape) 
</p>
        <p>
          <strong>Directory Transversal Attacks<br />
XXE (XML eXternal Entity) Attacks </strong>(prohibit the external entity in XML parser) 
</p>
        <p>
          <strong>LDAP Injection<br /></strong>whitelisting characters—that is, allow<br />
alphanumeric characters (a–z, A–Z, and 0–9) and deny all other characters.<br /><strong>Buffer Overflows</strong><br />
The injection aspect of buffer overflows is that the attacker injects<br />
machine instructions (called shell code) into some user input. The attacker somewhat
needs to<br />
know where the shell code will end up in the memory of the computer running the web<br />
application. Then the attacker overwrites the return address to point to the memory
location<br />
of the shell code. <img width="0" height="0" src="http://blog.ilovedoudou.com/aggbug.ashx?id=2f2a66c4-a599-4a92-bfa1-7f859162fb34" /></p>
      </body>
      <title>Web 2.0 Security (part 1)</title>
      <guid isPermaLink="false">http://blog.ilovedoudou.com/PermaLink,guid,2f2a66c4-a599-4a92-bfa1-7f859162fb34.aspx</guid>
      <link>http://blog.ilovedoudou.com/PermaLink,guid,2f2a66c4-a599-4a92-bfa1-7f859162fb34.aspx</link>
      <pubDate>Sun, 07 Mar 2010 05:08:42 GMT</pubDate>
      <description>&lt;p&gt;
Web 2.0 addresses the new web technologies that are used to bring more &lt;strong&gt;interactivity&lt;/strong&gt; to
web&lt;br&gt;
applications. 
&lt;/p&gt;
&lt;p&gt;
Additionally, Web 2.0 also includes a behavioral shift on the web, where users are&lt;br&gt;
encouraged to customize their own content on web applications rather than view static/&lt;br&gt;
generic content supplied by an organization.
&lt;/p&gt;
&lt;p&gt;
In addition to the technology and behavior changes, Web 2.0 can also mean the shift&lt;br&gt;
from shrink-wrapped software to software as a service. 
&lt;p&gt;
&amp;nbsp; 
&lt;p&gt;
Another aspect of Web 2.0 are mash-up and plug-in pages. (Personal google page) 
&lt;p&gt;
&amp;nbsp; 
&lt;p&gt;
Injection attacks are based on a single problem that persists in many technologies:
namely,&lt;br&gt;
no strict separation exists between program instructions and user data (also referred
to as&lt;br&gt;
user input). This problem allows for attackers to sneak program instructions into
places&lt;br&gt;
where the developer expected only benign data. By sneaking in program instructions,
the&lt;br&gt;
attacker can instruct the program to perform actions of the attacker’s choosing. 
&lt;p&gt;
&amp;nbsp; 
&lt;p&gt;
&lt;strong&gt;&lt;font color="#0000ff" size="3"&gt;Input Injection&lt;/font&gt;&lt;/strong&gt; 
&lt;p&gt;
&lt;strong&gt;&lt;/strong&gt;&amp;nbsp; 
&lt;p&gt;
&lt;strong&gt;SQL Injection&lt;/strong&gt; 
&lt;p&gt;
&amp;nbsp; 
&lt;p&gt;
SELECT id FROM user_table WHERE username = '' &lt;font color="#ff0000"&gt;OR 1=1 -- &lt;/font&gt;'
AND password&lt;br&gt;
= PASSWORD('x') 
&lt;p&gt;
&amp;nbsp; 
&lt;p&gt;
Injection attacks are not necessary blind attacks. Many web applications are developed&lt;br&gt;
with open-source tools. To make injection attacks more successful, download free or&lt;br&gt;
evaluation copies of products and set up your own test system. Once you have found
an&lt;br&gt;
error in your test system, it is highly probable that the same issue will exist on
all web&lt;br&gt;
applications using that tool. 
&lt;p&gt;
&amp;nbsp; 
&lt;p&gt;
Cure: 1. constrain data types, escape user input, prepared statements (the best) 
&lt;p&gt;
&amp;nbsp; 
&lt;p&gt;
&lt;strong&gt;XPath Injection&lt;/strong&gt; 
&lt;p&gt;
//users[username/text()='admin' and password/text()='' or '1'='1' ]/id/text() 
&lt;p&gt;
&amp;nbsp; 
&lt;p&gt;
&lt;strong&gt;Command Injection &lt;/strong&gt;(Escape) 
&lt;p&gt;
&lt;strong&gt;Directory Transversal Attacks&lt;br&gt;
XXE (XML eXternal Entity) Attacks &lt;/strong&gt;(prohibit the external entity in XML parser) 
&lt;p&gt;
&lt;strong&gt;LDAP Injection&lt;br&gt;
&lt;/strong&gt;whitelisting characters—that is, allow&lt;br&gt;
alphanumeric characters (a–z, A–Z, and 0–9) and deny all other characters.&lt;br&gt;
&lt;strong&gt;Buffer Overflows&lt;/strong&gt;
&lt;br&gt;
The injection aspect of buffer overflows is that the attacker injects&lt;br&gt;
machine instructions (called shell code) into some user input. The attacker somewhat
needs to&lt;br&gt;
know where the shell code will end up in the memory of the computer running the web&lt;br&gt;
application. Then the attacker overwrites the return address to point to the memory
location&lt;br&gt;
of the shell code. &lt;img width="0" height="0" src="http://blog.ilovedoudou.com/aggbug.ashx?id=2f2a66c4-a599-4a92-bfa1-7f859162fb34" /&gt;</description>
      <comments>http://blog.ilovedoudou.com/CommentView,guid,2f2a66c4-a599-4a92-bfa1-7f859162fb34.aspx</comments>
      <category>Life / Career;Web</category>
    </item>
    <item>
      <trackback:ping>http://blog.ilovedoudou.com/Trackback.aspx?guid=96b414d4-7024-4eaf-b68d-d3239f7f8a8a</trackback:ping>
      <pingback:server>http://blog.ilovedoudou.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.ilovedoudou.com/PermaLink,guid,96b414d4-7024-4eaf-b68d-d3239f7f8a8a.aspx</pingback:target>
      <dc:creator>Kevin Mocha</dc:creator>
      <wfw:comment>http://blog.ilovedoudou.com/CommentView,guid,96b414d4-7024-4eaf-b68d-d3239f7f8a8a.aspx</wfw:comment>
      <wfw:commentRss>http://blog.ilovedoudou.com/SyndicationService.asmx/GetEntryCommentsRss?guid=96b414d4-7024-4eaf-b68d-d3239f7f8a8a</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <font color="#0000ff" size="2">
            <strong>                                              
Security</strong>
          </font>
        </p>
        <p>
HTTP offers integrated mechanisms for authenticating users. Collectively referred
to as HTTP authentication, these mechanisms provide a way for users to be authenticated
without the necessity of any server-side programming logic. This can be especially
helpful for restricting access to static resources (such as images or HTML files).
Of course, server-side scripts can also implement HTTP authentication, although Web
developers often authenticate users in the application logic itself. 
</p>
        <p>
There are two basic types of HTTP authentication: 
</p>
        <ul>
          <li>
            <p>
Basic authentication<a name="idd1e25584"></a><a name="idd1e25589"></a><a name="idd1e25594"></a></p>
          </li>
          <li>
            <p>
Digest authentication
</p>
          </li>
        </ul>
        <p>
          <a href="http://blog.ilovedoudou.com/content/binary/WindowsLiveWriter/SummaryofHTTPDevelopersHandbookpart3_11AB8/image_2.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="image" border="0" alt="image" align="left" src="http://blog.ilovedoudou.com/content/binary/WindowsLiveWriter/SummaryofHTTPDevelopersHandbookpart3_11AB8/image_thumb.png" width="395" height="153" />
          </a>
          <a name="idd1e25602">
          </a>
          <a name="idd1e25607">
          </a>
          <a name="idd1e25612">
          </a>
        </p>
        <p>
          <a href="http://blog.ilovedoudou.com/content/binary/WindowsLiveWriter/SummaryofHTTPDevelopersHandbookpart3_11AB8/image_4.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blog.ilovedoudou.com/content/binary/WindowsLiveWriter/SummaryofHTTPDevelopersHandbookpart3_11AB8/image_thumb_1.png" width="434" height="153" />
          </a>
        </p>
        <p>
An elegant solution to these types of problems is SSL, Secure Sockets Layer. In 1994,
Netscape released the specification of Secure Sockets Layer. By 1995, version 3.0
of SSL was released, and it has since taken the Web by storm. SSL has dramatically
changed the way people use the Web, and it provides a very good solution to many of
the Web's shortcomings, most importantly: 
</p>
        <ul>
          <li>
            <p>
Data integrity— SSL can <a name="idd1e27328"></a><a name="idd1e27333"></a>help ensure
that data (HTTP messages) cannot be changed while in transit.
</p>
          </li>
          <li>
            <p>
Data confidentiality— SSL<a name="idd1e27351"></a><a name="idd1e27356"></a> provides
strong cryptographic techniques used to encrypt HTTP messages.
</p>
          </li>
          <li>
            <p>
Identification— SSL can<a name="idd1e27374"></a><a name="idd1e27379"></a> offer reasonable
assurance as to the identity of a Web server. It can also be used to validate the
identity of a client, but this is less common.
</p>
          </li>
        </ul>
        <p>
A digital certificate is a document that declares that a particular public key is
owned by a particular Web site (see <a href="#ch18fig003">Figure 18.3</a>). The CA's
role is very similar to a notary whose responsibility is to ensure the correct identity
of people signing a legal document. 
</p>
        <p>
  
</p>
        <p>
SSL is basically a protocol<a name="idd1e27890"></a><a name="idd1e27895"></a> that
employs both symmetric and asymmetric cryptography to protect messages that use TCP
as the transport-level protocol. Because of the high performance expense of asymmetric
cryptography, it is only used to exchange the randomly generated symmetric key that
is then used for the symmetric encryption of the HTTP messages. 
</p>
        <p>
  
</p>
        <p>
          <a href="http://blog.ilovedoudou.com/content/binary/WindowsLiveWriter/SummaryofHTTPDevelopersHandbookpart3_11AB8/image_6.png">
            <img style="border-bottom: 0px; border-left: 0px; margin: 0px 20px 0px 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" align="left" src="http://blog.ilovedoudou.com/content/binary/WindowsLiveWriter/SummaryofHTTPDevelopersHandbookpart3_11AB8/image_thumb_2.png" width="299" height="137" />
          </a>
        </p>
        <p>
          <a href="http://blog.ilovedoudou.com/content/binary/WindowsLiveWriter/SummaryofHTTPDevelopersHandbookpart3_11AB8/image_8.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blog.ilovedoudou.com/content/binary/WindowsLiveWriter/SummaryofHTTPDevelopersHandbookpart3_11AB8/image_thumb_3.png" width="425" height="253" />
          </a> https
on port 443
</p>
        <p>
Whenever a Web browser connects to a Web site over a secure connection, it requires
that the SSL certificate<a name="idd1e27937"></a><a name="idd1e27942"></a> the Web
server presents meets three main conditions:
</p>
        <ul>
          <li>
            <p>
The domain name on the certificate must match the domain name the Web browser believes
itself to be requesting a resource from.
</p>
          </li>
          <li>
            <p>
The certificate must be valid (not expired).
</p>
          </li>
          <li>
            <p>
The certificate must be signed by a trusted certificate authority (CA).
</p>
          </li>
        </ul>
        <p>
Transport Layer Security (TLS) <a name="idd1e28483"></a><a name="idd1e28489"></a><a name="idd1e28494"></a>is
a formally standardized version of SSL. The biggest difference, in fact, is that TLS
is defined and maintained by an international standards body, the Internet Engineering
Task Force (IETF). <a name="idd1e28498"></a><a name="idd1e28504"></a><a name="idd1e28509"></a><a name="idd1e28512"></a>SSL
is developed and maintained by Netscape. 
</p>
        <p>
  
</p>
        <p>
One of the advantages of the IETF's involvement in TLS is that they also control the
HTTP protocol. <a name="idd1e28528"></a><a name="idd1e28535"></a><a name="idd1e28542"></a><a name="idd1e28547"></a>This
situation can possibly be credited for RFC 2817, which describes a method for using
the <tt>Upgrade</tt> general header to upgrade to HTTP over TLS. The significance
of this is that it allows for a change in protocol without having to utilize a separate
port. Thus, a Web server that supports this technique can implement TLS over port
80. An example of a Web client's request is the following:
</p>
        <pre>GET / HTTP/1.1 
Host: 127.0.0.1 
Upgrade: TLS/1.0 
Connection: Upgrade </pre>
        <p>
A Web server that accepts this upgrade will issue an HTTP response similar to the
following:
</p>
        <pre>HTTP/1.1 101 Switching Protocols 
Upgrade: TLS/1.0, HTTP/1.1 
Connection: Upgrade </pre>
        <p>
At this point, a typical SSL handshake<a name="idd1e28574"></a><a name="idd1e28577"></a> will
take place over the current connection. It is sometimes confusing to consider that
the SSL handshake can take place over port 80 at this point while the Web server can
still accept normal HTTP requests over the same port. Note that the upgrade only affects
the current TCP connection. Just as a Web server does not (barring extremely odd memory
collisions) send the wrong HTTP response to the wrong Web client, it can also keep
protocol upgrades straight. <img width="0" height="0" src="http://blog.ilovedoudou.com/aggbug.ashx?id=96b414d4-7024-4eaf-b68d-d3239f7f8a8a" /></p>
      </body>
      <title>Summary of HTTP Developer&amp;rsquo;s Handbook (part 3)</title>
      <guid isPermaLink="false">http://blog.ilovedoudou.com/PermaLink,guid,96b414d4-7024-4eaf-b68d-d3239f7f8a8a.aspx</guid>
      <link>http://blog.ilovedoudou.com/PermaLink,guid,96b414d4-7024-4eaf-b68d-d3239f7f8a8a.aspx</link>
      <pubDate>Sun, 07 Mar 2010 01:06:37 GMT</pubDate>
      <description>&lt;p&gt;
&lt;font color="#0000ff" size="2"&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
Security&lt;/strong&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
HTTP offers integrated mechanisms for authenticating users. Collectively referred
to as HTTP authentication, these mechanisms provide a way for users to be authenticated
without the necessity of any server-side programming logic. This can be especially
helpful for restricting access to static resources (such as images or HTML files).
Of course, server-side scripts can also implement HTTP authentication, although Web
developers often authenticate users in the application logic itself. 
&lt;p&gt;
There are two basic types of HTTP authentication: 
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;
Basic authentication&lt;a name="idd1e25584"&gt;&lt;/a&gt;&lt;a name="idd1e25589"&gt;&lt;/a&gt;&lt;a name="idd1e25594"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;li&gt;
&lt;p&gt;
Digest authentication
&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;a href="http://blog.ilovedoudou.com/content/binary/WindowsLiveWriter/SummaryofHTTPDevelopersHandbookpart3_11AB8/image_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="image" border="0" alt="image" align="left" src="http://blog.ilovedoudou.com/content/binary/WindowsLiveWriter/SummaryofHTTPDevelopersHandbookpart3_11AB8/image_thumb.png" width="395" height="153"&gt;&lt;/a&gt; &lt;a name="idd1e25602"&gt;&lt;/a&gt;&lt;a name="idd1e25607"&gt;&lt;/a&gt;&lt;a name="idd1e25612"&gt;&lt;/a&gt; 
&lt;p&gt;
&lt;a href="http://blog.ilovedoudou.com/content/binary/WindowsLiveWriter/SummaryofHTTPDevelopersHandbookpart3_11AB8/image_4.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blog.ilovedoudou.com/content/binary/WindowsLiveWriter/SummaryofHTTPDevelopersHandbookpart3_11AB8/image_thumb_1.png" width="434" height="153"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
An elegant solution to these types of problems is SSL, Secure Sockets Layer. In 1994,
Netscape released the specification of Secure Sockets Layer. By 1995, version 3.0
of SSL was released, and it has since taken the Web by storm. SSL has dramatically
changed the way people use the Web, and it provides a very good solution to many of
the Web's shortcomings, most importantly: 
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;
Data integrity— SSL can &lt;a name="idd1e27328"&gt;&lt;/a&gt;&lt;a name="idd1e27333"&gt;&lt;/a&gt;help ensure
that data (HTTP messages) cannot be changed while in transit.
&lt;/p&gt;
&lt;li&gt;
&lt;p&gt;
Data confidentiality— SSL&lt;a name="idd1e27351"&gt;&lt;/a&gt;&lt;a name="idd1e27356"&gt;&lt;/a&gt; provides
strong cryptographic techniques used to encrypt HTTP messages.
&lt;/p&gt;
&lt;li&gt;
&lt;p&gt;
Identification— SSL can&lt;a name="idd1e27374"&gt;&lt;/a&gt;&lt;a name="idd1e27379"&gt;&lt;/a&gt; offer reasonable
assurance as to the identity of a Web server. It can also be used to validate the
identity of a client, but this is less common.
&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
A digital certificate is a document that declares that a particular public key is
owned by a particular Web site (see &lt;a href="#ch18fig003"&gt;Figure 18.3&lt;/a&gt;). The CA's
role is very similar to a notary whose responsibility is to ensure the correct identity
of people signing a legal document. 
&lt;p&gt;
&amp;nbsp; 
&lt;p&gt;
SSL is basically a protocol&lt;a name="idd1e27890"&gt;&lt;/a&gt;&lt;a name="idd1e27895"&gt;&lt;/a&gt; that
employs both symmetric and asymmetric cryptography to protect messages that use TCP
as the transport-level protocol. Because of the high performance expense of asymmetric
cryptography, it is only used to exchange the randomly generated symmetric key that
is then used for the symmetric encryption of the HTTP messages. 
&lt;p&gt;
&amp;nbsp; 
&lt;p&gt;
&lt;a href="http://blog.ilovedoudou.com/content/binary/WindowsLiveWriter/SummaryofHTTPDevelopersHandbookpart3_11AB8/image_6.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 0px 20px 0px 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" align="left" src="http://blog.ilovedoudou.com/content/binary/WindowsLiveWriter/SummaryofHTTPDevelopersHandbookpart3_11AB8/image_thumb_2.png" width="299" height="137"&gt;&lt;/a&gt; 
&lt;p&gt;
&lt;a href="http://blog.ilovedoudou.com/content/binary/WindowsLiveWriter/SummaryofHTTPDevelopersHandbookpart3_11AB8/image_8.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blog.ilovedoudou.com/content/binary/WindowsLiveWriter/SummaryofHTTPDevelopersHandbookpart3_11AB8/image_thumb_3.png" width="425" height="253"&gt;&lt;/a&gt; https
on port 443
&lt;/p&gt;
&lt;p&gt;
Whenever a Web browser connects to a Web site over a secure connection, it requires
that the SSL certificate&lt;a name="idd1e27937"&gt;&lt;/a&gt;&lt;a name="idd1e27942"&gt;&lt;/a&gt; the Web
server presents meets three main conditions:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;
The domain name on the certificate must match the domain name the Web browser believes
itself to be requesting a resource from.
&lt;/p&gt;
&lt;li&gt;
&lt;p&gt;
The certificate must be valid (not expired).
&lt;/p&gt;
&lt;li&gt;
&lt;p&gt;
The certificate must be signed by a trusted certificate authority (CA).
&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Transport Layer Security (TLS) &lt;a name="idd1e28483"&gt;&lt;/a&gt;&lt;a name="idd1e28489"&gt;&lt;/a&gt;&lt;a name="idd1e28494"&gt;&lt;/a&gt;is
a formally standardized version of SSL. The biggest difference, in fact, is that TLS
is defined and maintained by an international standards body, the Internet Engineering
Task Force (IETF). &lt;a name="idd1e28498"&gt;&lt;/a&gt;&lt;a name="idd1e28504"&gt;&lt;/a&gt;&lt;a name="idd1e28509"&gt;&lt;/a&gt;&lt;a name="idd1e28512"&gt;&lt;/a&gt;SSL
is developed and maintained by Netscape. 
&lt;p&gt;
&amp;nbsp; 
&lt;p&gt;
One of the advantages of the IETF's involvement in TLS is that they also control the
HTTP protocol. &lt;a name="idd1e28528"&gt;&lt;/a&gt;&lt;a name="idd1e28535"&gt;&lt;/a&gt;&lt;a name="idd1e28542"&gt;&lt;/a&gt;&lt;a name="idd1e28547"&gt;&lt;/a&gt;This
situation can possibly be credited for RFC 2817, which describes a method for using
the &lt;tt&gt;Upgrade&lt;/tt&gt; general header to upgrade to HTTP over TLS. The significance
of this is that it allows for a change in protocol without having to utilize a separate
port. Thus, a Web server that supports this technique can implement TLS over port
80. An example of a Web client's request is the following:&lt;pre&gt;GET / HTTP/1.1 
Host: 127.0.0.1 
Upgrade: TLS/1.0 
Connection: Upgrade &lt;/pre&gt;
&lt;p&gt;
A Web server that accepts this upgrade will issue an HTTP response similar to the
following:&lt;pre&gt;HTTP/1.1 101 Switching Protocols 
Upgrade: TLS/1.0, HTTP/1.1 
Connection: Upgrade &lt;/pre&gt;
&lt;p&gt;
At this point, a typical SSL handshake&lt;a name="idd1e28574"&gt;&lt;/a&gt;&lt;a name="idd1e28577"&gt;&lt;/a&gt; will
take place over the current connection. It is sometimes confusing to consider that
the SSL handshake can take place over port 80 at this point while the Web server can
still accept normal HTTP requests over the same port. Note that the upgrade only affects
the current TCP connection. Just as a Web server does not (barring extremely odd memory
collisions) send the wrong HTTP response to the wrong Web client, it can also keep
protocol upgrades straight. &lt;img width="0" height="0" src="http://blog.ilovedoudou.com/aggbug.ashx?id=96b414d4-7024-4eaf-b68d-d3239f7f8a8a" /&gt;</description>
      <comments>http://blog.ilovedoudou.com/CommentView,guid,96b414d4-7024-4eaf-b68d-d3239f7f8a8a.aspx</comments>
      <category>Life / Career;Web</category>
    </item>
    <item>
      <trackback:ping>http://blog.ilovedoudou.com/Trackback.aspx?guid=205ad14d-1123-4af7-9e85-7c02b4eb649a</trackback:ping>
      <pingback:server>http://blog.ilovedoudou.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.ilovedoudou.com/PermaLink,guid,205ad14d-1123-4af7-9e85-7c02b4eb649a.aspx</pingback:target>
      <dc:creator>Kevin Mocha</dc:creator>
      <wfw:comment>http://blog.ilovedoudou.com/CommentView,guid,205ad14d-1123-4af7-9e85-7c02b4eb649a.aspx</wfw:comment>
      <wfw:commentRss>http://blog.ilovedoudou.com/SyndicationService.asmx/GetEntryCommentsRss?guid=205ad14d-1123-4af7-9e85-7c02b4eb649a</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <strong>
            <font color="#0000ff" size="2">Maintaining State</font>
          </strong>
        </p>
        <p>
If a unique response per client is desired, something in the HTTP request itself must
be unique.
</p>
        <p>
Once a method of state management has been established, you need only to authenticate
the user once. <a name="idd1e20028"></a>Because state management provides a way to
identify a Web client, user identification simply requires that you remember which
user is associated with which client upon authentication. 
</p>
        <p>
          <a href="0672324547_">
            <img border="0" src="FILES/pixel.gif" width="1" height="1" />
          </a>
        </p>
        <p>
When I speak of maintaining state,<a name="idd1e20042"></a><a name="idd1e20047"></a><a name="idd1e20050"></a> I
am only speaking of client identification, which is accomplished by associating <strong>multiple</strong> HTTP
requests. 
</p>
        <p>
Maintaining session, <a name="idd1e20057"></a>on the other hand, requires two related
tasks: 
</p>
        <ul>
          <li>
            <p>
Identifying the client (state management)
</p>
          </li>
          <li>
            <p>
Retaining information about the client
</p>
          </li>
        </ul>
        <p>
Although cookies are most often described in conversation as if they are entities
(for example, "a Web server sends you a cookie"), they are much easier to understand
at a functional level if you consider them an extension of the HTTP protocol, which
is actually more correct. Cookies can be defined as the addition of two HTTP headers<a name="idd1e20166"></a><a name="idd1e20173"></a><a name="idd1e20176"></a><a name="idd1e20181"></a><a name="idd1e20188"></a><a name="idd1e20191"></a>: 
</p>
        <ul>
          <li>
            <p>
              <tt>Set-Cookie</tt> response header
</p>
          </li>
          <li>
            <p>
              <tt>Cookie</tt> request header
</p>
          </li>
        </ul>
        <p>
          <a href="http://blog.ilovedoudou.com/content/binary/WindowsLiveWriter/SummaryofHTTPDevelopersHandbookpart3_E00E/image_2.png">
            <img style="border-bottom: 0px; border-left: 0px; margin: 0px 20px 0px 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" align="left" src="http://blog.ilovedoudou.com/content/binary/WindowsLiveWriter/SummaryofHTTPDevelopersHandbookpart3_E00E/image_thumb.png" width="375" height="449" />
          </a>
        </p>
        <p>
    A common question seen on mailing lists and discussion forums for
Web developers is how to test whether the client is accepting cookies, and many people
do not understand the answer. As is evident in <a href="#ch11fig003">Figure 11.3</a>,
it is impossible to determine whether the client accepted the cookie until the second
request is sent (step 3 in the figure). If the cookie is included in the second request,
the client accepted it. If not, the client rejected it.
</p>
        <p>
Some developers choose to force the issue of determining whether the client accepts
cookies by redirecting the client to a second URL upon entrance.
</p>
        <p>
Cookies have become a source of<a name="idd1e20678"></a><a name="idd1e20683"></a><a name="idd1e20688"></a><a name="idd1e20693"></a> privacy
concern in recent years. As with most technologies in the computer industry, this
reputation has been earned by the misuse of the technology more than the technology
itself.
</p>
        <p>
Whether using files or a database to store the session information, there are three
basic elements you will want to store for each session's record:
</p>
        <ul>
          <li>
            <p>
Unique identifier
</p>
          </li>
          <li>
            <p>
Timestamp of last access
</p>
          </li>
          <li>
            <p>
Client data
</p>
          </li>
        </ul>
        <p>
          <a href="http://blog.ilovedoudou.com/content/binary/WindowsLiveWriter/SummaryofHTTPDevelopersHandbookpart3_E00E/image_4.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blog.ilovedoudou.com/content/binary/WindowsLiveWriter/SummaryofHTTPDevelopersHandbookpart3_E00E/image_thumb_1.png" width="454" height="305" />
          </a>
        </p>
        <p>
 
</p>
        <p>
          <font color="#0000ff" size="2">
            <strong>Improve the performance</strong>
          </font>
        </p>
        <p>
Caching can refer to many concepts. <a name="idd1e22437"></a>The general meaning of
cache is to store a copy of something to prevent the necessity of retrieving it again.
When speaking of Web development, there are three main types of caching: 
</p>
        <ul>
          <li>
            <p>
Caching on the server— Storing<a name="idd1e22455"></a><a name="idd1e22460"></a> a
complete or partially generated resource on the server to keep from having to regenerate
it.
</p>
          </li>
          <li>
            <p>
Caching on the client— Storing<a name="idd1e22478"></a><a name="idd1e22483"></a> a
resource on the client to keep from having to receive the entire resource again.
</p>
          </li>
          <li>
            <p>
Proxy caching— Storing<a name="idd1e22501"></a><a name="idd1e22506"></a> a resource
on a proxy to allow direct replies to an HTTP request rather than having to receive
the entire resource from the origin server again.
</p>
          </li>
        </ul>
        <p>
Although there are many side advantages <a name="idd1e22513"></a><a name="idd1e22518"></a>to
caching, there are three core benefits: 
</p>
        <ul>
          <li>
            <p>
Improve response time from a user perspective— This is what most Web developers focus
on, the user experience.
</p>
          </li>
          <li>
            <p>
Lessen network load— Many Web developers overlook this metric because bandwidth is
often viewed as an expendable resource, where more can be purchased as needed.
</p>
          </li>
          <li>
            <p>
Lessen server load— This metric is more difficult to overlook, as it directly impacts
the user experience in terms of performance and reliability (stressed servers fail
more often).
</p>
          </li>
        </ul>
        <p>
          <strong>
            <font color="#0000ff" size="2">
            </font>
          </strong> 
</p>
        <p>
          <strong>
            <font color="#0000ff" size="2">
            </font>
          </strong> 
</p>
        <p>
          <strong>
            <font color="#0000ff" size="2">
            </font>
          </strong> 
</p>
        <p>
          <strong>
            <font color="#0000ff" size="2">
            </font>
          </strong> 
</p>
        <p>
          <strong>
            <font color="#0000ff" size="2">
            </font>
          </strong> 
</p>
        <p>
          <strong>
            <font color="#0000ff" size="2">
            </font>
          </strong> 
</p>
        <p>
          <strong>
            <font color="#0000ff" size="2">
            </font>
          </strong> 
</p>
        <p>
          <strong>
            <font color="#0000ff" size="2">
            </font>
          </strong> 
</p>
        <p>
          <strong>
            <font color="#0000ff" size="2">
            </font>
          </strong> 
</p>
        <p>
          <strong>
            <font color="#0000ff" size="2">
            </font>
          </strong> 
</p>
        <p>
          <strong>
            <font color="#0000ff" size="2">
            </font>
          </strong> 
</p>
        <p>
          <strong>
            <font color="#0000ff" size="2">
            </font>
          </strong> 
</p>
        <p>
          <strong>
            <font color="#0000ff" size="2">
            </font>
          </strong> 
</p>
        <p>
          <strong>
            <font color="#0000ff" size="2">
            </font>
          </strong> 
</p>
        <p>
          <strong>
            <font color="#0000ff" size="2">
            </font>
          </strong> 
</p>
        <p>
          <strong>
            <font color="#0000ff" size="2">
            </font>
          </strong> 
</p>
        <p>
          <strong>
            <font color="#0000ff" size="2">
            </font>
          </strong> 
</p>
        <p>
          <strong>
            <font color="#0000ff" size="2">
            </font>
          </strong>
        </p>
        <img width="0" height="0" src="http://blog.ilovedoudou.com/aggbug.ashx?id=205ad14d-1123-4af7-9e85-7c02b4eb649a" />
      </body>
      <title>Summary of HTTP Developer&amp;rsquo;s Handbook (part 3)</title>
      <guid isPermaLink="false">http://blog.ilovedoudou.com/PermaLink,guid,205ad14d-1123-4af7-9e85-7c02b4eb649a.aspx</guid>
      <link>http://blog.ilovedoudou.com/PermaLink,guid,205ad14d-1123-4af7-9e85-7c02b4eb649a.aspx</link>
      <pubDate>Sat, 06 Mar 2010 20:56:19 GMT</pubDate>
      <description>&lt;p&gt;
&lt;strong&gt;&lt;font color="#0000ff" size="2"&gt;Maintaining State&lt;/font&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
If a unique response per client is desired, something in the HTTP request itself must
be unique.
&lt;/p&gt;
&lt;p&gt;
Once a method of state management has been established, you need only to authenticate
the user once. &lt;a name="idd1e20028"&gt;&lt;/a&gt;Because state management provides a way to
identify a Web client, user identification simply requires that you remember which
user is associated with which client upon authentication. 
&lt;p&gt;
&lt;a href="0672324547_"&gt;&lt;img border="0" src="FILES/pixel.gif" width="1" height="1"&gt;&lt;/a&gt; 
&lt;p&gt;
When I speak of maintaining state,&lt;a name="idd1e20042"&gt;&lt;/a&gt;&lt;a name="idd1e20047"&gt;&lt;/a&gt;&lt;a name="idd1e20050"&gt;&lt;/a&gt; I
am only speaking of client identification, which is accomplished by associating &lt;strong&gt;multiple&lt;/strong&gt; HTTP
requests. 
&lt;p&gt;
Maintaining session, &lt;a name="idd1e20057"&gt;&lt;/a&gt;on the other hand, requires two related
tasks: 
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;
Identifying the client (state management)
&lt;/p&gt;
&lt;li&gt;
&lt;p&gt;
Retaining information about the client
&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Although cookies are most often described in conversation as if they are entities
(for example, "a Web server sends you a cookie"), they are much easier to understand
at a functional level if you consider them an extension of the HTTP protocol, which
is actually more correct. Cookies can be defined as the addition of two HTTP headers&lt;a name="idd1e20166"&gt;&lt;/a&gt;&lt;a name="idd1e20173"&gt;&lt;/a&gt;&lt;a name="idd1e20176"&gt;&lt;/a&gt;&lt;a name="idd1e20181"&gt;&lt;/a&gt;&lt;a name="idd1e20188"&gt;&lt;/a&gt;&lt;a name="idd1e20191"&gt;&lt;/a&gt;: 
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;
&lt;tt&gt;Set-Cookie&lt;/tt&gt; response header
&lt;/p&gt;
&lt;li&gt;
&lt;p&gt;
&lt;tt&gt;Cookie&lt;/tt&gt; request header
&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;a href="http://blog.ilovedoudou.com/content/binary/WindowsLiveWriter/SummaryofHTTPDevelopersHandbookpart3_E00E/image_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 0px 20px 0px 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" align="left" src="http://blog.ilovedoudou.com/content/binary/WindowsLiveWriter/SummaryofHTTPDevelopersHandbookpart3_E00E/image_thumb.png" width="375" height="449"&gt;&lt;/a&gt; 
&lt;p&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; A common question seen on mailing lists and discussion forums for
Web developers is how to test whether the client is accepting cookies, and many people
do not understand the answer. As is evident in &lt;a href="#ch11fig003"&gt;Figure 11.3&lt;/a&gt;,
it is impossible to determine whether the client accepted the cookie until the second
request is sent (step 3 in the figure). If the cookie is included in the second request,
the client accepted it. If not, the client rejected it.
&lt;/p&gt;
&lt;p&gt;
Some developers choose to force the issue of determining whether the client accepts
cookies by redirecting the client to a second URL upon entrance.
&lt;/p&gt;
&lt;p&gt;
Cookies have become a source of&lt;a name="idd1e20678"&gt;&lt;/a&gt;&lt;a name="idd1e20683"&gt;&lt;/a&gt;&lt;a name="idd1e20688"&gt;&lt;/a&gt;&lt;a name="idd1e20693"&gt;&lt;/a&gt; privacy
concern in recent years. As with most technologies in the computer industry, this
reputation has been earned by the misuse of the technology more than the technology
itself.
&lt;/p&gt;
&lt;p&gt;
Whether using files or a database to store the session information, there are three
basic elements you will want to store for each session's record:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;
Unique identifier
&lt;/p&gt;
&lt;li&gt;
&lt;p&gt;
Timestamp of last access
&lt;/p&gt;
&lt;li&gt;
&lt;p&gt;
Client data
&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;a href="http://blog.ilovedoudou.com/content/binary/WindowsLiveWriter/SummaryofHTTPDevelopersHandbookpart3_E00E/image_4.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blog.ilovedoudou.com/content/binary/WindowsLiveWriter/SummaryofHTTPDevelopersHandbookpart3_E00E/image_thumb_1.png" width="454" height="305"&gt;&lt;/a&gt; 
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&lt;font color="#0000ff" size="2"&gt;&lt;strong&gt;Improve the performance&lt;/strong&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
Caching can refer to many concepts. &lt;a name="idd1e22437"&gt;&lt;/a&gt;The general meaning of
cache is to store a copy of something to prevent the necessity of retrieving it again.
When speaking of Web development, there are three main types of caching: 
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;
Caching on the server— Storing&lt;a name="idd1e22455"&gt;&lt;/a&gt;&lt;a name="idd1e22460"&gt;&lt;/a&gt; a
complete or partially generated resource on the server to keep from having to regenerate
it.
&lt;/p&gt;
&lt;li&gt;
&lt;p&gt;
Caching on the client— Storing&lt;a name="idd1e22478"&gt;&lt;/a&gt;&lt;a name="idd1e22483"&gt;&lt;/a&gt; a
resource on the client to keep from having to receive the entire resource again.
&lt;/p&gt;
&lt;li&gt;
&lt;p&gt;
Proxy caching— Storing&lt;a name="idd1e22501"&gt;&lt;/a&gt;&lt;a name="idd1e22506"&gt;&lt;/a&gt; a resource
on a proxy to allow direct replies to an HTTP request rather than having to receive
the entire resource from the origin server again.
&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Although there are many side advantages &lt;a name="idd1e22513"&gt;&lt;/a&gt;&lt;a name="idd1e22518"&gt;&lt;/a&gt;to
caching, there are three core benefits: 
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;
Improve response time from a user perspective— This is what most Web developers focus
on, the user experience.
&lt;/p&gt;
&lt;li&gt;
&lt;p&gt;
Lessen network load— Many Web developers overlook this metric because bandwidth is
often viewed as an expendable resource, where more can be purchased as needed.
&lt;/p&gt;
&lt;li&gt;
&lt;p&gt;
Lessen server load— This metric is more difficult to overlook, as it directly impacts
the user experience in terms of performance and reliability (stressed servers fail
more often).
&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;strong&gt;&lt;font color="#0000ff" size="2"&gt;&lt;/font&gt;&lt;/strong&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;&lt;font color="#0000ff" size="2"&gt;&lt;/font&gt;&lt;/strong&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;&lt;font color="#0000ff" size="2"&gt;&lt;/font&gt;&lt;/strong&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;&lt;font color="#0000ff" size="2"&gt;&lt;/font&gt;&lt;/strong&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;&lt;font color="#0000ff" size="2"&gt;&lt;/font&gt;&lt;/strong&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;&lt;font color="#0000ff" size="2"&gt;&lt;/font&gt;&lt;/strong&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;&lt;font color="#0000ff" size="2"&gt;&lt;/font&gt;&lt;/strong&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;&lt;font color="#0000ff" size="2"&gt;&lt;/font&gt;&lt;/strong&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;&lt;font color="#0000ff" size="2"&gt;&lt;/font&gt;&lt;/strong&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;&lt;font color="#0000ff" size="2"&gt;&lt;/font&gt;&lt;/strong&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;&lt;font color="#0000ff" size="2"&gt;&lt;/font&gt;&lt;/strong&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;&lt;font color="#0000ff" size="2"&gt;&lt;/font&gt;&lt;/strong&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;&lt;font color="#0000ff" size="2"&gt;&lt;/font&gt;&lt;/strong&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;&lt;font color="#0000ff" size="2"&gt;&lt;/font&gt;&lt;/strong&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;&lt;font color="#0000ff" size="2"&gt;&lt;/font&gt;&lt;/strong&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;&lt;font color="#0000ff" size="2"&gt;&lt;/font&gt;&lt;/strong&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;&lt;font color="#0000ff" size="2"&gt;&lt;/font&gt;&lt;/strong&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;&lt;font color="#0000ff" size="2"&gt;&lt;/font&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.ilovedoudou.com/aggbug.ashx?id=205ad14d-1123-4af7-9e85-7c02b4eb649a" /&gt;</description>
      <comments>http://blog.ilovedoudou.com/CommentView,guid,205ad14d-1123-4af7-9e85-7c02b4eb649a.aspx</comments>
      <category>Life / Career;Web</category>
    </item>
    <item>
      <trackback:ping>http://blog.ilovedoudou.com/Trackback.aspx?guid=446f37a8-bb6b-41e2-875d-b60efc20ff94</trackback:ping>
      <pingback:server>http://blog.ilovedoudou.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.ilovedoudou.com/PermaLink,guid,446f37a8-bb6b-41e2-875d-b60efc20ff94.aspx</pingback:target>
      <dc:creator>Kevin Mocha</dc:creator>
      <wfw:comment>http://blog.ilovedoudou.com/CommentView,guid,446f37a8-bb6b-41e2-875d-b60efc20ff94.aspx</wfw:comment>
      <wfw:commentRss>http://blog.ilovedoudou.com/SyndicationService.asmx/GetEntryCommentsRss?guid=446f37a8-bb6b-41e2-875d-b60efc20ff94</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
It is important to remember that an HTTP response completes the HTTP transaction.
Many people new to Web development have a difficult time distinguishing between server-side
code (code that executes on the server) and client-side code (code that executes on
the client). Scripting languages such as PHP, ColdFusion, and JSP are executed on
the server, and their output is included in the HTTP response. In fact, their output
is the content of the HTTP response, and most modern Web scripting languages also
allow for some manipulation of the HTTP as well, such as altering or adding headers,
changing status codes, and so on. Once the Web client receives the HTTP response,
the transaction is complete. The Web client will then render the page, execute client-side
scripts such as JavaScript, load images (by issuing separate <tt>GET</tt> requests),
and so on. 
</p>
        <p>
  
</p>
        <p>
          <em>
            <font color="#0080c0">With HTTP/1.1, persistent connections are the default behavior.
This means that the Web server will not close the connection after sending the HTTP
response unless the client intends to close the connection after receiving it. In
this case, the client will include the following header in the HTTP request:</font>
          </em>
        </p>
        <pre>
          <em>
            <font color="#0080c0">Connection: close </font>
          </em>
        </pre>
        <p>
          <em>
            <font color="#0080c0">Alternatively, the server can close the connection upon
sending the HTTP response, although it should be polite and include the same header
as shown previously so that the Web client expects this action.</font>
          </em>
        </p>
        <p>
          <em>
            <font color="#0080c0">
            </font>
          </em>  
</p>
        <p>
An HTTP response is broken into the following three logical pieces: 
</p>
        <ul>
          <li>
            <p>
Status line<a name="idd1e10818"></a><a name="idd1e10825"></a><a name="idd1e10832"></a><a name="idd1e10839"></a></p>
          </li>
          <li>
            <p>
HTTP headers<a name="idd1e10847"></a><a name="idd1e10854"></a><a name="idd1e10861"></a><a name="idd1e10868"></a><a name="idd1e10871"></a></p>
          </li>
          <li>
            <p>
Content<a name="idd1e10881"></a><a name="idd1e10888"></a><a name="idd1e10895"></a><a name="idd1e10902"></a></p>
          </li>
        </ul>
        <p>
An example status line is as follows:
</p>
        <pre>HTTP/1.1 200 OK </pre>
        <p>
The status line contains three elements: 
</p>
        <ul>
          <li>
            <p>
The version of HTTP being used, in the format <tt>HTTP/</tt><tt>x.x</tt></p>
          </li>
          <li>
            <p>
The status code
</p>
          </li>
          <li>
            <p>
A short description of the status code
</p>
          </li>
        </ul>
        <p>
There are three types of HTTP headers allowed in a response: 
</p>
        <ul>
          <li>
            <p>
General headers
</p>
          </li>
          <li>
            <p>
Response headers
</p>
          </li>
          <li>
            <p>
Entity headers
</p>
          </li>
        </ul>
        <p>
  
</p>
        <p>
Status codes are grouped into the following ranges: 
</p>
        <ul>
          <li>
            <p>
Informational (100-199)
</p>
          </li>
          <li>
            <p>
Successful (200-299)
</p>
          </li>
          <li>
            <p>
Redirection (300-399)
</p>
          </li>
          <li>
            <p>
Client error (400-499)
</p>
          </li>
          <li>
            <p>
Server error (500-599)
</p>
          </li>
        </ul>
        <p>
  
</p>
        <ul>
          <li>
100 Continue</li>
          <li>
101 Switching Protocols</li>
          <li>
200 OK</li>
          <li>
400 Bad Request</li>
          <li>
401 Unauthorized</li>
          <li>
403 Forbidden</li>
          <li>
404 Not Found</li>
          <li>
500 Internal Server Error</li>
          <li>
502 Bad Gateway</li>
          <li>
503 Service Unavailable</li>
        </ul>
        <p>
          <tt>Content-Disposition</tt>, combined with a proper <tt>Content-Type</tt> header,
provides the developer absolute control over the interpretation of the resource's
media type<a name="idd1e19751"></a><a name="idd1e19758"></a><a name="idd1e19765"></a><a name="idd1e19772"></a><a name="idd1e19775"></a>.
</p>
        <img width="0" height="0" src="http://blog.ilovedoudou.com/aggbug.ashx?id=446f37a8-bb6b-41e2-875d-b60efc20ff94" />
      </body>
      <title>Summary of HTTP Developer&amp;rsquo;s Handbook (part2)</title>
      <guid isPermaLink="false">http://blog.ilovedoudou.com/PermaLink,guid,446f37a8-bb6b-41e2-875d-b60efc20ff94.aspx</guid>
      <link>http://blog.ilovedoudou.com/PermaLink,guid,446f37a8-bb6b-41e2-875d-b60efc20ff94.aspx</link>
      <pubDate>Sat, 06 Mar 2010 05:51:07 GMT</pubDate>
      <description>&lt;p&gt;
It is important to remember that an HTTP response completes the HTTP transaction.
Many people new to Web development have a difficult time distinguishing between server-side
code (code that executes on the server) and client-side code (code that executes on
the client). Scripting languages such as PHP, ColdFusion, and JSP are executed on
the server, and their output is included in the HTTP response. In fact, their output
is the content of the HTTP response, and most modern Web scripting languages also
allow for some manipulation of the HTTP as well, such as altering or adding headers,
changing status codes, and so on. Once the Web client receives the HTTP response,
the transaction is complete. The Web client will then render the page, execute client-side
scripts such as JavaScript, load images (by issuing separate &lt;tt&gt;GET&lt;/tt&gt; requests),
and so on. 
&lt;p&gt;
&amp;nbsp; 
&lt;p&gt;
&lt;em&gt;&lt;font color="#0080c0"&gt;With HTTP/1.1, persistent connections are the default behavior.
This means that the Web server will not close the connection after sending the HTTP
response unless the client intends to close the connection after receiving it. In
this case, the client will include the following header in the HTTP request:&lt;/font&gt;&lt;/em&gt;&lt;pre&gt;&lt;em&gt;&lt;font color="#0080c0"&gt;Connection:
close &lt;/font&gt;&lt;/em&gt;&lt;/pre&gt;
&lt;p&gt;
&lt;em&gt;&lt;font color="#0080c0"&gt;Alternatively, the server can close the connection upon
sending the HTTP response, although it should be polite and include the same header
as shown previously so that the Web client expects this action.&lt;/font&gt;&lt;/em&gt; 
&lt;p&gt;
&lt;em&gt;&lt;font color="#0080c0"&gt;&lt;/font&gt;&lt;/em&gt;&amp;nbsp; 
&lt;p&gt;
An HTTP response is broken into the following three logical pieces: 
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;
Status line&lt;a name="idd1e10818"&gt;&lt;/a&gt;&lt;a name="idd1e10825"&gt;&lt;/a&gt;&lt;a name="idd1e10832"&gt;&lt;/a&gt;&lt;a name="idd1e10839"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;li&gt;
&lt;p&gt;
HTTP headers&lt;a name="idd1e10847"&gt;&lt;/a&gt;&lt;a name="idd1e10854"&gt;&lt;/a&gt;&lt;a name="idd1e10861"&gt;&lt;/a&gt;&lt;a name="idd1e10868"&gt;&lt;/a&gt;&lt;a name="idd1e10871"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;li&gt;
&lt;p&gt;
Content&lt;a name="idd1e10881"&gt;&lt;/a&gt;&lt;a name="idd1e10888"&gt;&lt;/a&gt;&lt;a name="idd1e10895"&gt;&lt;/a&gt;&lt;a name="idd1e10902"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
An example status line is as follows:&lt;pre&gt;HTTP/1.1 200 OK &lt;/pre&gt;
&lt;p&gt;
The status line contains three elements: 
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;
The version of HTTP being used, in the format &lt;tt&gt;HTTP/&lt;/tt&gt;&lt;tt&gt;x.x&lt;/tt&gt;
&lt;/p&gt;
&lt;li&gt;
&lt;p&gt;
The status code
&lt;/p&gt;
&lt;li&gt;
&lt;p&gt;
A short description of the status code
&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
There are three types of HTTP headers allowed in a response: 
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;
General headers
&lt;/p&gt;
&lt;li&gt;
&lt;p&gt;
Response headers
&lt;/p&gt;
&lt;li&gt;
&lt;p&gt;
Entity headers
&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&amp;nbsp; 
&lt;p&gt;
Status codes are grouped into the following ranges: 
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;
Informational (100-199)
&lt;/p&gt;
&lt;li&gt;
&lt;p&gt;
Successful (200-299)
&lt;/p&gt;
&lt;li&gt;
&lt;p&gt;
Redirection (300-399)
&lt;/p&gt;
&lt;li&gt;
&lt;p&gt;
Client error (400-499)
&lt;/p&gt;
&lt;li&gt;
&lt;p&gt;
Server error (500-599)
&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&amp;nbsp; 
&lt;ul&gt;
&lt;li&gt;
100 Continue&lt;/li&gt;
&lt;li&gt;
101 Switching Protocols&lt;/li&gt;
&lt;li&gt;
200 OK&lt;/li&gt;
&lt;li&gt;
400 Bad Request&lt;/li&gt;
&lt;li&gt;
401 Unauthorized&lt;/li&gt;
&lt;li&gt;
403 Forbidden&lt;/li&gt;
&lt;li&gt;
404 Not Found&lt;/li&gt;
&lt;li&gt;
500 Internal Server Error&lt;/li&gt;
&lt;li&gt;
502 Bad Gateway&lt;/li&gt;
&lt;li&gt;
503 Service Unavailable&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;tt&gt;Content-Disposition&lt;/tt&gt;, combined with a proper &lt;tt&gt;Content-Type&lt;/tt&gt; header,
provides the developer absolute control over the interpretation of the resource's
media type&lt;a name="idd1e19751"&gt;&lt;/a&gt;&lt;a name="idd1e19758"&gt;&lt;/a&gt;&lt;a name="idd1e19765"&gt;&lt;/a&gt;&lt;a name="idd1e19772"&gt;&lt;/a&gt;&lt;a name="idd1e19775"&gt;&lt;/a&gt;.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.ilovedoudou.com/aggbug.ashx?id=446f37a8-bb6b-41e2-875d-b60efc20ff94" /&gt;</description>
      <comments>http://blog.ilovedoudou.com/CommentView,guid,446f37a8-bb6b-41e2-875d-b60efc20ff94.aspx</comments>
      <category>Life / Career;Web</category>
    </item>
    <item>
      <trackback:ping>http://blog.ilovedoudou.com/Trackback.aspx?guid=7ecba085-7f36-425a-a981-0379927704ac</trackback:ping>
      <pingback:server>http://blog.ilovedoudou.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.ilovedoudou.com/PermaLink,guid,7ecba085-7f36-425a-a981-0379927704ac.aspx</pingback:target>
      <dc:creator>Kevin Mocha</dc:creator>
      <wfw:comment>http://blog.ilovedoudou.com/CommentView,guid,7ecba085-7f36-425a-a981-0379927704ac.aspx</wfw:comment>
      <wfw:commentRss>http://blog.ilovedoudou.com/SyndicationService.asmx/GetEntryCommentsRss?guid=7ecba085-7f36-425a-a981-0379927704ac</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
 
</p>
        <table border="0" cellspacing="0" cellpadding="2" width="400">
          <tbody>
            <tr>
              <td valign="top" width="200">
                <a href="http://blog.ilovedoudou.com/content/binary/WindowsLiveWriter/SummaryofHTTPDevelopersHandbookpart1_EF0F/image_2.png">
                  <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blog.ilovedoudou.com/content/binary/WindowsLiveWriter/SummaryofHTTPDevelopersHandbookpart1_EF0F/image_thumb.png" width="337" height="342" />
                </a>
              </td>
              <td valign="top" width="200">
                <a href="http://blog.ilovedoudou.com/content/binary/WindowsLiveWriter/SummaryofHTTPDevelopersHandbookpart1_EF0F/image_4.png">
                  <img style="border-bottom: 0px; border-left: 0px; margin: 0px auto; display: block; float: none; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blog.ilovedoudou.com/content/binary/WindowsLiveWriter/SummaryofHTTPDevelopersHandbookpart1_EF0F/image_thumb_1.png" width="285" height="180" />
                </a>
                <a href="http://blog.ilovedoudou.com/content/binary/WindowsLiveWriter/SummaryofHTTPDevelopersHandbookpart1_EF0F/image_6.png">
                  <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blog.ilovedoudou.com/content/binary/WindowsLiveWriter/SummaryofHTTPDevelopersHandbookpart1_EF0F/image_thumb_2.png" width="284" height="205" />
                </a>
              </td>
            </tr>
          </tbody>
        </table>
        <p>
        </p>
        <p>
        </p>
        <p>
Server: new a socket –&gt; bind to listen port –&gt; Accept a connection –&gt; send/receive
–&gt;close<br />
Client: new a socket –&gt; connect –&gt;send/receive –&gt; close
</p>
        <p>
          <tt>http://myname:mypass@httphandbook.org:80/mydir/myfile.html?myvar=myvalue#myfrag</tt>
        </p>
        <p>
          <a href="http://blog.ilovedoudou.com/content/binary/WindowsLiveWriter/SummaryofHTTPDevelopersHandbookpart1_EF0F/image_8.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blog.ilovedoudou.com/content/binary/WindowsLiveWriter/SummaryofHTTPDevelopersHandbookpart1_EF0F/image_thumb_3.png" width="440" height="162" />
          </a>
        </p>
        <p>
HTTP is often referred to as a <a name="idd1e5821"></a><a name="idd1e5824"></a><a name="idd1e5829"></a>stateless
protocol. Although this is accurate, it does little to explain the nature of the Web.
All this means, however, is that each transaction is atomic, and there is nothing
required by HTTP that associates one request with another. A transaction refers to
a single HTTP request and the corresponding HTTP response.
</p>
        <p>
When I<a name="idd1e5845"></a><a name="idd1e5852"></a><a name="idd1e5859"></a><a name="idd1e5866"></a> speak
of a connection in HTTP, I refer to a TCP connection. 
</p>
        <p>
A single connection can support multiple HTTP transactions. In many cases, multiple
HTTP transactions are required to properly render a URL in a Web browser due to images
and other associated content. 
</p>
        <p>
        </p>
        <p>
          <a href="http://blog.ilovedoudou.com/content/binary/WindowsLiveWriter/SummaryofHTTPDevelopersHandbookpart1_EF0F/image_10.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blog.ilovedoudou.com/content/binary/WindowsLiveWriter/SummaryofHTTPDevelopersHandbookpart1_EF0F/image_thumb_4.png" width="298" height="118" />
          </a>
        </p>
        <p>
          <strong>Get and Post</strong>
        </p>
        <p>
GET and POST basically allow information to be sent back to the webserver from a browser
(or other HTTP client for that matter). 
</p>
        <p>
Imagine that you have a form on a HTML page and clicking the "submit" button sends
the data in the form back to the server, as "name=value" pairs. 
</p>
        <p>
Choosing GET as the "method" will append all of the data to the URL and it will show
up in the URL bar of your browser. The amount of information you can send back using
a GET is restricted as URLs can only be 1024 characters. 
</p>
        <p>
A POST on the other hand will (typically) send the information through a socket back
to the webserver and it won't show up in the URL bar. You can send much more information
to the server this way - and it's not restricted to textual data either. It is possible
to send files and even binary data such as serialized Java objects! 
</p>
        <p>
A PUT allows you to "put" (upload) a resource (file) on to a webserver so that it
be found under a specified URI. DELETE allows you to delete a resource (file). These
are both additions to HTTP/1.1 and are not usually used. HEAD returns just the HTTP
headers for a resource. TRACE and OPTIONS are also HTTP/1.1 additions and also rarely
used. 
</p>
        <p>
 
</p>
        <p>
Although client-side data validation can add to user convenience by avoiding unnecessary
HTTP transactions, you should never depend on this technique to ensure the data is
valid.
</p>
        <pre>
          <em>GET /search?hl=en&amp;q=HTTP&amp;btnG=Google+Search HTTP/1.1 Host: www.google.com
User-Agent: Mozilla/5.0 Galeon/1.2.0 (X11; Linux i686; U;) Gecko/20020326 Accept:
text/xml,application/xml,application/xhtml+xml,text/html;q=0.9, text/plain;q=0.8,
video/x-mng,image/png,image/jpeg,image/gif;q=0.2, text/css,*/*;q=0.1 Accept-Language:
en Accept-Encoding: gzip, deflate, compress;q=0.9 Accept-Charset: ISO-8859-1, utf-8;q=0.66,
*;q=0.66 Keep-Alive: 300 Connection: keep-alive</em>
        </pre>
        <p>
Broken down, the request line is 
</p>
        <p>
  
</p>
        <p>
An <strong>HTTP request</strong>, which is<a name="idd1e6935"></a><a name="idd1e6940"></a> the
message sent from a Web client to a Web server, is comprised of three basic elements: 
</p>
        <ul>
          <li>
            <p>
Request line<a name="idd1e6953"></a><a name="idd1e6960"></a><a name="idd1e6967"></a></p>
          </li>
          <li>
            <p>
HTTP headers<a name="idd1e6975"></a><a name="idd1e6982"></a><a name="idd1e6989"></a></p>
          </li>
          <li>
            <p>
Content<a name="idd1e6997"></a><a name="idd1e7004"></a><a name="idd1e7011"></a></p>
          </li>
        </ul>
        <p>
The first line of an HTTP request is always the request line. The request line specifies
the request method, the location of the resource, and the version of HTTP being used.
These three elements are delimited by spaces. For example:
</p>
        <pre>GET / HTTP/1.1 </pre>
        <p>
This example specifies the <tt>GET</tt> request method, the resource located at <tt>/</tt> (document
root), and <tt>HTTP/1.1</tt> as the version of protocol used. 
</p>
        <p>
  
</p>
        <p>
The second section of an HTTP request is the headers. HTTP headers include supporting
information that can help to explain the Web client's request more clearly. There
are three types of HTTP headers that can appear<a name="idd1e7039"></a><a name="idd1e7046"></a><a name="idd1e7053"></a> in
a request: 
</p>
        <ul>
          <li>
            <p>
General headers<a name="idd1e7064"></a><a name="idd1e7071"></a><a name="idd1e7078"></a><a name="idd1e7083"></a></p>
          </li>
          <li>
            <p>
Request headers<a name="idd1e7091"></a><a name="idd1e7096"></a></p>
          </li>
          <li>
            <p>
Entity headers<a name="idd1e7104"></a><a name="idd1e7109"></a></p>
          </li>
        </ul>
        <p>
There is no requirement pertaining to the order of the headers. Also, because entity
headers specify information about the content, they are rarely present in HTTP requests. 
</p>
        <p>
  
</p>
        <p>
In general, it is fairly easy to discern which category a header belongs to. Request
headers specifically relate to something unique to an HTTP request, such as the <tt>User-</tt><tt>Agent</tt> header
which identifies the client software being used. General headers are common headers
that can (at least theoretically) be used in either an HTTP request or an HTTP response.
Entity headers relay information about the content itself (the entity). As this request
has no content, it also lacks entity headers. 
</p>
        <p>
  
</p>
        <p>
There are eight request methods in HTTP/1.1: <tt>GET</tt>, <tt>POST</tt>, <tt>PUT</tt>, <tt>DELETE</tt>, <tt>HEAD</tt>, <tt>TRACE</tt>, <tt>OPTIONS</tt>,
and <tt>CONNECT</tt>. HTTP/1.0 specifies three methods (<strong><tt>GET</tt>, <tt>HEAD</tt>,
and <tt>POST</tt></strong>), although four others are implemented by some servers
and clients claiming to be HTTP/1.0. The support for these four other methods (<tt>PUT</tt>, <tt>DELETE</tt>, <tt>LINK</tt>,
and <tt>UNLINK</tt>) is inconsistent and mostly undefined, although they are each
briefly referenced in Appendix D of RFC 1945, the HTTP/1.0 specification. 
</p>
        <p>
  
</p>
        <p>
A <tt><strong><font color="#0000ff">GET</font></strong></tt> request is basically
a request to receive the content located at a specific URL. Obtaining a URL using
the <tt>GET</tt> method allows users to bookmark the URL, create a link to the URL,
email the URL to a friend, and the like. There is a limited amount of data that can
be sent from the Web client using get, and this limit is very inconsistently implemented. 
</p>
        <p>
  
</p>
        <p>
The <tt><strong><font color="#0000ff">POST</font></strong></tt> method is commonly
supported by browsers as a method of submitting form data. 
<br />
As with the query string of a URL, the data in a <tt>POST</tt> consists of name/value
pairs separated by the <tt>&amp;</tt> character. Special characters are URL encoded,
and the <tt>Content-Type</tt> header references this fact. 
</p>
        <p>
  
</p>
        <p>
For many forms, the <tt>POST</tt> method is preferable. 
</p>
        <p>
  
</p>
        <p>
The <tt><strong><font color="#0000ff">PUT</font></strong></tt> method is not<a name="idd1e7782"></a><a name="idd1e7789"></a><a name="idd1e7796"></a><a name="idd1e7801"></a><a name="idd1e7808"></a><a name="idd1e7811"></a> nearly
as common as <tt>GET</tt> or <tt>POST</tt>. However, it is useful in certain situations
because it allows the Web client to send content that will be stored on the Web server.<br />
It should be noted that the <tt>PUT</tt> method is very rarely implemented in Web
clients. A common misconception is that the <tt>PUT</tt> method is required for uploading
files. However, this capability is actually an enhancement to the <tt>POST</tt> method
as identified in RFC 1867, "Form-based File Upload in HTML". 
</p>
        <p>
  
</p>
        <p>
          <tt>
            <font color="#0000ff">HEAD</font>
          </tt> is a very useful <a name="idd1e8021"></a><a name="idd1e8028"></a><a name="idd1e8035"></a><a name="idd1e8040"></a><a name="idd1e8047"></a><a name="idd1e8050"></a>request
method for people who are interested in finding out more information about the way
a certain transaction behaves. The <tt>HEAD</tt> method is supposed to behave exactly
like <tt>GET</tt>, except that the content is not present. Thus, <tt>HEAD</tt> is
like a normal <tt>GET</tt> request with all of the HTML stripped away. 
</p>
        <p>
  
</p>
        <p>
          <tt>
            <font color="#0000ff">TRACE</font>
          </tt> is another diagnostic<a name="idd1e8157"></a><a name="idd1e8164"></a><a name="idd1e8171"></a><a name="idd1e8176"></a><a name="idd1e8183"></a><a name="idd1e8186"></a> request
method. This method allows the client to gain more perspective into any intermediary
proxies that lie between the client and the server. As each proxy forwards the <tt>TRACE</tt> request
on route to the destination Web server, it will add itself to the <tt>Via</tt> header,
with the first proxy being responsible for adding the <tt>Via</tt> header. When the
response is given, the content is actually the final request including the <tt>Via</tt> header. 
</p>
        <p>
  
</p>
        <p>
Sometimes it is helpful to <a name="idd1e8236"></a><a name="idd1e8243"></a><a name="idd1e8250"></a><a name="idd1e8255"></a><a name="idd1e8262"></a><a name="idd1e8265"></a>simply
identify the capabilities of the Web server you want to interact with prior to actually
making a request. For this purpose, HTTP provides the <tt><font color="#0000ff"><strong>OPTIONS</strong></font></tt> request
method. 
</p>
        <p>
  
</p>
        <p>
The <tt>CONNECT</tt> request method is<a name="idd1e8376"></a><a name="idd1e8383"></a><a name="idd1e8390"></a><a name="idd1e8395"></a><a name="idd1e8402"></a><a name="idd1e8405"></a> reserved
explicitly for use by intermediary servers to create a tunnel to the destination server.
The intermediary, not the HTTP client, issues the <tt><font color="#0000ff"><strong>CONNECT</strong></font></tt> request
to the destination server.<br />
The most common use of the <tt>CONNECT</tt> method is by a Web client that must use
a proxy to request a secure resource using SSL (Secure Sockets Layer) or TLS (Transport
Layer Security). The client will tunnel the request through the proxy so that the
proxy will simply route the HTTP messages to and from the Web server without trying
to examine or interpret them. 
</p>
        <p>
 
</p>
        <p>
Accept Header
</p>
        <p>
Authorization Header<br />
Once the browser has successfully authenticated with a Web server in this way, it
will appear to a user as if all further requests do not require reauthentication.
However, due to the stateless nature of the Web, every request must include the <tt>Authorization</tt> header,
otherwise the server will respond with a <tt>401 Unauthorized</tt> response. The convenient
behavior of most modern Web browsers involves the browser storing the access credentials
and sending the <tt>Authorization</tt> header with all HTTP requests for a URL within
a domain previously discovered to be protected. Because this utilizes the browser's
memory, this convenience lasts as long as the browser (at least one instance of the
browser) remains active, and the user will be unaware that this authentication takes
place in subsequent requests. This can be a very important factor when debugging HTTP
authentication, because if you receive a <tt>401 Unauthorized</tt> response without
being prompted for a username and password, this suggests that the browser is using
incorrect credentials in the <tt>Authorization</tt> header. Restarting the browser
will resolve this situation.
</p>
        <img width="0" height="0" src="http://blog.ilovedoudou.com/aggbug.ashx?id=7ecba085-7f36-425a-a981-0379927704ac" />
      </body>
      <title>Summary of HTTP Developer&amp;rsquo;s Handbook (part1)</title>
      <guid isPermaLink="false">http://blog.ilovedoudou.com/PermaLink,guid,7ecba085-7f36-425a-a981-0379927704ac.aspx</guid>
      <link>http://blog.ilovedoudou.com/PermaLink,guid,7ecba085-7f36-425a-a981-0379927704ac.aspx</link>
      <pubDate>Fri, 05 Mar 2010 21:58:27 GMT</pubDate>
      <description>&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;table border="0" cellspacing="0" cellpadding="2" width="400"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign="top" width="200"&gt;
&lt;a href="http://blog.ilovedoudou.com/content/binary/WindowsLiveWriter/SummaryofHTTPDevelopersHandbookpart1_EF0F/image_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blog.ilovedoudou.com/content/binary/WindowsLiveWriter/SummaryofHTTPDevelopersHandbookpart1_EF0F/image_thumb.png" width="337" height="342"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td valign="top" width="200"&gt;
&lt;a href="http://blog.ilovedoudou.com/content/binary/WindowsLiveWriter/SummaryofHTTPDevelopersHandbookpart1_EF0F/image_4.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 0px auto; display: block; float: none; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blog.ilovedoudou.com/content/binary/WindowsLiveWriter/SummaryofHTTPDevelopersHandbookpart1_EF0F/image_thumb_1.png" width="285" height="180"&gt;&lt;/a&gt; &lt;a href="http://blog.ilovedoudou.com/content/binary/WindowsLiveWriter/SummaryofHTTPDevelopersHandbookpart1_EF0F/image_6.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blog.ilovedoudou.com/content/binary/WindowsLiveWriter/SummaryofHTTPDevelopersHandbookpart1_EF0F/image_thumb_2.png" width="284" height="205"&gt;&lt;/a&gt; 
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
Server: new a socket –&amp;gt; bind to listen port –&amp;gt; Accept a connection –&amp;gt; send/receive
–&amp;gt;close&lt;br&gt;
Client: new a socket –&amp;gt; connect –&amp;gt;send/receive –&amp;gt; close
&lt;/p&gt;
&lt;p&gt;
&lt;tt&gt;http://myname:mypass@httphandbook.org:80/mydir/myfile.html?myvar=myvalue#myfrag&lt;/tt&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://blog.ilovedoudou.com/content/binary/WindowsLiveWriter/SummaryofHTTPDevelopersHandbookpart1_EF0F/image_8.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blog.ilovedoudou.com/content/binary/WindowsLiveWriter/SummaryofHTTPDevelopersHandbookpart1_EF0F/image_thumb_3.png" width="440" height="162"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
HTTP is often referred to as a &lt;a name="idd1e5821"&gt;&lt;/a&gt;&lt;a name="idd1e5824"&gt;&lt;/a&gt;&lt;a name="idd1e5829"&gt;&lt;/a&gt;stateless
protocol. Although this is accurate, it does little to explain the nature of the Web.
All this means, however, is that each transaction is atomic, and there is nothing
required by HTTP that associates one request with another. A transaction refers to
a single HTTP request and the corresponding HTTP response.
&lt;/p&gt;
&lt;p&gt;
When I&lt;a name="idd1e5845"&gt;&lt;/a&gt;&lt;a name="idd1e5852"&gt;&lt;/a&gt;&lt;a name="idd1e5859"&gt;&lt;/a&gt;&lt;a name="idd1e5866"&gt;&lt;/a&gt; speak
of a connection in HTTP, I refer to a TCP connection. 
&lt;/p&gt;
&lt;p&gt;
A single connection can support multiple HTTP transactions. In many cases, multiple
HTTP transactions are required to properly render a URL in a Web browser due to images
and other associated content. 
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://blog.ilovedoudou.com/content/binary/WindowsLiveWriter/SummaryofHTTPDevelopersHandbookpart1_EF0F/image_10.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blog.ilovedoudou.com/content/binary/WindowsLiveWriter/SummaryofHTTPDevelopersHandbookpart1_EF0F/image_thumb_4.png" width="298" height="118"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Get and Post&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
GET and POST basically allow information to be sent back to the webserver from a browser
(or other HTTP client for that matter). 
&lt;p&gt;
Imagine that you have a form on a HTML page and clicking the "submit" button sends
the data in the form back to the server, as "name=value" pairs. 
&lt;p&gt;
Choosing GET as the "method" will append all of the data to the URL and it will show
up in the URL bar of your browser. The amount of information you can send back using
a GET is restricted as URLs can only be 1024 characters. 
&lt;p&gt;
A POST on the other hand will (typically) send the information through a socket back
to the webserver and it won't show up in the URL bar. You can send much more information
to the server this way - and it's not restricted to textual data either. It is possible
to send files and even binary data such as serialized Java objects! 
&lt;p&gt;
A PUT allows you to "put" (upload) a resource (file) on to a webserver so that it
be found under a specified URI. DELETE allows you to delete a resource (file). These
are both additions to HTTP/1.1 and are not usually used. HEAD returns just the HTTP
headers for a resource. TRACE and OPTIONS are also HTTP/1.1 additions and also rarely
used. 
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
Although client-side data validation can add to user convenience by avoiding unnecessary
HTTP transactions, you should never depend on this technique to ensure the data is
valid.
&lt;/p&gt;
&lt;pre&gt;&lt;em&gt;GET /search?hl=en&amp;amp;q=HTTP&amp;amp;btnG=Google+Search HTTP/1.1 Host: www.google.com
User-Agent: Mozilla/5.0 Galeon/1.2.0 (X11; Linux i686; U;) Gecko/20020326 Accept:
text/xml,application/xml,application/xhtml+xml,text/html;q=0.9, text/plain;q=0.8,
video/x-mng,image/png,image/jpeg,image/gif;q=0.2, text/css,*/*;q=0.1 Accept-Language:
en Accept-Encoding: gzip, deflate, compress;q=0.9 Accept-Charset: ISO-8859-1, utf-8;q=0.66,
*;q=0.66 Keep-Alive: 300 Connection: keep-alive&lt;/em&gt; &lt;/pre&gt;
&lt;p&gt;
Broken down, the request line is 
&lt;p&gt;
&amp;nbsp; 
&lt;p&gt;
An &lt;strong&gt;HTTP request&lt;/strong&gt;, which is&lt;a name="idd1e6935"&gt;&lt;/a&gt;&lt;a name="idd1e6940"&gt;&lt;/a&gt; the
message sent from a Web client to a Web server, is comprised of three basic elements: 
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;
Request line&lt;a name="idd1e6953"&gt;&lt;/a&gt;&lt;a name="idd1e6960"&gt;&lt;/a&gt;&lt;a name="idd1e6967"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;li&gt;
&lt;p&gt;
HTTP headers&lt;a name="idd1e6975"&gt;&lt;/a&gt;&lt;a name="idd1e6982"&gt;&lt;/a&gt;&lt;a name="idd1e6989"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;li&gt;
&lt;p&gt;
Content&lt;a name="idd1e6997"&gt;&lt;/a&gt;&lt;a name="idd1e7004"&gt;&lt;/a&gt;&lt;a name="idd1e7011"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
The first line of an HTTP request is always the request line. The request line specifies
the request method, the location of the resource, and the version of HTTP being used.
These three elements are delimited by spaces. For example:&lt;pre&gt;GET / HTTP/1.1 &lt;/pre&gt;
&lt;p&gt;
This example specifies the &lt;tt&gt;GET&lt;/tt&gt; request method, the resource located at &lt;tt&gt;/&lt;/tt&gt; (document
root), and &lt;tt&gt;HTTP/1.1&lt;/tt&gt; as the version of protocol used. 
&lt;p&gt;
&amp;nbsp; 
&lt;p&gt;
The second section of an HTTP request is the headers. HTTP headers include supporting
information that can help to explain the Web client's request more clearly. There
are three types of HTTP headers that can appear&lt;a name="idd1e7039"&gt;&lt;/a&gt;&lt;a name="idd1e7046"&gt;&lt;/a&gt;&lt;a name="idd1e7053"&gt;&lt;/a&gt; in
a request: 
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;
General headers&lt;a name="idd1e7064"&gt;&lt;/a&gt;&lt;a name="idd1e7071"&gt;&lt;/a&gt;&lt;a name="idd1e7078"&gt;&lt;/a&gt;&lt;a name="idd1e7083"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;li&gt;
&lt;p&gt;
Request headers&lt;a name="idd1e7091"&gt;&lt;/a&gt;&lt;a name="idd1e7096"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;li&gt;
&lt;p&gt;
Entity headers&lt;a name="idd1e7104"&gt;&lt;/a&gt;&lt;a name="idd1e7109"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
There is no requirement pertaining to the order of the headers. Also, because entity
headers specify information about the content, they are rarely present in HTTP requests. 
&lt;p&gt;
&amp;nbsp; 
&lt;p&gt;
In general, it is fairly easy to discern which category a header belongs to. Request
headers specifically relate to something unique to an HTTP request, such as the &lt;tt&gt;User-&lt;/tt&gt;&lt;tt&gt;Agent&lt;/tt&gt; header
which identifies the client software being used. General headers are common headers
that can (at least theoretically) be used in either an HTTP request or an HTTP response.
Entity headers relay information about the content itself (the entity). As this request
has no content, it also lacks entity headers. 
&lt;p&gt;
&amp;nbsp; 
&lt;p&gt;
There are eight request methods in HTTP/1.1: &lt;tt&gt;GET&lt;/tt&gt;, &lt;tt&gt;POST&lt;/tt&gt;, &lt;tt&gt;PUT&lt;/tt&gt;, &lt;tt&gt;DELETE&lt;/tt&gt;, &lt;tt&gt;HEAD&lt;/tt&gt;, &lt;tt&gt;TRACE&lt;/tt&gt;, &lt;tt&gt;OPTIONS&lt;/tt&gt;,
and &lt;tt&gt;CONNECT&lt;/tt&gt;. HTTP/1.0 specifies three methods (&lt;strong&gt;&lt;tt&gt;GET&lt;/tt&gt;, &lt;tt&gt;HEAD&lt;/tt&gt;,
and &lt;tt&gt;POST&lt;/tt&gt;&lt;/strong&gt;), although four others are implemented by some servers
and clients claiming to be HTTP/1.0. The support for these four other methods (&lt;tt&gt;PUT&lt;/tt&gt;, &lt;tt&gt;DELETE&lt;/tt&gt;, &lt;tt&gt;LINK&lt;/tt&gt;,
and &lt;tt&gt;UNLINK&lt;/tt&gt;) is inconsistent and mostly undefined, although they are each
briefly referenced in Appendix D of RFC 1945, the HTTP/1.0 specification. 
&lt;p&gt;
&amp;nbsp; 
&lt;p&gt;
A &lt;tt&gt;&lt;strong&gt;&lt;font color="#0000ff"&gt;GET&lt;/font&gt;&lt;/strong&gt;&lt;/tt&gt; request is basically
a request to receive the content located at a specific URL. Obtaining a URL using
the &lt;tt&gt;GET&lt;/tt&gt; method allows users to bookmark the URL, create a link to the URL,
email the URL to a friend, and the like. There is a limited amount of data that can
be sent from the Web client using get, and this limit is very inconsistently implemented. 
&lt;p&gt;
&amp;nbsp; 
&lt;p&gt;
The &lt;tt&gt;&lt;strong&gt;&lt;font color="#0000ff"&gt;POST&lt;/font&gt;&lt;/strong&gt;&lt;/tt&gt; method is commonly
supported by browsers as a method of submitting form data. 
&lt;br&gt;
As with the query string of a URL, the data in a &lt;tt&gt;POST&lt;/tt&gt; consists of name/value
pairs separated by the &lt;tt&gt;&amp;amp;&lt;/tt&gt; character. Special characters are URL encoded,
and the &lt;tt&gt;Content-Type&lt;/tt&gt; header references this fact. 
&lt;p&gt;
&amp;nbsp; 
&lt;p&gt;
For many forms, the &lt;tt&gt;POST&lt;/tt&gt; method is preferable. 
&lt;p&gt;
&amp;nbsp; 
&lt;p&gt;
The &lt;tt&gt;&lt;strong&gt;&lt;font color="#0000ff"&gt;PUT&lt;/font&gt;&lt;/strong&gt;&lt;/tt&gt; method is not&lt;a name="idd1e7782"&gt;&lt;/a&gt;&lt;a name="idd1e7789"&gt;&lt;/a&gt;&lt;a name="idd1e7796"&gt;&lt;/a&gt;&lt;a name="idd1e7801"&gt;&lt;/a&gt;&lt;a name="idd1e7808"&gt;&lt;/a&gt;&lt;a name="idd1e7811"&gt;&lt;/a&gt; nearly
as common as &lt;tt&gt;GET&lt;/tt&gt; or &lt;tt&gt;POST&lt;/tt&gt;. However, it is useful in certain situations
because it allows the Web client to send content that will be stored on the Web server.&lt;br&gt;
It should be noted that the &lt;tt&gt;PUT&lt;/tt&gt; method is very rarely implemented in Web
clients. A common misconception is that the &lt;tt&gt;PUT&lt;/tt&gt; method is required for uploading
files. However, this capability is actually an enhancement to the &lt;tt&gt;POST&lt;/tt&gt; method
as identified in RFC 1867, "Form-based File Upload in HTML". 
&lt;p&gt;
&amp;nbsp; 
&lt;p&gt;
&lt;tt&gt;&lt;font color="#0000ff"&gt;HEAD&lt;/font&gt;&lt;/tt&gt; is a very useful &lt;a name="idd1e8021"&gt;&lt;/a&gt;&lt;a name="idd1e8028"&gt;&lt;/a&gt;&lt;a name="idd1e8035"&gt;&lt;/a&gt;&lt;a name="idd1e8040"&gt;&lt;/a&gt;&lt;a name="idd1e8047"&gt;&lt;/a&gt;&lt;a name="idd1e8050"&gt;&lt;/a&gt;request
method for people who are interested in finding out more information about the way
a certain transaction behaves. The &lt;tt&gt;HEAD&lt;/tt&gt; method is supposed to behave exactly
like &lt;tt&gt;GET&lt;/tt&gt;, except that the content is not present. Thus, &lt;tt&gt;HEAD&lt;/tt&gt; is
like a normal &lt;tt&gt;GET&lt;/tt&gt; request with all of the HTML stripped away. 
&lt;p&gt;
&amp;nbsp; 
&lt;p&gt;
&lt;tt&gt;&lt;font color="#0000ff"&gt;TRACE&lt;/font&gt;&lt;/tt&gt; is another diagnostic&lt;a name="idd1e8157"&gt;&lt;/a&gt;&lt;a name="idd1e8164"&gt;&lt;/a&gt;&lt;a name="idd1e8171"&gt;&lt;/a&gt;&lt;a name="idd1e8176"&gt;&lt;/a&gt;&lt;a name="idd1e8183"&gt;&lt;/a&gt;&lt;a name="idd1e8186"&gt;&lt;/a&gt; request
method. This method allows the client to gain more perspective into any intermediary
proxies that lie between the client and the server. As each proxy forwards the &lt;tt&gt;TRACE&lt;/tt&gt; request
on route to the destination Web server, it will add itself to the &lt;tt&gt;Via&lt;/tt&gt; header,
with the first proxy being responsible for adding the &lt;tt&gt;Via&lt;/tt&gt; header. When the
response is given, the content is actually the final request including the &lt;tt&gt;Via&lt;/tt&gt; header. 
&lt;p&gt;
&amp;nbsp; 
&lt;p&gt;
Sometimes it is helpful to &lt;a name="idd1e8236"&gt;&lt;/a&gt;&lt;a name="idd1e8243"&gt;&lt;/a&gt;&lt;a name="idd1e8250"&gt;&lt;/a&gt;&lt;a name="idd1e8255"&gt;&lt;/a&gt;&lt;a name="idd1e8262"&gt;&lt;/a&gt;&lt;a name="idd1e8265"&gt;&lt;/a&gt;simply
identify the capabilities of the Web server you want to interact with prior to actually
making a request. For this purpose, HTTP provides the &lt;tt&gt;&lt;font color="#0000ff"&gt;&lt;strong&gt;OPTIONS&lt;/strong&gt;&lt;/font&gt;&lt;/tt&gt; request
method. 
&lt;p&gt;
&amp;nbsp; 
&lt;p&gt;
The &lt;tt&gt;CONNECT&lt;/tt&gt; request method is&lt;a name="idd1e8376"&gt;&lt;/a&gt;&lt;a name="idd1e8383"&gt;&lt;/a&gt;&lt;a name="idd1e8390"&gt;&lt;/a&gt;&lt;a name="idd1e8395"&gt;&lt;/a&gt;&lt;a name="idd1e8402"&gt;&lt;/a&gt;&lt;a name="idd1e8405"&gt;&lt;/a&gt; reserved
explicitly for use by intermediary servers to create a tunnel to the destination server.
The intermediary, not the HTTP client, issues the &lt;tt&gt;&lt;font color="#0000ff"&gt;&lt;strong&gt;CONNECT&lt;/strong&gt;&lt;/font&gt;&lt;/tt&gt; request
to the destination server.&lt;br&gt;
The most common use of the &lt;tt&gt;CONNECT&lt;/tt&gt; method is by a Web client that must use
a proxy to request a secure resource using SSL (Secure Sockets Layer) or TLS (Transport
Layer Security). The client will tunnel the request through the proxy so that the
proxy will simply route the HTTP messages to and from the Web server without trying
to examine or interpret them. 
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
Accept Header
&lt;/p&gt;
&lt;p&gt;
Authorization Header&lt;br&gt;
Once the browser has successfully authenticated with a Web server in this way, it
will appear to a user as if all further requests do not require reauthentication.
However, due to the stateless nature of the Web, every request must include the &lt;tt&gt;Authorization&lt;/tt&gt; header,
otherwise the server will respond with a &lt;tt&gt;401 Unauthorized&lt;/tt&gt; response. The convenient
behavior of most modern Web browsers involves the browser storing the access credentials
and sending the &lt;tt&gt;Authorization&lt;/tt&gt; header with all HTTP requests for a URL within
a domain previously discovered to be protected. Because this utilizes the browser's
memory, this convenience lasts as long as the browser (at least one instance of the
browser) remains active, and the user will be unaware that this authentication takes
place in subsequent requests. This can be a very important factor when debugging HTTP
authentication, because if you receive a &lt;tt&gt;401 Unauthorized&lt;/tt&gt; response without
being prompted for a username and password, this suggests that the browser is using
incorrect credentials in the &lt;tt&gt;Authorization&lt;/tt&gt; header. Restarting the browser
will resolve this situation.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.ilovedoudou.com/aggbug.ashx?id=7ecba085-7f36-425a-a981-0379927704ac" /&gt;</description>
      <comments>http://blog.ilovedoudou.com/CommentView,guid,7ecba085-7f36-425a-a981-0379927704ac.aspx</comments>
      <category>Web</category>
    </item>
    <item>
      <trackback:ping>http://blog.ilovedoudou.com/Trackback.aspx?guid=a3bc4008-84ab-4e85-8780-8cfe95dc60c6</trackback:ping>
      <pingback:server>http://blog.ilovedoudou.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.ilovedoudou.com/PermaLink,guid,a3bc4008-84ab-4e85-8780-8cfe95dc60c6.aspx</pingback:target>
      <dc:creator>Kevin Mocha</dc:creator>
      <wfw:comment>http://blog.ilovedoudou.com/CommentView,guid,a3bc4008-84ab-4e85-8780-8cfe95dc60c6.aspx</wfw:comment>
      <wfw:commentRss>http://blog.ilovedoudou.com/SyndicationService.asmx/GetEntryCommentsRss?guid=a3bc4008-84ab-4e85-8780-8cfe95dc60c6</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a title="http://vimeo.com/6960507" href="http://vimeo.com/6960507">http://vimeo.com/6960507</a>
        </p>
        <img width="0" height="0" src="http://blog.ilovedoudou.com/aggbug.ashx?id=a3bc4008-84ab-4e85-8780-8cfe95dc60c6" />
      </body>
      <title>mint CET</title>
      <guid isPermaLink="false">http://blog.ilovedoudou.com/PermaLink,guid,a3bc4008-84ab-4e85-8780-8cfe95dc60c6.aspx</guid>
      <link>http://blog.ilovedoudou.com/PermaLink,guid,a3bc4008-84ab-4e85-8780-8cfe95dc60c6.aspx</link>
      <pubDate>Mon, 09 Nov 2009 23:22:48 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a title="http://vimeo.com/6960507" href="http://vimeo.com/6960507"&gt;http://vimeo.com/6960507&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.ilovedoudou.com/aggbug.ashx?id=a3bc4008-84ab-4e85-8780-8cfe95dc60c6" /&gt;</description>
      <comments>http://blog.ilovedoudou.com/CommentView,guid,a3bc4008-84ab-4e85-8780-8cfe95dc60c6.aspx</comments>
      <category>Web</category>
    </item>
    <item>
      <trackback:ping>http://blog.ilovedoudou.com/Trackback.aspx?guid=47f9d312-c8c4-4291-97d9-ef32761d5367</trackback:ping>
      <pingback:server>http://blog.ilovedoudou.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.ilovedoudou.com/PermaLink,guid,47f9d312-c8c4-4291-97d9-ef32761d5367.aspx</pingback:target>
      <dc:creator>Kevin Mocha</dc:creator>
      <wfw:comment>http://blog.ilovedoudou.com/CommentView,guid,47f9d312-c8c4-4291-97d9-ef32761d5367.aspx</wfw:comment>
      <wfw:commentRss>http://blog.ilovedoudou.com/SyndicationService.asmx/GetEntryCommentsRss?guid=47f9d312-c8c4-4291-97d9-ef32761d5367</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a title="http://www.noupe.com/design/101-css-techniques-of-all-time-part-1.html" href="http://www.noupe.com/design/101-css-techniques-of-all-time-part-1.html">http://www.noupe.com/design/101-css-techniques-of-all-time-part-1.html</a>
        </p>
        <p>
          <a title="http://www.noupe.com/css/101-css-techniques-of-all-time-part2.html" href="http://www.noupe.com/css/101-css-techniques-of-all-time-part2.html">http://www.noupe.com/css/101-css-techniques-of-all-time-part2.html</a>
        </p>
        <p>
          <a title="http://www.noupe.com/menu/7-advanced-css-menu-for-your-next-design.html" href="http://www.noupe.com/menu/7-advanced-css-menu-for-your-next-design.html">http://www.noupe.com/menu/7-advanced-css-menu-for-your-next-design.html</a>
        </p>
        <p>
          <a title="http://www.roscripts.com/8_web_menus_you_just_can%5C%5C%27t_miss-116.html" href="http://www.roscripts.com/8_web_menus_you_just_can%5C%5C%27t_miss-116.html">http://www.roscripts.com/8_web_menus_you_just_can%5C%5C%27t_miss-116.html</a>
        </p>
        <p>
          <a title="http://www.toxel.com/design/2009/01/11/top-50-best-css-articles-and-resources/" href="http://www.toxel.com/design/2009/01/11/top-50-best-css-articles-and-resources/">http://www.toxel.com/design/2009/01/11/top-50-best-css-articles-and-resources/</a>
        </p>
        <p>
          <a title="http://www.smashingmagazine.com/2009/07/20/50-new-css-techniques-for-your-next-web-design/" href="http://www.smashingmagazine.com/2009/07/20/50-new-css-techniques-for-your-next-web-design/">http://www.smashingmagazine.com/2009/07/20/50-new-css-techniques-for-your-next-web-design/</a>
        </p>
        <img width="0" height="0" src="http://blog.ilovedoudou.com/aggbug.ashx?id=47f9d312-c8c4-4291-97d9-ef32761d5367" />
      </body>
      <title>CSS Tricks</title>
      <guid isPermaLink="false">http://blog.ilovedoudou.com/PermaLink,guid,47f9d312-c8c4-4291-97d9-ef32761d5367.aspx</guid>
      <link>http://blog.ilovedoudou.com/PermaLink,guid,47f9d312-c8c4-4291-97d9-ef32761d5367.aspx</link>
      <pubDate>Thu, 05 Nov 2009 19:00:07 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a title="http://www.noupe.com/design/101-css-techniques-of-all-time-part-1.html" href="http://www.noupe.com/design/101-css-techniques-of-all-time-part-1.html"&gt;http://www.noupe.com/design/101-css-techniques-of-all-time-part-1.html&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a title="http://www.noupe.com/css/101-css-techniques-of-all-time-part2.html" href="http://www.noupe.com/css/101-css-techniques-of-all-time-part2.html"&gt;http://www.noupe.com/css/101-css-techniques-of-all-time-part2.html&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a title="http://www.noupe.com/menu/7-advanced-css-menu-for-your-next-design.html" href="http://www.noupe.com/menu/7-advanced-css-menu-for-your-next-design.html"&gt;http://www.noupe.com/menu/7-advanced-css-menu-for-your-next-design.html&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a title="http://www.roscripts.com/8_web_menus_you_just_can%5C%5C%27t_miss-116.html" href="http://www.roscripts.com/8_web_menus_you_just_can%5C%5C%27t_miss-116.html"&gt;http://www.roscripts.com/8_web_menus_you_just_can%5C%5C%27t_miss-116.html&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a title="http://www.toxel.com/design/2009/01/11/top-50-best-css-articles-and-resources/" href="http://www.toxel.com/design/2009/01/11/top-50-best-css-articles-and-resources/"&gt;http://www.toxel.com/design/2009/01/11/top-50-best-css-articles-and-resources/&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a title="http://www.smashingmagazine.com/2009/07/20/50-new-css-techniques-for-your-next-web-design/" href="http://www.smashingmagazine.com/2009/07/20/50-new-css-techniques-for-your-next-web-design/"&gt;http://www.smashingmagazine.com/2009/07/20/50-new-css-techniques-for-your-next-web-design/&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.ilovedoudou.com/aggbug.ashx?id=47f9d312-c8c4-4291-97d9-ef32761d5367" /&gt;</description>
      <comments>http://blog.ilovedoudou.com/CommentView,guid,47f9d312-c8c4-4291-97d9-ef32761d5367.aspx</comments>
      <category>Web</category>
    </item>
    <item>
      <trackback:ping>http://blog.ilovedoudou.com/Trackback.aspx?guid=f4cfab0f-f25b-4454-97b4-468b6bcf0fe9</trackback:ping>
      <pingback:server>http://blog.ilovedoudou.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.ilovedoudou.com/PermaLink,guid,f4cfab0f-f25b-4454-97b4-468b6bcf0fe9.aspx</pingback:target>
      <dc:creator>Kevin Mocha</dc:creator>
      <wfw:comment>http://blog.ilovedoudou.com/CommentView,guid,f4cfab0f-f25b-4454-97b4-468b6bcf0fe9.aspx</wfw:comment>
      <wfw:commentRss>http://blog.ilovedoudou.com/SyndicationService.asmx/GetEntryCommentsRss?guid=f4cfab0f-f25b-4454-97b4-468b6bcf0fe9</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a title="http://www.schillmania.com/projects/dialog2/" href="http://www.schillmania.com/projects/dialog2/">http://www.schillmania.com/projects/dialog2/</a>
          <br />
          <a title="http://www.schillmania.com/projects/dialog2/basic.html" href="http://www.schillmania.com/projects/dialog2/basic.html">http://www.schillmania.com/projects/dialog2/basic.html</a>
        </p>
        <img width="0" height="0" src="http://blog.ilovedoudou.com/aggbug.ashx?id=f4cfab0f-f25b-4454-97b4-468b6bcf0fe9" />
      </body>
      <title>Rounded Corners With CSS</title>
      <guid isPermaLink="false">http://blog.ilovedoudou.com/PermaLink,guid,f4cfab0f-f25b-4454-97b4-468b6bcf0fe9.aspx</guid>
      <link>http://blog.ilovedoudou.com/PermaLink,guid,f4cfab0f-f25b-4454-97b4-468b6bcf0fe9.aspx</link>
      <pubDate>Tue, 03 Nov 2009 16:54:15 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a title="http://www.schillmania.com/projects/dialog2/" href="http://www.schillmania.com/projects/dialog2/"&gt;http://www.schillmania.com/projects/dialog2/&lt;/a&gt;
&lt;br&gt;
&lt;a title="http://www.schillmania.com/projects/dialog2/basic.html" href="http://www.schillmania.com/projects/dialog2/basic.html"&gt;http://www.schillmania.com/projects/dialog2/basic.html&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.ilovedoudou.com/aggbug.ashx?id=f4cfab0f-f25b-4454-97b4-468b6bcf0fe9" /&gt;</description>
      <comments>http://blog.ilovedoudou.com/CommentView,guid,f4cfab0f-f25b-4454-97b4-468b6bcf0fe9.aspx</comments>
      <category>Web</category>
    </item>
    <item>
      <trackback:ping>http://blog.ilovedoudou.com/Trackback.aspx?guid=f89b4fb8-f687-491b-a286-62beee710d4c</trackback:ping>
      <pingback:server>http://blog.ilovedoudou.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.ilovedoudou.com/PermaLink,guid,f89b4fb8-f687-491b-a286-62beee710d4c.aspx</pingback:target>
      <dc:creator>Kevin Mocha</dc:creator>
      <wfw:comment>http://blog.ilovedoudou.com/CommentView,guid,f89b4fb8-f687-491b-a286-62beee710d4c.aspx</wfw:comment>
      <wfw:commentRss>http://blog.ilovedoudou.com/SyndicationService.asmx/GetEntryCommentsRss?guid=f89b4fb8-f687-491b-a286-62beee710d4c</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://blog.ilovedoudou.com/content/binary/WindowsLiveWriter/9WaystoTakeYourSitefromOnetoOneMillionUs_BDF2/r_12100_2.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="r_12100" border="0" alt="r_12100" src="http://blog.ilovedoudou.com/content/binary/WindowsLiveWriter/9WaystoTakeYourSitefromOnetoOneMillionUs_BDF2/r_12100_thumb.png" width="670" height="570" />
          </a>
        </p>
        <p>
from: <a title="http://www.cnblogs.com/me-sa/archive/2009/10/17/9way1to1m.html" href="http://www.cnblogs.com/me-sa/archive/2009/10/17/9way1to1m.html">http://www.cnblogs.com/me-sa/archive/2009/10/17/9way1to1m.html</a></p>
        <p>
          <a title="http://www.mytino.com/cn/group/group_details.php?id=204606&amp;group_id=113" href="http://www.mytino.com/cn/group/group_details.php?id=204606&amp;group_id=113">http://www.mytino.com/cn/group/group_details.php?id=204606&amp;group_id=113</a>
        </p>
        <img width="0" height="0" src="http://blog.ilovedoudou.com/aggbug.ashx?id=f89b4fb8-f687-491b-a286-62beee710d4c" />
      </body>
      <title>9 Ways to Take Your Site from One to One Million Users</title>
      <guid isPermaLink="false">http://blog.ilovedoudou.com/PermaLink,guid,f89b4fb8-f687-491b-a286-62beee710d4c.aspx</guid>
      <link>http://blog.ilovedoudou.com/PermaLink,guid,f89b4fb8-f687-491b-a286-62beee710d4c.aspx</link>
      <pubDate>Tue, 20 Oct 2009 17:30:36 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://blog.ilovedoudou.com/content/binary/WindowsLiveWriter/9WaystoTakeYourSitefromOnetoOneMillionUs_BDF2/r_12100_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="r_12100" border="0" alt="r_12100" src="http://blog.ilovedoudou.com/content/binary/WindowsLiveWriter/9WaystoTakeYourSitefromOnetoOneMillionUs_BDF2/r_12100_thumb.png" width="670" height="570"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
from: &lt;a title="http://www.cnblogs.com/me-sa/archive/2009/10/17/9way1to1m.html" href="http://www.cnblogs.com/me-sa/archive/2009/10/17/9way1to1m.html"&gt;http://www.cnblogs.com/me-sa/archive/2009/10/17/9way1to1m.html&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a title="http://www.mytino.com/cn/group/group_details.php?id=204606&amp;amp;group_id=113" href="http://www.mytino.com/cn/group/group_details.php?id=204606&amp;amp;group_id=113"&gt;http://www.mytino.com/cn/group/group_details.php?id=204606&amp;amp;group_id=113&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.ilovedoudou.com/aggbug.ashx?id=f89b4fb8-f687-491b-a286-62beee710d4c" /&gt;</description>
      <comments>http://blog.ilovedoudou.com/CommentView,guid,f89b4fb8-f687-491b-a286-62beee710d4c.aspx</comments>
      <category>Web</category>
    </item>
    <item>
      <trackback:ping>http://blog.ilovedoudou.com/Trackback.aspx?guid=f37eab3c-8e3b-469b-ae3c-1d20a4099566</trackback:ping>
      <pingback:server>http://blog.ilovedoudou.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.ilovedoudou.com/PermaLink,guid,f37eab3c-8e3b-469b-ae3c-1d20a4099566.aspx</pingback:target>
      <dc:creator>Kevin Mocha</dc:creator>
      <wfw:comment>http://blog.ilovedoudou.com/CommentView,guid,f37eab3c-8e3b-469b-ae3c-1d20a4099566.aspx</wfw:comment>
      <wfw:commentRss>http://blog.ilovedoudou.com/SyndicationService.asmx/GetEntryCommentsRss?guid=f37eab3c-8e3b-469b-ae3c-1d20a4099566</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a title="http://www.wpftutorial.net/WPFIntroduction.html" href="http://www.wpftutorial.net/WPFIntroduction.html">http://www.wpftutorial.net/WPFIntroduction.html</a>
        </p>
        <img width="0" height="0" src="http://blog.ilovedoudou.com/aggbug.ashx?id=f37eab3c-8e3b-469b-ae3c-1d20a4099566" />
      </body>
      <title>Neat Web Sites</title>
      <guid isPermaLink="false">http://blog.ilovedoudou.com/PermaLink,guid,f37eab3c-8e3b-469b-ae3c-1d20a4099566.aspx</guid>
      <link>http://blog.ilovedoudou.com/PermaLink,guid,f37eab3c-8e3b-469b-ae3c-1d20a4099566.aspx</link>
      <pubDate>Fri, 29 May 2009 15:57:57 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a title="http://www.wpftutorial.net/WPFIntroduction.html" href="http://www.wpftutorial.net/WPFIntroduction.html"&gt;http://www.wpftutorial.net/WPFIntroduction.html&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.ilovedoudou.com/aggbug.ashx?id=f37eab3c-8e3b-469b-ae3c-1d20a4099566" /&gt;</description>
      <comments>http://blog.ilovedoudou.com/CommentView,guid,f37eab3c-8e3b-469b-ae3c-1d20a4099566.aspx</comments>
      <category>Web</category>
    </item>
    <item>
      <trackback:ping>http://blog.ilovedoudou.com/Trackback.aspx?guid=a8bf0a3a-32f5-4ff4-ae96-a5dcc868ea37</trackback:ping>
      <pingback:server>http://blog.ilovedoudou.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.ilovedoudou.com/PermaLink,guid,a8bf0a3a-32f5-4ff4-ae96-a5dcc868ea37.aspx</pingback:target>
      <dc:creator>Kevin Mocha</dc:creator>
      <wfw:comment>http://blog.ilovedoudou.com/CommentView,guid,a8bf0a3a-32f5-4ff4-ae96-a5dcc868ea37.aspx</wfw:comment>
      <wfw:commentRss>http://blog.ilovedoudou.com/SyndicationService.asmx/GetEntryCommentsRss?guid=a8bf0a3a-32f5-4ff4-ae96-a5dcc868ea37</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a title="http://psd.tutsplus.com/tutorials/interface-tutorials/photoshop-paper-texture-from-scratch-then-create-a-grungy-web-design-with-it/" href="http://psd.tutsplus.com/tutorials/interface-tutorials/photoshop-paper-texture-from-scratch-then-create-a-grungy-web-design-with-it/">http://psd.tutsplus.com/tutorials/interface-tutorials/photoshop-paper-texture-from-scratch-then-create-a-grungy-web-design-with-it/</a>
        </p>
        <img width="0" height="0" src="http://blog.ilovedoudou.com/aggbug.ashx?id=a8bf0a3a-32f5-4ff4-ae96-a5dcc868ea37" />
      </body>
      <title>How to use photoshop to make Web Design.</title>
      <guid isPermaLink="false">http://blog.ilovedoudou.com/PermaLink,guid,a8bf0a3a-32f5-4ff4-ae96-a5dcc868ea37.aspx</guid>
      <link>http://blog.ilovedoudou.com/PermaLink,guid,a8bf0a3a-32f5-4ff4-ae96-a5dcc868ea37.aspx</link>
      <pubDate>Mon, 13 Apr 2009 14:40:21 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a title="http://psd.tutsplus.com/tutorials/interface-tutorials/photoshop-paper-texture-from-scratch-then-create-a-grungy-web-design-with-it/" href="http://psd.tutsplus.com/tutorials/interface-tutorials/photoshop-paper-texture-from-scratch-then-create-a-grungy-web-design-with-it/"&gt;http://psd.tutsplus.com/tutorials/interface-tutorials/photoshop-paper-texture-from-scratch-then-create-a-grungy-web-design-with-it/&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.ilovedoudou.com/aggbug.ashx?id=a8bf0a3a-32f5-4ff4-ae96-a5dcc868ea37" /&gt;</description>
      <comments>http://blog.ilovedoudou.com/CommentView,guid,a8bf0a3a-32f5-4ff4-ae96-a5dcc868ea37.aspx</comments>
      <category>Web</category>
    </item>
    <item>
      <trackback:ping>http://blog.ilovedoudou.com/Trackback.aspx?guid=6c140eb3-6ee1-48c8-be58-42860b596802</trackback:ping>
      <pingback:server>http://blog.ilovedoudou.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.ilovedoudou.com/PermaLink,guid,6c140eb3-6ee1-48c8-be58-42860b596802.aspx</pingback:target>
      <dc:creator>Kevin Mocha</dc:creator>
      <wfw:comment>http://blog.ilovedoudou.com/CommentView,guid,6c140eb3-6ee1-48c8-be58-42860b596802.aspx</wfw:comment>
      <wfw:commentRss>http://blog.ilovedoudou.com/SyndicationService.asmx/GetEntryCommentsRss?guid=6c140eb3-6ee1-48c8-be58-42860b596802</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Add “overflow:hidden;” when background picture does not repeat.
</p>
        <img width="0" height="0" src="http://blog.ilovedoudou.com/aggbug.ashx?id=6c140eb3-6ee1-48c8-be58-42860b596802" />
      </body>
      <title>CSS Tricks for Firefox</title>
      <guid isPermaLink="false">http://blog.ilovedoudou.com/PermaLink,guid,6c140eb3-6ee1-48c8-be58-42860b596802.aspx</guid>
      <link>http://blog.ilovedoudou.com/PermaLink,guid,6c140eb3-6ee1-48c8-be58-42860b596802.aspx</link>
      <pubDate>Fri, 10 Apr 2009 21:12:25 GMT</pubDate>
      <description>&lt;p&gt;
Add “overflow:hidden;” when background picture does not repeat.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.ilovedoudou.com/aggbug.ashx?id=6c140eb3-6ee1-48c8-be58-42860b596802" /&gt;</description>
      <comments>http://blog.ilovedoudou.com/CommentView,guid,6c140eb3-6ee1-48c8-be58-42860b596802.aspx</comments>
      <category>Web</category>
    </item>
    <item>
      <trackback:ping>http://blog.ilovedoudou.com/Trackback.aspx?guid=2945ffa9-228c-4f10-bb19-666ecc94b3fc</trackback:ping>
      <pingback:server>http://blog.ilovedoudou.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.ilovedoudou.com/PermaLink,guid,2945ffa9-228c-4f10-bb19-666ecc94b3fc.aspx</pingback:target>
      <dc:creator>Kevin Mocha</dc:creator>
      <wfw:comment>http://blog.ilovedoudou.com/CommentView,guid,2945ffa9-228c-4f10-bb19-666ecc94b3fc.aspx</wfw:comment>
      <wfw:commentRss>http://blog.ilovedoudou.com/SyndicationService.asmx/GetEntryCommentsRss?guid=2945ffa9-228c-4f10-bb19-666ecc94b3fc</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">http://www.singular.co.nz/blog/archive/2007/12/20/shortguid-a-shorter-and-url-friendly-guid-in-c-sharp.aspx<img width="0" height="0" src="http://blog.ilovedoudou.com/aggbug.ashx?id=2945ffa9-228c-4f10-bb19-666ecc94b3fc" /></body>
      <title>Good Utility Class for Short GUID Expression</title>
      <guid isPermaLink="false">http://blog.ilovedoudou.com/PermaLink,guid,2945ffa9-228c-4f10-bb19-666ecc94b3fc.aspx</guid>
      <link>http://blog.ilovedoudou.com/PermaLink,guid,2945ffa9-228c-4f10-bb19-666ecc94b3fc.aspx</link>
      <pubDate>Thu, 26 Feb 2009 08:45:48 GMT</pubDate>
      <description>http://www.singular.co.nz/blog/archive/2007/12/20/shortguid-a-shorter-and-url-friendly-guid-in-c-sharp.aspx&lt;img width="0" height="0" src="http://blog.ilovedoudou.com/aggbug.ashx?id=2945ffa9-228c-4f10-bb19-666ecc94b3fc" /&gt;</description>
      <comments>http://blog.ilovedoudou.com/CommentView,guid,2945ffa9-228c-4f10-bb19-666ecc94b3fc.aspx</comments>
      <category>DotNet / ASP;Web</category>
    </item>
    <item>
      <trackback:ping>http://blog.ilovedoudou.com/Trackback.aspx?guid=44512d95-7865-4188-90f9-1103f0cffaca</trackback:ping>
      <pingback:server>http://blog.ilovedoudou.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.ilovedoudou.com/PermaLink,guid,44512d95-7865-4188-90f9-1103f0cffaca.aspx</pingback:target>
      <dc:creator>Kevin Mocha</dc:creator>
      <wfw:comment>http://blog.ilovedoudou.com/CommentView,guid,44512d95-7865-4188-90f9-1103f0cffaca.aspx</wfw:comment>
      <wfw:commentRss>http://blog.ilovedoudou.com/SyndicationService.asmx/GetEntryCommentsRss?guid=44512d95-7865-4188-90f9-1103f0cffaca</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a title="http://nixbox.com/lavalamptest.html?e=Bounce" href="http://nixbox.com/lavalamptest.html?e=Bounce">http://nixbox.com/lavalamptest.html?e=Bounce</a>
        </p>
        <img width="0" height="0" src="http://blog.ilovedoudou.com/aggbug.ashx?id=44512d95-7865-4188-90f9-1103f0cffaca" />
      </body>
      <title>JQuery LavaLamp</title>
      <guid isPermaLink="false">http://blog.ilovedoudou.com/PermaLink,guid,44512d95-7865-4188-90f9-1103f0cffaca.aspx</guid>
      <link>http://blog.ilovedoudou.com/PermaLink,guid,44512d95-7865-4188-90f9-1103f0cffaca.aspx</link>
      <pubDate>Fri, 16 Jan 2009 14:56:22 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a title="http://nixbox.com/lavalamptest.html?e=Bounce" href="http://nixbox.com/lavalamptest.html?e=Bounce"&gt;http://nixbox.com/lavalamptest.html?e=Bounce&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.ilovedoudou.com/aggbug.ashx?id=44512d95-7865-4188-90f9-1103f0cffaca" /&gt;</description>
      <comments>http://blog.ilovedoudou.com/CommentView,guid,44512d95-7865-4188-90f9-1103f0cffaca.aspx</comments>
      <category>DotNet;Web</category>
    </item>
    <item>
      <trackback:ping>http://blog.ilovedoudou.com/Trackback.aspx?guid=b14efe55-0431-4f34-87d7-5d1898cc6242</trackback:ping>
      <pingback:server>http://blog.ilovedoudou.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.ilovedoudou.com/PermaLink,guid,b14efe55-0431-4f34-87d7-5d1898cc6242.aspx</pingback:target>
      <dc:creator>Kevin Mocha</dc:creator>
      <wfw:comment>http://blog.ilovedoudou.com/CommentView,guid,b14efe55-0431-4f34-87d7-5d1898cc6242.aspx</wfw:comment>
      <wfw:commentRss>http://blog.ilovedoudou.com/SyndicationService.asmx/GetEntryCommentsRss?guid=b14efe55-0431-4f34-87d7-5d1898cc6242</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
WCF + REST  <a title="http://msdn.microsoft.com/en-us/netframework/cc950529.aspx" href="http://msdn.microsoft.com/en-us/netframework/cc950529.aspx">http://msdn.microsoft.com/en-us/netframework/cc950529.aspx</a></p>
        <p>
Ext JS <a title="http://extjs.com/products/extjs/" href="http://extjs.com/products/extjs/">http://extjs.com/products/extjs/</a></p>
        <p>
Aptana <a title="http://www.aptana.com/" href="http://www.aptana.com/">http://www.aptana.com/</a></p>
        <img width="0" height="0" src="http://blog.ilovedoudou.com/aggbug.ashx?id=b14efe55-0431-4f34-87d7-5d1898cc6242" />
      </body>
      <title>Web Development Combination</title>
      <guid isPermaLink="false">http://blog.ilovedoudou.com/PermaLink,guid,b14efe55-0431-4f34-87d7-5d1898cc6242.aspx</guid>
      <link>http://blog.ilovedoudou.com/PermaLink,guid,b14efe55-0431-4f34-87d7-5d1898cc6242.aspx</link>
      <pubDate>Wed, 24 Dec 2008 16:07:17 GMT</pubDate>
      <description>&lt;p&gt;
WCF + REST&amp;nbsp; &lt;a title="http://msdn.microsoft.com/en-us/netframework/cc950529.aspx" href="http://msdn.microsoft.com/en-us/netframework/cc950529.aspx"&gt;http://msdn.microsoft.com/en-us/netframework/cc950529.aspx&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Ext JS &lt;a title="http://extjs.com/products/extjs/" href="http://extjs.com/products/extjs/"&gt;http://extjs.com/products/extjs/&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Aptana &lt;a title="http://www.aptana.com/" href="http://www.aptana.com/"&gt;http://www.aptana.com/&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.ilovedoudou.com/aggbug.ashx?id=b14efe55-0431-4f34-87d7-5d1898cc6242" /&gt;</description>
      <comments>http://blog.ilovedoudou.com/CommentView,guid,b14efe55-0431-4f34-87d7-5d1898cc6242.aspx</comments>
      <category>Cool Stuff;DotNet / WCF;Web</category>
    </item>
    <item>
      <trackback:ping>http://blog.ilovedoudou.com/Trackback.aspx?guid=19d3b68c-d045-4ad2-af66-c513a714bd0d</trackback:ping>
      <pingback:server>http://blog.ilovedoudou.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.ilovedoudou.com/PermaLink,guid,19d3b68c-d045-4ad2-af66-c513a714bd0d.aspx</pingback:target>
      <dc:creator>Kevin Mocha</dc:creator>
      <wfw:comment>http://blog.ilovedoudou.com/CommentView,guid,19d3b68c-d045-4ad2-af66-c513a714bd0d.aspx</wfw:comment>
      <wfw:commentRss>http://blog.ilovedoudou.com/SyndicationService.asmx/GetEntryCommentsRss?guid=19d3b68c-d045-4ad2-af66-c513a714bd0d</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a title="http://teethgrinder.co.uk/open-flash-chart/gallery-js-2.php" href="http://teethgrinder.co.uk/open-flash-chart/gallery-js-2.php">http://teethgrinder.co.uk/open-flash-chart/gallery-js-2.php</a>
        </p>
        <img width="0" height="0" src="http://blog.ilovedoudou.com/aggbug.ashx?id=19d3b68c-d045-4ad2-af66-c513a714bd0d" />
      </body>
      <title>javascript charts</title>
      <guid isPermaLink="false">http://blog.ilovedoudou.com/PermaLink,guid,19d3b68c-d045-4ad2-af66-c513a714bd0d.aspx</guid>
      <link>http://blog.ilovedoudou.com/PermaLink,guid,19d3b68c-d045-4ad2-af66-c513a714bd0d.aspx</link>
      <pubDate>Wed, 09 Jul 2008 04:16:13 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a title="http://teethgrinder.co.uk/open-flash-chart/gallery-js-2.php" href="http://teethgrinder.co.uk/open-flash-chart/gallery-js-2.php"&gt;http://teethgrinder.co.uk/open-flash-chart/gallery-js-2.php&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.ilovedoudou.com/aggbug.ashx?id=19d3b68c-d045-4ad2-af66-c513a714bd0d" /&gt;</description>
      <comments>http://blog.ilovedoudou.com/CommentView,guid,19d3b68c-d045-4ad2-af66-c513a714bd0d.aspx</comments>
      <category>Web</category>
    </item>
    <item>
      <trackback:ping>http://blog.ilovedoudou.com/Trackback.aspx?guid=e0d99d7c-e3ef-429f-b4e0-fbb99de06cef</trackback:ping>
      <pingback:server>http://blog.ilovedoudou.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.ilovedoudou.com/PermaLink,guid,e0d99d7c-e3ef-429f-b4e0-fbb99de06cef.aspx</pingback:target>
      <dc:creator>Kevin Mocha</dc:creator>
      <wfw:comment>http://blog.ilovedoudou.com/CommentView,guid,e0d99d7c-e3ef-429f-b4e0-fbb99de06cef.aspx</wfw:comment>
      <wfw:commentRss>http://blog.ilovedoudou.com/SyndicationService.asmx/GetEntryCommentsRss?guid=e0d99d7c-e3ef-429f-b4e0-fbb99de06cef</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
IIS 6 doesn't handle extensionless URLs. You'll need to change your routes to use
the .mvc extension. 
</p>
        <p>
For example, 
</p>
        <p>
  routes.Add(new Route("Links.mvc/{categoryName}",... 
</p>
        <p>
Make sure that IIS 6 maps .mvc to the aspnet_isapi.dll.
</p>
        <img width="0" height="0" src="http://blog.ilovedoudou.com/aggbug.ashx?id=e0d99d7c-e3ef-429f-b4e0-fbb99de06cef" />
      </body>
      <title>Deploy MVC application on Server with IIS6</title>
      <guid isPermaLink="false">http://blog.ilovedoudou.com/PermaLink,guid,e0d99d7c-e3ef-429f-b4e0-fbb99de06cef.aspx</guid>
      <link>http://blog.ilovedoudou.com/PermaLink,guid,e0d99d7c-e3ef-429f-b4e0-fbb99de06cef.aspx</link>
      <pubDate>Fri, 04 Apr 2008 20:26:40 GMT</pubDate>
      <description>&lt;p&gt;
IIS 6 doesn't handle extensionless URLs. You'll need to change your routes to use
the .mvc extension. 
&lt;p&gt;
For example, 
&lt;p&gt;
&amp;nbsp; routes.Add(new Route("Links.mvc/{categoryName}",... 
&lt;p&gt;
Make sure that IIS 6 maps .mvc to the aspnet_isapi.dll.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.ilovedoudou.com/aggbug.ashx?id=e0d99d7c-e3ef-429f-b4e0-fbb99de06cef" /&gt;</description>
      <comments>http://blog.ilovedoudou.com/CommentView,guid,e0d99d7c-e3ef-429f-b4e0-fbb99de06cef.aspx</comments>
      <category>DotNet / ASP;Projects / Mobile Navigator Website;Web</category>
    </item>
    <item>
      <trackback:ping>http://blog.ilovedoudou.com/Trackback.aspx?guid=37cb5c22-e666-42ee-9371-8436cd6ba0bb</trackback:ping>
      <pingback:server>http://blog.ilovedoudou.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.ilovedoudou.com/PermaLink,guid,37cb5c22-e666-42ee-9371-8436cd6ba0bb.aspx</pingback:target>
      <dc:creator>Kevin Mocha</dc:creator>
      <wfw:comment>http://blog.ilovedoudou.com/CommentView,guid,37cb5c22-e666-42ee-9371-8436cd6ba0bb.aspx</wfw:comment>
      <wfw:commentRss>http://blog.ilovedoudou.com/SyndicationService.asmx/GetEntryCommentsRss?guid=37cb5c22-e666-42ee-9371-8436cd6ba0bb</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <h3>
          <a title="http://learn.iis.net/page.aspx/387/using-visual-studio-2008-with-iis-70/" href="http://learn.iis.net/page.aspx/387/using-visual-studio-2008-with-iis-70/">http://learn.iis.net/page.aspx/387/using-visual-studio-2008-with-iis-70/</a>
        </h3>
        <h3>Using Visual Studio 2008 with IIS 7.0
</h3>
        <p>
Author: <b>Mike Volodarsky</b></p>
        <p>
Published on March 05, 2008 by <a href="http://forums.iis.net/members/mvolo.aspx">mvolo</a></p>
        <p>
Updated on March 12, 2008 by <a href="http://forums.iis.net/members/mvolo.aspx">mvolo</a></p>
        <p>
Average Rating <a href="http://learn.iis.net/"><img title="Poor" src="http://learn.iis.net/themes/iis/images/star-community-left-off.png" /></a><a href="http://learn.iis.net/"><img title="Poor" src="http://learn.iis.net/themes/iis/images/star-community-right-off.png" /></a><a href="http://learn.iis.net/"><img title="Fair" src="http://learn.iis.net/themes/iis/images/star-community-left-off.png" /></a><a href="http://learn.iis.net/"><img title="Fair" src="http://learn.iis.net/themes/iis/images/star-community-right-off.png" /></a><a href="http://learn.iis.net/"><img title="Average" src="http://learn.iis.net/themes/iis/images/star-community-left-off.png" /></a><a href="http://learn.iis.net/"><img title="Average" src="http://learn.iis.net/themes/iis/images/star-community-right-off.png" /></a><a href="http://learn.iis.net/"><img title="Good" src="http://learn.iis.net/themes/iis/images/star-community-left-off.png" /></a><a href="http://learn.iis.net/"><img title="Good" src="http://learn.iis.net/themes/iis/images/star-community-right-off.png" /></a><a href="http://learn.iis.net/"><img title="Excellent" src="http://learn.iis.net/themes/iis/images/star-community-left-off.png" /></a><a href="http://learn.iis.net/"><img title="Excellent" src="http://learn.iis.net/themes/iis/images/star-community-right-off.png" /></a> 
Rate It (0) Thank you for your feedback! 
</p>
        <dl>
          <dt>Tags 
<dd><a href="http://learn.iis.net/themes/iis/pages/search.aspx?q=IIS%207.0%20Visual%20Studio%202008%20debugging%20publishing%20web%20site%20web%20application">IIS
7.0 Visual Studio 2008 debugging publishing web site web application</a></dd></dt>
        </dl>
        <h4>Introduction
</h4>
        <p>
Visual Studio® provides several options for working with IIS when developing web sites
and applications. These include the Web application and Web site projects.  In
Visual Studio 2008, these features receive a much awaited upgrade to properly support
IIS 7.0 in Windows Vista® and Windows Server® 2008. In addition, the recently released
Web Deployment Project 2008 also provides support for IIS 7.0. 
</p>
        <p>
This article provides an overview of using Visual Studio 2008 Web development features
with IIS 7.0, including information on the steps necessary to enable these features
to work correctly. 
</p>
        <h5>Prerequisites
</h5>
        <p>
To use Visual Studio 2008 to work with Web sites and applications on your local machine,
do the following: 
</p>
        <p>
1. Install IIS 7.0<br />
2. Install ASP.NET<br />
3. Install IIS 6.0 Metabase Compatibility<br />
On Windows Vista, open the Control Panel, click Programs and Features, click the Turn
Windows features on and off link, check the “Internet Information Services” check
box, as well as the “Web Management Tools \ IIS 6 Management Compatibility \ IIS Metabase
and IIS 6 configuration compatibility” and “World Wide Web Services \ Application
Development Features \ ASP.NET” check boxes under it.   
<br /><a href="http://learn.iis.net/file.axd?i=812"><img alt="" src="http://learn.iis.net/file.axd?i=812" border="0" /></a><br />
On Windows Server 2008, use the Server Manager tool to install the Web Server (IIS)
role, and add the “Management Tools \ IIS 6 Management Compatibility \ IIS 6 Metabase
Compatibility” and “Application Development \ ASP.NET“ role services. For more information,
see <a href="http://learn.iis.net/page.aspx/29/installing-iis7-on-windows-server-2008/">Installing
IIS 7.0 on Windows Server 2008.<br /></a><br />
To use Visual Studio 2008 to work with Web sites and applications on a remote machine,
see the "Using Visual Studio 2008 with a Remote IIS 7.0 Server" section later in this
article. 
</p>
        <h5>Starting Visual Studio 2008 as Administrator
</h5>
        <p>
Certain tasks, including debugging and creating local IIS applications, require starting
Visual Studio as a user with Administrative privileges. On Windows Vista, and Windows
Server 2008 when not running as the built-in Administrator account, this requires
right-clicking the Visual Studio 2008 icon in the Start Menu and choosing “Run As
Administrator”. 
</p>
        <p>
To make this process easier, you can create a shortcut and check the “Run this program
as an administrator” check box in the Compatibility tab of the shortcut properties. 
</p>
        <h4>Create a New IIS 7.0 Web Site or Application Project
</h4>
        <p>
Visual Studio provides two conceptual models for working with Web applications: the
Web site project model, and the Web application project model. 
</p>
        <p>
While both options allow you to create Web applications and publish them to an IIS
7.0 server, they do have significant differences in how the corresponding ASP.NET
application is built and deployed. Some of the differences between the two models
are: 
</p>
        <ul>
          <li>
The Web application project option requires the source application files to be located
on the local file system, or, on a network share. However, you can subsequently publish
the Web application to a remote IIS 7.0 Web site by using a network share, FTP, or
Front Page Server Extensions. 
</li>
          <li>
The Web site project option allows you to connect directly to a local IIS 7.0 Web
site, or to a remote IIS 7.0 Web site by using a network share, FTP, or Front Page
Server Extensions. With the Web site project, you work directly with the content of
your IIS 7.0 Web site and there is no project file.</li>
        </ul>
        <p>
You can find the detailed explanation of the two models and their differences in <a href="http://msdn2.microsoft.com/en-us/library/aa730880%28VS.80%29.aspx">http://msdn2.microsoft.com/en-us/library/aa730880(VS.80).aspx</a>. 
</p>
        <p>
          <strong>Note</strong>: Visual Studio 2008 provides the options to create a New project
and Open an existing project.  This does not necessarily mean that you must create
a new IIS web application or open an existing application – you can use either of
the options with an existing IIS web application. 
</p>
        <p>
          <strong>To create a new project using the Web application project option:</strong>
        </p>
        <ul>
          <li>
In Visual Studio, use the “File menu \ New \ Project ...” option and select the “ASP.NET
Web Application” template.</li>
        </ul>
        <p>
          <strong>Note</strong>: Unlike the Web site project option, you must place the application
files on the local file system or a network share, and later use the Publish option
to publish the contents of your application to an IIS 7.0 Web site. 
</p>
        <p>
          <strong>To publish the project to an IIS 7.0 Web site:</strong>
        </p>
        <p>
1. Create the IIS 7.0 Web site using IIS Manager, AppCmd, or another configuration
tool. 
</p>
        <p>
For more information, see <a href="http://technet2.microsoft.com/windowsserver2008/en/library/f6c26eb7-ad7e-4fe2-9239-9f5aa4ff44ce1033.mspx?mfr=true">http://technet2.microsoft.com/windowsserver2008/en/library/f6c26eb7-ad7e-4fe2-9239-9f5aa4ff44ce1033.mspx?mfr=true</a>.
Alternatively, use an existing IIS 7.0 Web site. 
</p>
        <p>
2. In Visual Studio, use the "Build \ Publish" option to publish the contents of your
Web application to an IIS 7.0 Web site. 
</p>
        <p>
          <a href="http://learn.iis.net/file.axd?i=814">
            <img alt="" src="http://learn.iis.net/file.axd?i=814" border="0" />
          </a>
        </p>
        <p>
          <strong>Note</strong>: The Publish Web dialog by default publishes only the parts
of your project that comprise your web application - it does not publish the project
file, obj directory, and other files. This is important because exposing these components
to your web users may be a security risk. 
</p>
        <p>
By clicking the "…" button, you can chose one of the four options for publishing your
Web site: 
</p>
        <ul>
          <li>
            <strong>File System</strong>. When using this option, Visual Studio opens / creates
the web application as a folder, and uses the built-in ASP.NET Development Server
to host the Web site. This option may be sufficient for basic testing of ASP.NET applications
– however, this mode does not support running ASP.NET applications in Integrated mode,
and it does not support application technologies other than ASP.NET (such as PHP,
ASP, CGI, etc). 
</li>
          <li>
            <strong>Local IIS</strong>. When using this option, Visual Studio allows you to publish
your application files to a local IIS 7.0 Web site or application. You can also use
the dialog to create new IIS 7.0 applications or virtual directories to publish your
files to. 
</li>
          <li>
            <strong>FTP Site</strong>. When using this option, Visual Studio supports editing
your application files if they are shared through FTP.  You can still use Visual
Studio to debug your applications by configuring the URL of your application in project
start settings. For more information, see Using Visual Studio 2008 with a Remote IIS
7.0 Server section later in this article. 
</li>
          <li>
            <strong>Remote Site</strong>. Using this option, Visual Studio can connect to a remote
IIS server. To use this option, you need to have Front Page Server Extensions installed
on the remote server and configure your Web site to use FPSE.  For more information
on this, see the "Using Visual Studio 2008 with a Remote IIS 7.0 Server" section later
in this article.</li>
        </ul>
        <p>
You can also map the Web application project directory as a virtual directory on the
local IIS 7.0 installation by opening the project Properties, clicking the “Web” tab,
and using the “Create Virtual Directory” button.  You can use the “Create Virtual
Directory” option as a quick way to host your Web application locally on IIS without
going through the “Publish Web” option. 
</p>
        <p>
However, this option is not generally recommended because it places all of the project
files, source files, object files, and other temporary files in the servable namespace
of the IIS 7.0 virtual directory, which may result in a security risk.  Using
the Publish options which by default only publish the web servable portions of the
project is a better practice. 
</p>
        <p>
3. Configure debugging. 
</p>
        <p>
By default, projects created using the Web application project model use the built-in
ASP.NET Development Server when testing or debugging your project. 
</p>
        <p>
This provides a convenient way to test your ASP.NET application without IIS 7.0 –
however, we recommend that you instead configure Visual Studio to test your application
in the IIS 7.0 environment.  The reasons for this are: 
</p>
        <ul>
          <li>
The ASP.NET Development Server does not support hosting ASP.NET applications in Integrated
mode, which is the default mode of operation used by IIS 7.0. This may introduce differences
in application behavior.  
</li>
          <li>
The ASP.NET Development Server does not support many of the IIS configuration features,
so if your application relies or uses them, it’s behavior may be different or incorrect
when hosted under the ASP.NET Development Server. 
</li>
          <li>
The ASP.NET Development Server does not support hosting portions of your application
that utilize application technologies other than ASP.NET, such as PHP, CGI, and other
third party frameworks.</li>
        </ul>
        <p>
If you are developing on Windows Vista, you can easily take advantage of IIS 7.0 to
test your application locally using the same environment it will be on when it is
deployed - use the "Create Virtual Directory" option or the Publish Web dialog as
discussed earlier in this article.  
</p>
        <p>
Alternatively, you can configure Visual Studio to connect to the a remote IIS 7.0
server to which you publish your application. 
</p>
        <p>
In those cases, you can configure Visual Studio to debug your application in the IIS
7.0 environment. To do this, right-click on the project node, chose "Properties …",
and click the "Web" tab.  In the "Web" tab, select the "Use IIS Web server" radio
button and type in the base URL of your Web application on the remote server. 
</p>
        <p>
          <a href="http://learn.iis.net/file.axd?i=815">
            <img alt="" src="http://learn.iis.net/file.axd?i=815" border="0" />
          </a>
        </p>
        <p>
For more information on configuring remote debugging, see "Debugging IIS 7.0 Web Applications"
later in this article. 
</p>
        <p>
          <strong>To create a new project using the Web site project option:</strong>
        </p>
        <p>
1. Create the IIS 7.0 Web site using IIS Manager, AppCmd, or another configuration
tool. For more information, see <a href="http://technet2.microsoft.com/windowsserver2008/en/library/f6c26eb7-ad7e-4fe2-9239-9f5aa4ff44ce1033.mspx?mfr=true">http://technet2.microsoft.com/windowsserver2008/en/library/f6c26eb7-ad7e-4fe2-9239-9f5aa4ff44ce1033.mspx?mfr=true</a>.
Alternatively, use an existing IIS 7.0 Web site. 
</p>
        <p>
2. In Visual Studio, use the “File menu \ New \ Web Site …” option to create a new
Web site project using the IIS 7.0 Web site you created. 
</p>
        <p>
In the “New Web Site” dialog, select one of the Visual Studio Web site templates,
such as the ASP.NET Web Site. 
</p>
        <p>
Next, indicate where this web site should be located. To do this, click the “Browse
…” button, which displays a dialog similar to what you get when publishing a Web application
project.  Here, click the “Local IIS” button again to select an existing Web
site or application on the local machine, or create a new Web application or virtual
directory to host your project files.  
</p>
        <p>
Alternatively, you will have the option to place your new Web site project on the
local File System for use with the ASP.NET Development Server, upload it to a remote
server using FTP, or upload it to a remote IIS server using Front Page Extensions. 
For more information on connecting to a remote server, see the "Using Visual Studio
2008 with a Remote IIS 7.0 Server" section later in this article. 
</p>
        <h4>To Open an Existing IIS 7.0 Web Site or Application
</h4>
        <p>
          <strong>To create a project based on an existing IIS 7.0 Web site</strong>: 
</p>
        <p>
1. Open the existing IIS 7.0 Web site using the “File menu \ Open \ Web Site …” option.  
</p>
        <p>
Click “Local IIS” to connect to the local IIS 7.0 server.  
</p>
        <p>
In the resulting dialog, you can select the Web site or a child application to open. 
Alternatively, you can use the “Create New Web Application”, “Create New Virtual Directory”,
and “Delete” buttons in the top right hand corner to manage the web site hierarchy. 
</p>
        <p>
          <strong>Note</strong>: Be sure to back up your configuration first before making changes. 
</p>
        <p>
          <a href="http://learn.iis.net/file.axd?i=816">
            <img alt="" src="http://learn.iis.net/file.axd?i=816" border="0" />
          </a>
        </p>
        <p>
If you do not have IIS 7.0 or any of the prerequisites installed, Visual Studio 2008
displays a message when you attempt to connect to the Local IIS server telling you
to install the required components. To do this, see the "Prerequisites" section earlier
in this article. 
</p>
        <p>
          <a href="http://learn.iis.net/file.axd?i=817">
            <img alt="" src="http://learn.iis.net/file.axd?i=817" border="0" />
          </a>
        </p>
        <p>
          <strong>Note: </strong>Visual Studio provides several different options for working
with existing Web sites, in addition to connecting to an existing IIS 7.0 Web site.
These options include: 
</p>
        <ul>
          <li>
            <strong>File System</strong>. When using this option, Visual Studio opens / creates
the web application as a folder, and uses the built-in ASP.NET Development Server
to host the Web site. You can use this option to connect to an existing IIS 7.0 web
site by opening its virtual directory’s root folder on the local file system or through
a network share. 
</li>
          <li>
            <strong>FTP Site</strong>. When using this option, Visual Studio supports editing
your application files if they are shared through FTP. For more information, see the
"Using Visual Studio 2008 with a Remote IIS 7.0 Server" section later in this article. 
</li>
          <li>
            <strong>Remote Site</strong>. Using this option, Visual Studio can connect to a remote
IIS server. To use this option, you need to have Front Page Server Extensions installed
on the remote server and configure your Web site to use FPSE.  For more information
on this, see the "Using Visual Studio 2008 with a Remote IIS 7.0 Server" section later
in this article.</li>
        </ul>
        <p>
2. Configure debugging.  
</p>
        <p>
If you have opened an existing IIS 7.0 Web site using the Local IIS or Remote Site
options, your project is automatically configured to use the IIS 7.0 Web site when
debugging so no further action is necessary (the Remote Site option requires additional
configuration to enable remote debugging, as explained later in the article).  
</p>
        <p>
If you have opened your Web site project using the File System or FTP site options,
it is by default configured to use the ASP.NET Development Server for testing and
debugging. It is recommended that you configure Visual Studio to use the IIS 7.0 server
on which the Web site is located for debugging. 
</p>
        <p>
To do this, right-click on the Web site project node, chose "Start Options ...". 
In the dialog, select "Use custom server" radio button and type in the base URL of
your Web application on the remote server. 
</p>
        <p>
          <a href="http://learn.iis.net/file.axd?i=818">
            <img alt="" src="http://learn.iis.net/file.axd?i=818" border="0" />
          </a>
        </p>
        <h4>Using Visual Studio 2008 with a Remote IIS 7.0 Server
</h4>
        <p>
In order to open an existing Web site or create a new Web site on a remote IIS server,
you can use many of the options mentioned earlier: 
</p>
        <ul>
          <li>
            <p>
              <strong>File System</strong>. You can create a file share pointing to the root virtual
directory of your Web application, and use the "File System" option to connect to
it.  To use this option, select the "File System" button in the “Open Web Site”
dialog. You then have to configure the URL of your application in project start settings
to be able to debug the application using Visual Studio. You cannot create new IIS
Web sites, applications, or virtual directories on the remote machine using this option.
</p>
          </li>
          <li>
            <p>
              <strong>FTP Site</strong>. If your Web site or application files are shared using
FTP, you can access these files using this option. You then have to configure the
URL of your application in project start settings to be able to debug the application
using Visual Studio. To use this option, select the "FTP Site" button in the "Open
Web Site" dialog.  You cannot create new IIS Web sites, applications, or virtual
directories on the remote machine using this option.
</p>
          </li>
          <li>
            <p>
              <strong>Remote Site</strong>.  This option uses Front Page Server Extensions
to connect to a remote IIS server.  To use this option to connect to a remote
IIS 7.0 server on Windows Server 2008 or Windows Vista computers, you first need to
install Front Page Server Extensions on the remote computer. 
</p>
          </li>
        </ul>
        <h5>Connect to an IIS 7.0 Web site using FTP
</h5>
        <p>
You can use the FTP Site option if you have used FTP to share the IIS 7.0 virtual
directory you want to publish to. 
</p>
        <p>
          <strong>Note</strong>: When using FTP, you cannot create or edit IIS 7.0 Web sites,
applications, or virtual directories, but you can publish and edit files. 
</p>
        <p>
To use this option, provide the address of the FTP server, the port, the directory
to which you are connecting, and logon credentials if not using anonymous access. 
</p>
        <p>
          <a href="http://learn.iis.net/file.axd?i=819">
            <img alt="" src="http://learn.iis.net/file.axd?i=819" border="0" />
          </a>
        </p>
        <p>
For more information on using the FTP server included in Windows Vista and Windows
Server 2008, see <a href="http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/31c2427c-c0a5-49fa-9e03-823f34fba3e8.mspx?mfr=true">FTP
Site Setup (IIS 6.0)</a>. To use the new <a href="http://learn.iis.net/ControlPanel/FTP%207.0">FTP
7.0</a>, which is available as a download from IIS.NET, see <a href="http://www.iis.net/articles/view.aspx/IIS7/Managing-IIS7/Using-FTP-Server-in-IIS7/Adding-FTP-to-a-Web-site">Adding
FTP to a Web Site</a>. 
</p>
        <h5>Connect to an IIS 7.0 Web Site Using Front Page Server Extensions
</h5>
        <p>
You can use the Remote Site option if you have shared the IIS 7.0 Web site you want
to publish to using Front Page Server Extensions. Unlike the FTP Site option, you
can create and edit IIS 7.0 applications and virtual directories when using this option. 
</p>
        <p>
          <a href="http://go.microsoft.com/fwlink/?LinkId=86544">Front Page Server Extensions
for IIS 7.0</a> are available as a free download for Windows Vista and Windows Server
2008.   For more information on installing and enabling Front Page Server
Extensions for IIS 7.0 Web sites, see <a href="http://go.microsoft.com/fwlink/?LinkId=88546">Installing
Front Page Server Extensions for IIS 7.0</a>. 
</p>
        <p>
To quickly enable a remote Web site to be used with the “Remote Site” option in Visual
Studio, do the following: 
</p>
        <p>
1. Download and install FPSE on the remote IIS 7.0 server. The provided installer
automatically installs all required IIS 7.0 components. 
</p>
        <p>
2. Create an IIS 7.0 web site to connect to (optional, if the site does not already
exist). 
</p>
        <p>
3. Enable either Basic Authentication or Windows Authentication methods for the Web
site. This is required for FPSE to be able to manage the site. 
</p>
        <p>
          <strong>Note</strong>: If you use Basic authentication, the username and password
are transmitted in clear text so you should not use it for connecting to web sites
over public networks unless you also use SSL to protect the communication<em>.</em></p>
        <p>
4. Enable the web site to be managed with FPSE. You can do this by executing the following
from the command line: 
</p>
        <p>
          <samp>&gt; <strong>"%CommonProgramFiles%\Microsoft Shared\Web Server Extensions\50\bin\owsadm.exe"
-o install -p LM/W3SVC/&lt;SITEID&gt; -u &lt;USERNAME&gt;</strong></samp>
        </p>
        <p>
Where &lt;SITEID&gt; is the site id of the Web site you want to enable for FPSE, and
the &lt;USERNAME&gt; is the Windows account that can act as FPSE administrator. 
</p>
        <p>
5. Connect to the site Using the “Remote Site” option in the Open Web Site dialog
or the New Site dialog. This allows you to connect to an existing Front Page Server
Extensions – enabled web site, or create new Web applications and virtual directories. 
</p>
        <p>
          <a href="http://learn.iis.net/file.axd?i=820">
            <img alt="" src="http://learn.iis.net/file.axd?i=820" border="0" />
          </a>
        </p>
        <p>
If you receive the following error dialog during connection, double-check that you
have installed FPSE on the remote server, and have enabled FPSE management for the
Web site you are attempting to connect to. 
</p>
        <p>
          <a href="http://learn.iis.net/file.axd?i=821">
            <img alt="" src="http://learn.iis.net/file.axd?i=821" border="0" />
          </a>
        </p>
        <p>
If you are using Windows authentication for your FPSE-enabled Web site, Visual Studio
attempts to authenticate using the account under which it was started.  If this
authentication fails, it prompts you to provide credentials for authentication with
the remote server.  
</p>
        <p>
If you are using Basic authentication, Visual Studio immediately prompts you for credentials. 
</p>
        <p>
          <strong>Note</strong>: Basic authentication sends credentials in clear text, so it
can lead to unintended disclosure of your username and password if the site is not
protected with SSL. For this reason, we recommend using Windows authentication for
intranet environments, and using Basic authentication over SSL for internet environments<em>.</em></p>
        <p>
If you have not enabled a suitable authentication method (Windows Authentication,
Basic Authentication, or Digest Authentication), you receive the following error dialog
when connecting. Turn on one of the above authentication methods to fix this problem. 
</p>
        <p>
          <a href="http://learn.iis.net/file.axd?i=822">
            <img alt="" src="http://learn.iis.net/file.axd?i=822" border="0" />
          </a>
        </p>
        <p>
          <strong>Note</strong>: The "New Web Site …" button in the "Remote Site" dialog cannot
be used to create a new IIS 7.0 Web site.  Instead, it is used to create a new
Web application with the specified path for an existing Front Page Server Extensions
– enabled IIS 7.0 Web site. 
</p>
        <h4>Debugging IIS 7.0 Web Applications
</h4>
        <p>
After you have opened a Web site or application in Visual Studio, you can take advantage
of Visual Studio debugging features to test it. In doing so, you have the following
options: 
</p>
        <ul>
          <li>
            <strong>Use F5 debugging to debug from Visual Studio</strong>. If you have opened
an IIS 7.0 Web site project using one of the options discussed earlier, this gives
you the most convenient way to debug your web application. You can debug it simply
by pressing F5, and then interacting with your application using a browser window.
In the rest of this article, we will focus on this option.<strong></strong></li>
          <li>
            <strong>Attach to the IIS worker process directly</strong>. If you know which IIS
worker process is hosting your application, you can use this option to attach directly
to that process. 
</li>
        </ul>
        <h5>Use F5 to Debug a Local IIS 7.0 Web Application from Visual Studio
</h5>
        <p>
F5 debugging provides the most convenient way to debug your Web application with Visual
Studio. To use it, do the following: 
</p>
        <p>
1. Open an IIS 7.0 Web site using one of the options discussed earlier. 
</p>
        <p>
2. Select the project file to which you want to make the initial request (optional). 
</p>
        <p>
3. Set the desired breakpoints in your application source code (optional, you can
also set them during debugging). 
</p>
        <p>
4. Press F5 to begin debugging.  Visual Studio will make an initial request to
the IIS 7.0 web application, attach to the hosting IIS worker process, and open a
new browser window where you can interact with your application. 
</p>
        <p>
In order to successfully debug a local IIS 7.0 Web application, you must meet the
following requirements: 
</p>
        <p>
1. Be logged on as a user that has Administrative privileges on the local computer
(Either the built-in Administrator account, or an account that is a member of the
built-in Administrators group). 
</p>
        <p>
2. Start Visual Studio in Administrator mode by right-clicking the Visual Studio 2008
icon in the Start menu, and selecting “Run As Administrator”.  
</p>
        <p>
If you do not do this, Visual Studio receives a filtered UAC token and cannot debug. 
</p>
        <p>
If you have opened an ASP.NET application using the “File System” option, Visual Studio
by default starts the ASP.NET Development Server to host your application.  In
this option, IIS 7.0 is not involved, and you are not required to be an Administrator
to debug your application. 
</p>
        <p>
However, when using the ASP.NET Development Server, you do not have the full range
of features and services that IIS 7.0 environment provides, which may make your application
behave differently from when it is deployed on IIS 7.0. This includes the following: 
</p>
        <ul>
          <li>
No support for ASP.NET Integrated Mode. 
</li>
          <li>
No support for IIS 7.0 features such as compression, native URL authentication, request
filtering, and others. 
</li>
          <li>
No support for application technologies other than ASP.NET, such as PHP, ASP, CGI,
and others.</li>
        </ul>
        <h5>Use F5 to Debug a Remote IIS 7.0 Web Application from Visual Studio
</h5>
        <p>
You can use F5 to debug an IIS 7.0 Web application running on a remote server. The
process is similar to what was described earlier for debugging local IIS 7.0 applications,
but requires additional configuration to enable remote debugging to take place. 
</p>
        <p>
In addition, you must open the remote IIS 7.0 Web site or application project using
the File System, FTP Site or Remote Site options as discussed in the "Using Visual
Studio 2008 with a Remote IIS 7.0 Server" section earlier in this article. 
</p>
        <p>
In order to successfully debug a remote application, you must also meet the following
requirements: 
</p>
        <p>
1. Install the Remote Debugging components on the server machine. For more information,
see <a href="http://msdn2.microsoft.com/en-us/library/bt727f1t.aspx">How to: Set Up
Remote Debugging</a>. 
</p>
        <p>
2. Run the Remote Debugging monitor (msvsmon.exe) on the server machine.  See
notes further about how to do this properly. 
</p>
        <p>
3. Open the required firewall ports for remote debugging.  
</p>
        <p>
When you run msvsmon.exe for the first time on the remote machine, it warns you if
the ports are not open, and offers to open them automatically. If you want to configure
the firewall manually or to see which ports are opened, see <a href="http://msdn2.microsoft.com/en-us/library/bb385831.aspx">How
to: Manually Configure the Windows Vista Firewall for Remote Debugging</a>. 
</p>
        <p>
4. If you are using a Web application project and publishing to a remote IIS 7.0 server,
or if you have opened the remote Web site project using the "File System" or "FTP
Site" options, you must configure Visual Studio project start options to enable debugging. 
</p>
        <p>
To do this for a Web site project, right-click on the Web site project node, chose
"Start Options …".  In the dialog, select "Use custom server" radio button and
type in the base URL of your Web application on the remote server. 
</p>
        <p>
For a Web application project, right-click on the project node, chose "Properties
…", and click the "Web" tab.  In the "Web" tab, select the "Use IIS Web server"
radio button and type in the base URL of your Web application on the remote server. 
</p>
        <p>
This process is described in detail earlier in the article. 
</p>
        <p>
5. Configure permissions to allow debugging to take place.  See notes further
about how to do this properly. 
</p>
        <p>
How you run the Remote Debugging monitor (msvsmon.exe) and configure your permissions
depends on whether your are operating in a domain or workgroup environment. 
</p>
        <p>
          <strong>To set up remote debugging in a workgroup environment</strong>
        </p>
        <p>
1. Create an account with the same username and password on both the Visual Studio
2008 client computer and the remote server computer. This account must have Administrative
rights on the remote server computer. 
</p>
        <p>
          <strong>Note</strong>: If you are using Windows Authentication in your application,
this account must be the built-in Administrator account.  This means that the
built-in Administrator account must have the same password on both computers. 
</p>
        <p>
2. Log on to the remote server computer using the account created in Step 1, and run
the Visual Studio 2008 Remote Debugger from the Start menu by right-clicking it, and
choosing "Run As Administrator". 
</p>
        <p>
This is important – otherwise the Remote Debugging monitor receives a UAC-filtered
token and cannot debug IIS worker processes. 
</p>
        <p>
          <strong>Note</strong>: Do not use the RunAs.exe command to run the msvsmon.exe process,
as this always results in a UAC-filtered token and prevents debugging from working<em>.</em></p>
        <p>
You also have an option to run the Remote Debugging monitor as a service by opening
the Visual Studio 2008 Remote Debugger Configuration Wizard from the Start menu. 
If using this option, you must configure the Remote Debugging monitor to log on using
the account created in Step 1.  You then also must grant the corresponding account
the "Log On As A Service" right in the computer’s Local Security Policy console. 
</p>
        <p>
3. Log on to the Visual Studio 2008 client computer with the account created in step
#1.  Run Visual Studio 2008 by right-clicking its icon in the Start menu, and
choosing "Run As Administrator". 
</p>
        <p>
          <strong>Note</strong>: It is very important to both log in using the account created
in Step 1, and use the "Run As Administrator" option when running Visual Studio. 
As mentioned in Step 1, the account you are using MUST be an Administrative user on
the remote server machine. 
</p>
        <p>
4. Open the remote IIS 7.0 Web site (using the File System, FTP Site or the Remote
Site option). 
</p>
        <p>
If you are using Windows Authentication in your IIS 7.0 Web site, you must be running
Visual Studio 2008 using the built-in Administrator account and therefore also running
the Remote Debugging monitor on the remote computer using the built-in Administrator
account. The password for the Administrator account must be the same on the client
and remote server computers. 
</p>
        <p>
In addition, you can do the following: 
</p>
        <ul>
          <li>
            <p>
Use the FTP Site option to connect to the remote IIS 7.0 Web site, and use Anonymous
authentication. Then, you do not need to use the built-in Administrator account, as
long as the account you are using is an Administrative user on the remote server computer.
</p>
          </li>
          <li>
            <p>
Use the Remote Site option to connect to the remote IIS 7.0 Web site, and use Basic
or Digest authentication. Then, you do not need to use the built-in Administrator
account, as long as the account you are using is an Administrative user on the remote
server computer.
</p>
          </li>
        </ul>
        <p>
If you need to use Windows Authentication in your IIS 7.0 Web site, and you cannot
use synchronized Administrator accounts, you must turn off UAC on the remote server
computer and reboot prior to attempting to debug.  This is not recommended for
production servers as it may negatively affect the security of your server. 
</p>
        <p>
          <strong>To set up remote debugging in a domain environment</strong>
        </p>
        <p>
Debugging in a domain environment is simpler to configure. To debug in a domain environment,
you must: 
</p>
        <p>
1. Make the domain account you will be using to run Visual Studio 2008 a member of
the Administrators group on the remote server computer. 
</p>
        <p>
2. Log on to the remote server computer using the domain account, and run the Remote
Debugging monitor (msvsmon.exe) using the "Run As Administrator" option. 
</p>
        <p>
You also have an option to run the Remote Debugging monitor as a service by right
clicking the Visual Studio 2008 Remote Debugger Configuration Wizard from the Start
menu, and choosing "Run As Administrator".  You can let the Remote Debugging
monitor service run as LocalSystem. 
</p>
        <p>
3. Log on to the Visual Studio 2008 client computer with the domain account. 
Run Visual Studio 2008 by right-clicking its icon in the Start menu, and choosing
"Run As Administrator". 
</p>
        <p>
4. Open the remote IIS 7.0 Web site using the FTP Site or the Remote Site option.
</p>
        <img width="0" height="0" src="http://blog.ilovedoudou.com/aggbug.ashx?id=37cb5c22-e666-42ee-9371-8436cd6ba0bb" />
      </body>
      <title>Using Visual Studio 2008 with IIS 7.0</title>
      <guid isPermaLink="false">http://blog.ilovedoudou.com/PermaLink,guid,37cb5c22-e666-42ee-9371-8436cd6ba0bb.aspx</guid>
      <link>http://blog.ilovedoudou.com/PermaLink,guid,37cb5c22-e666-42ee-9371-8436cd6ba0bb.aspx</link>
      <pubDate>Thu, 20 Mar 2008 15:26:20 GMT</pubDate>
      <description>&lt;h3&gt;&lt;a title="http://learn.iis.net/page.aspx/387/using-visual-studio-2008-with-iis-70/" href="http://learn.iis.net/page.aspx/387/using-visual-studio-2008-with-iis-70/"&gt;http://learn.iis.net/page.aspx/387/using-visual-studio-2008-with-iis-70/&lt;/a&gt;
&lt;/h3&gt;
&lt;h3&gt;Using Visual Studio 2008 with IIS 7.0
&lt;/h3&gt;
&lt;p&gt;
Author: &lt;b&gt;Mike Volodarsky&lt;/b&gt; 
&lt;p&gt;
Published on March 05, 2008 by &lt;a href="http://forums.iis.net/members/mvolo.aspx"&gt;mvolo&lt;/a&gt; 
&lt;p&gt;
Updated on March 12, 2008 by &lt;a href="http://forums.iis.net/members/mvolo.aspx"&gt;mvolo&lt;/a&gt; 
&lt;p&gt;
Average Rating &lt;a href="http://learn.iis.net/"&gt;&lt;img title="Poor" src="http://learn.iis.net/themes/iis/images/star-community-left-off.png"&gt;&lt;/a&gt;&lt;a href="http://learn.iis.net/"&gt;&lt;img title="Poor" src="http://learn.iis.net/themes/iis/images/star-community-right-off.png"&gt;&lt;/a&gt;&lt;a href="http://learn.iis.net/"&gt;&lt;img title="Fair" src="http://learn.iis.net/themes/iis/images/star-community-left-off.png"&gt;&lt;/a&gt;&lt;a href="http://learn.iis.net/"&gt;&lt;img title="Fair" src="http://learn.iis.net/themes/iis/images/star-community-right-off.png"&gt;&lt;/a&gt;&lt;a href="http://learn.iis.net/"&gt;&lt;img title="Average" src="http://learn.iis.net/themes/iis/images/star-community-left-off.png"&gt;&lt;/a&gt;&lt;a href="http://learn.iis.net/"&gt;&lt;img title="Average" src="http://learn.iis.net/themes/iis/images/star-community-right-off.png"&gt;&lt;/a&gt;&lt;a href="http://learn.iis.net/"&gt;&lt;img title="Good" src="http://learn.iis.net/themes/iis/images/star-community-left-off.png"&gt;&lt;/a&gt;&lt;a href="http://learn.iis.net/"&gt;&lt;img title="Good" src="http://learn.iis.net/themes/iis/images/star-community-right-off.png"&gt;&lt;/a&gt;&lt;a href="http://learn.iis.net/"&gt;&lt;img title="Excellent" src="http://learn.iis.net/themes/iis/images/star-community-left-off.png"&gt;&lt;/a&gt;&lt;a href="http://learn.iis.net/"&gt;&lt;img title="Excellent" src="http://learn.iis.net/themes/iis/images/star-community-right-off.png"&gt;&lt;/a&gt;&amp;nbsp;
Rate It (0) Thank you for your feedback! 
&lt;dl&gt;
&lt;dt&gt;Tags 
&lt;dd&gt;
&lt;a href="http://learn.iis.net/themes/iis/pages/search.aspx?q=IIS%207.0%20Visual%20Studio%202008%20debugging%20publishing%20web%20site%20web%20application"&gt;IIS
7.0 Visual Studio 2008 debugging publishing web site web application&lt;/a&gt;
&lt;/dd&gt;
&lt;/dl&gt;
&lt;h4&gt;Introduction
&lt;/h4&gt;
&lt;p&gt;
Visual Studio® provides several options for working with IIS when developing web sites
and applications. These include the Web application and Web site projects.&amp;nbsp; In
Visual Studio 2008, these features receive a much awaited upgrade to properly support
IIS 7.0 in Windows Vista® and Windows Server® 2008. In addition, the recently released
Web Deployment Project 2008 also provides support for IIS 7.0. 
&lt;p&gt;
This article provides an overview of using Visual Studio 2008 Web development features
with IIS 7.0, including information on the steps necessary to enable these features
to work correctly. 
&lt;h5&gt;Prerequisites
&lt;/h5&gt;
&lt;p&gt;
To use Visual Studio 2008 to work with Web sites and applications on your local machine,
do the following: 
&lt;p&gt;
1. Install IIS 7.0&lt;br&gt;
2. Install ASP.NET&lt;br&gt;
3. Install IIS 6.0 Metabase Compatibility&lt;br&gt;
On Windows Vista, open the Control Panel, click Programs and Features, click the Turn
Windows features on and off link, check the “Internet Information Services” check
box, as well as the “Web Management Tools \ IIS 6 Management Compatibility \ IIS Metabase
and IIS 6 configuration compatibility” and “World Wide Web Services \ Application
Development Features \ ASP.NET” check boxes under it.&amp;nbsp;&amp;nbsp; 
&lt;br&gt;
&lt;a href="http://learn.iis.net/file.axd?i=812"&gt;&lt;img alt="" src="http://learn.iis.net/file.axd?i=812" border="0"&gt;&lt;/a&gt;
&lt;br&gt;
On Windows Server 2008, use the Server Manager tool to install the Web Server (IIS)
role, and add the “Management Tools \ IIS 6 Management Compatibility \ IIS 6 Metabase
Compatibility” and “Application Development \ ASP.NET“ role services. For more information,
see &lt;a href="http://learn.iis.net/page.aspx/29/installing-iis7-on-windows-server-2008/"&gt;Installing
IIS 7.0 on Windows Server 2008.&lt;br&gt;
&lt;/a&gt;
&lt;br&gt;
To use Visual Studio 2008 to work with Web sites and applications on a remote machine,
see the "Using Visual Studio 2008 with a Remote IIS 7.0 Server" section later in this
article. 
&lt;h5&gt;Starting Visual Studio 2008 as Administrator
&lt;/h5&gt;
&lt;p&gt;
Certain tasks, including debugging and creating local IIS applications, require starting
Visual Studio as a user with Administrative privileges. On Windows Vista, and Windows
Server 2008 when not running as the built-in Administrator account, this requires
right-clicking the Visual Studio 2008 icon in the Start Menu and choosing “Run As
Administrator”. 
&lt;p&gt;
To make this process easier, you can create a shortcut and check the “Run this program
as an administrator” check box in the Compatibility tab of the shortcut properties. 
&lt;h4&gt;Create a New IIS 7.0 Web Site or Application Project
&lt;/h4&gt;
&lt;p&gt;
Visual Studio provides two conceptual models for working with Web applications: the
Web site project model, and the Web application project model. 
&lt;p&gt;
While both options allow you to create Web applications and publish them to an IIS
7.0 server, they do have significant differences in how the corresponding ASP.NET
application is built and deployed. Some of the differences between the two models
are: 
&lt;ul&gt;
&lt;li&gt;
The Web application project option requires the source application files to be located
on the local file system, or, on a network share. However, you can subsequently publish
the Web application to a remote IIS 7.0 Web site by using a network share, FTP, or
Front Page Server Extensions. 
&lt;li&gt;
The Web site project option allows you to connect directly to a local IIS 7.0 Web
site, or to a remote IIS 7.0 Web site by using a network share, FTP, or Front Page
Server Extensions. With the Web site project, you work directly with the content of
your IIS 7.0 Web site and there is no project file.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
You can find the detailed explanation of the two models and their differences in &lt;a href="http://msdn2.microsoft.com/en-us/library/aa730880%28VS.80%29.aspx"&gt;http://msdn2.microsoft.com/en-us/library/aa730880(VS.80).aspx&lt;/a&gt;. 
&lt;p&gt;
&lt;strong&gt;Note&lt;/strong&gt;: Visual Studio 2008 provides the options to create a New project
and Open an existing project.&amp;nbsp; This does not necessarily mean that you must create
a new IIS web application or open an existing application – you can use either of
the options with an existing IIS web application. 
&lt;p&gt;
&lt;strong&gt;To create a new project using the Web application project option:&lt;/strong&gt; 
&lt;ul&gt;
&lt;li&gt;
In Visual Studio, use the “File menu \ New \ Project ...” option and select the “ASP.NET
Web Application” template.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;strong&gt;Note&lt;/strong&gt;: Unlike the Web site project option, you must place the application
files on the local file system or a network share, and later use the Publish option
to publish the contents of your application to an IIS 7.0 Web site. 
&lt;p&gt;
&lt;strong&gt;To publish the project to an IIS 7.0 Web site:&lt;/strong&gt; 
&lt;p&gt;
1. Create the IIS 7.0 Web site using IIS Manager, AppCmd, or another configuration
tool. 
&lt;p&gt;
For more information, see &lt;a href="http://technet2.microsoft.com/windowsserver2008/en/library/f6c26eb7-ad7e-4fe2-9239-9f5aa4ff44ce1033.mspx?mfr=true"&gt;http://technet2.microsoft.com/windowsserver2008/en/library/f6c26eb7-ad7e-4fe2-9239-9f5aa4ff44ce1033.mspx?mfr=true&lt;/a&gt;.
Alternatively, use an existing IIS 7.0 Web site. 
&lt;p&gt;
2. In Visual Studio, use the "Build \ Publish" option to publish the contents of your
Web application to an IIS 7.0 Web site. 
&lt;p&gt;
&lt;a href="http://learn.iis.net/file.axd?i=814"&gt;&lt;img alt="" src="http://learn.iis.net/file.axd?i=814" border="0"&gt;&lt;/a&gt; 
&lt;p&gt;
&lt;strong&gt;Note&lt;/strong&gt;: The Publish Web dialog by default publishes only the parts
of your project that comprise your web application - it does not publish the project
file, obj directory, and other files. This is important because exposing these components
to your web users may be a security risk. 
&lt;p&gt;
By clicking the "…" button, you can chose one of the four options for publishing your
Web site: 
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;File System&lt;/strong&gt;. When using this option, Visual Studio opens / creates
the web application as a folder, and uses the built-in ASP.NET Development Server
to host the Web site. This option may be sufficient for basic testing of ASP.NET applications
– however, this mode does not support running ASP.NET applications in Integrated mode,
and it does not support application technologies other than ASP.NET (such as PHP,
ASP, CGI, etc). 
&lt;li&gt;
&lt;strong&gt;Local IIS&lt;/strong&gt;. When using this option, Visual Studio allows you to publish
your application files to a local IIS 7.0 Web site or application. You can also use
the dialog to create new IIS 7.0 applications or virtual directories to publish your
files to. 
&lt;li&gt;
&lt;strong&gt;FTP Site&lt;/strong&gt;. When using this option, Visual Studio supports editing
your application files if they are shared through FTP.&amp;nbsp; You can still use Visual
Studio to debug your applications by configuring the URL of your application in project
start settings. For more information, see Using Visual Studio 2008 with a Remote IIS
7.0 Server section later in this article. 
&lt;li&gt;
&lt;strong&gt;Remote Site&lt;/strong&gt;. Using this option, Visual Studio can connect to a remote
IIS server. To use this option, you need to have Front Page Server Extensions installed
on the remote server and configure your Web site to use FPSE.&amp;nbsp; For more information
on this, see the "Using Visual Studio 2008 with a Remote IIS 7.0 Server" section later
in this article.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
You can also map the Web application project directory as a virtual directory on the
local IIS 7.0 installation by opening the project Properties, clicking the “Web” tab,
and using the “Create Virtual Directory” button.&amp;nbsp; You can use the “Create Virtual
Directory” option as a quick way to host your Web application locally on IIS without
going through the “Publish Web” option. 
&lt;p&gt;
However, this option is not generally recommended because it places all of the project
files, source files, object files, and other temporary files in the servable namespace
of the IIS 7.0 virtual directory, which may result in a security risk.&amp;nbsp; Using
the Publish options which by default only publish the web servable portions of the
project is a better practice. 
&lt;p&gt;
3. Configure debugging. 
&lt;p&gt;
By default, projects created using the Web application project model use the built-in
ASP.NET Development Server when testing or debugging your project. 
&lt;p&gt;
This provides a convenient way to test your ASP.NET application without IIS 7.0 –
however, we recommend that you instead configure Visual Studio to test your application
in the IIS 7.0 environment.&amp;nbsp; The reasons for this are: 
&lt;ul&gt;
&lt;li&gt;
The ASP.NET Development Server does not support hosting ASP.NET applications in Integrated
mode, which is the default mode of operation used by IIS 7.0. This may introduce differences
in application behavior.&amp;nbsp; 
&lt;li&gt;
The ASP.NET Development Server does not support many of the IIS configuration features,
so if your application relies or uses them, it’s behavior may be different or incorrect
when hosted under the ASP.NET Development Server. 
&lt;li&gt;
The ASP.NET Development Server does not support hosting portions of your application
that utilize application technologies other than ASP.NET, such as PHP, CGI, and other
third party frameworks.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
If you are developing on Windows Vista, you can easily take advantage of IIS 7.0 to
test your application locally using the same environment it will be on when it is
deployed - use the "Create Virtual Directory" option or the Publish Web dialog as
discussed earlier in this article.&amp;nbsp; 
&lt;p&gt;
Alternatively, you can configure Visual Studio to connect to the a remote IIS 7.0
server to which you publish your application. 
&lt;p&gt;
In those cases, you can configure Visual Studio to debug your application in the IIS
7.0 environment. To do this, right-click on the project node, chose "Properties …",
and click the "Web" tab.&amp;nbsp; In the "Web" tab, select the "Use IIS Web server" radio
button and type in the base URL of your Web application on the remote server. 
&lt;p&gt;
&lt;a href="http://learn.iis.net/file.axd?i=815"&gt;&lt;img alt="" src="http://learn.iis.net/file.axd?i=815" border="0"&gt;&lt;/a&gt; 
&lt;p&gt;
For more information on configuring remote debugging, see "Debugging IIS 7.0 Web Applications"
later in this article. 
&lt;p&gt;
&lt;strong&gt;To create a new project using the Web site project option:&lt;/strong&gt; 
&lt;p&gt;
1. Create the IIS 7.0 Web site using IIS Manager, AppCmd, or another configuration
tool. For more information, see &lt;a href="http://technet2.microsoft.com/windowsserver2008/en/library/f6c26eb7-ad7e-4fe2-9239-9f5aa4ff44ce1033.mspx?mfr=true"&gt;http://technet2.microsoft.com/windowsserver2008/en/library/f6c26eb7-ad7e-4fe2-9239-9f5aa4ff44ce1033.mspx?mfr=true&lt;/a&gt;.
Alternatively, use an existing IIS 7.0 Web site. 
&lt;p&gt;
2. In Visual Studio, use the “File menu \ New \ Web Site …” option to create a new
Web site project using the IIS 7.0 Web site you created. 
&lt;p&gt;
In the “New Web Site” dialog, select one of the Visual Studio Web site templates,
such as the ASP.NET Web Site. 
&lt;p&gt;
Next, indicate where this web site should be located. To do this, click the “Browse
…” button, which displays a dialog similar to what you get when publishing a Web application
project.&amp;nbsp; Here, click the “Local IIS” button again to select an existing Web
site or application on the local machine, or create a new Web application or virtual
directory to host your project files.&amp;nbsp; 
&lt;p&gt;
Alternatively, you will have the option to place your new Web site project on the
local File System for use with the ASP.NET Development Server, upload it to a remote
server using FTP, or upload it to a remote IIS server using Front Page Extensions.&amp;nbsp;
For more information on connecting to a remote server, see the "Using Visual Studio
2008 with a Remote IIS 7.0 Server" section later in this article. 
&lt;h4&gt;To Open an Existing IIS 7.0 Web Site or Application
&lt;/h4&gt;
&lt;p&gt;
&lt;strong&gt;To create a project based on an existing IIS 7.0 Web site&lt;/strong&gt;: 
&lt;p&gt;
1. Open the existing IIS 7.0 Web site using the “File menu \ Open \ Web Site …” option.&amp;nbsp; 
&lt;p&gt;
Click “Local IIS” to connect to the local IIS 7.0 server.&amp;nbsp; 
&lt;p&gt;
In the resulting dialog, you can select the Web site or a child application to open.&amp;nbsp;
Alternatively, you can use the “Create New Web Application”, “Create New Virtual Directory”,
and “Delete” buttons in the top right hand corner to manage the web site hierarchy. 
&lt;p&gt;
&lt;strong&gt;Note&lt;/strong&gt;: Be sure to back up your configuration first before making changes. 
&lt;p&gt;
&lt;a href="http://learn.iis.net/file.axd?i=816"&gt;&lt;img alt="" src="http://learn.iis.net/file.axd?i=816" border="0"&gt;&lt;/a&gt; 
&lt;p&gt;
If you do not have IIS 7.0 or any of the prerequisites installed, Visual Studio 2008
displays a message when you attempt to connect to the Local IIS server telling you
to install the required components. To do this, see the "Prerequisites" section earlier
in this article. 
&lt;p&gt;
&lt;a href="http://learn.iis.net/file.axd?i=817"&gt;&lt;img alt="" src="http://learn.iis.net/file.axd?i=817" border="0"&gt;&lt;/a&gt; 
&lt;p&gt;
&lt;strong&gt;Note: &lt;/strong&gt;Visual Studio provides several different options for working
with existing Web sites, in addition to connecting to an existing IIS 7.0 Web site.
These options include: 
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;File System&lt;/strong&gt;. When using this option, Visual Studio opens / creates
the web application as a folder, and uses the built-in ASP.NET Development Server
to host the Web site. You can use this option to connect to an existing IIS 7.0 web
site by opening its virtual directory’s root folder on the local file system or through
a network share. 
&lt;li&gt;
&lt;strong&gt;FTP Site&lt;/strong&gt;. When using this option, Visual Studio supports editing
your application files if they are shared through FTP. For more information, see the
"Using Visual Studio 2008 with a Remote IIS 7.0 Server" section later in this article. 
&lt;li&gt;
&lt;strong&gt;Remote Site&lt;/strong&gt;. Using this option, Visual Studio can connect to a remote
IIS server. To use this option, you need to have Front Page Server Extensions installed
on the remote server and configure your Web site to use FPSE.&amp;nbsp; For more information
on this, see the "Using Visual Studio 2008 with a Remote IIS 7.0 Server" section later
in this article.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
2. Configure debugging.&amp;nbsp; 
&lt;p&gt;
If you have opened an existing IIS 7.0 Web site using the Local IIS or Remote Site
options, your project is automatically configured to use the IIS 7.0 Web site when
debugging so no further action is necessary (the Remote Site option requires additional
configuration to enable remote debugging, as explained later in the article).&amp;nbsp; 
&lt;p&gt;
If you have opened your Web site project using the File System or FTP site options,
it is by default configured to use the ASP.NET Development Server for testing and
debugging. It is recommended that you configure Visual Studio to use the IIS 7.0 server
on which the Web site is located for debugging. 
&lt;p&gt;
To do this, right-click on the Web site project node, chose "Start Options ...".&amp;nbsp;
In the dialog, select "Use custom server" radio button and type in the base URL of
your Web application on the remote server. 
&lt;p&gt;
&lt;a href="http://learn.iis.net/file.axd?i=818"&gt;&lt;img alt="" src="http://learn.iis.net/file.axd?i=818" border="0"&gt;&lt;/a&gt; 
&lt;h4&gt;Using Visual Studio 2008 with a Remote IIS 7.0 Server
&lt;/h4&gt;
&lt;p&gt;
In order to open an existing Web site or create a new Web site on a remote IIS server,
you can use many of the options mentioned earlier: 
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;
&lt;strong&gt;File System&lt;/strong&gt;. You can create a file share pointing to the root virtual
directory of your Web application, and use the "File System" option to connect to
it.&amp;nbsp; To use this option, select the "File System" button in the “Open Web Site”
dialog. You then have to configure the URL of your application in project start settings
to be able to debug the application using Visual Studio. You cannot create new IIS
Web sites, applications, or virtual directories on the remote machine using this option.
&lt;/p&gt;
&lt;li&gt;
&lt;p&gt;
&lt;strong&gt;FTP Site&lt;/strong&gt;. If your Web site or application files are shared using
FTP, you can access these files using this option. You then have to configure the
URL of your application in project start settings to be able to debug the application
using Visual Studio. To use this option, select the "FTP Site" button in the "Open
Web Site" dialog.&amp;nbsp; You cannot create new IIS Web sites, applications, or virtual
directories on the remote machine using this option.
&lt;/p&gt;
&lt;li&gt;
&lt;p&gt;
&lt;strong&gt;Remote Site&lt;/strong&gt;.&amp;nbsp; This option uses Front Page Server Extensions
to connect to a remote IIS server.&amp;nbsp; To use this option to connect to a remote
IIS 7.0 server on Windows Server 2008 or Windows Vista computers, you first need to
install Front Page Server Extensions on the remote computer. 
&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h5&gt;Connect to an IIS 7.0 Web site using FTP
&lt;/h5&gt;
&lt;p&gt;
You can use the FTP Site option if you have used FTP to share the IIS 7.0 virtual
directory you want to publish to. 
&lt;p&gt;
&lt;strong&gt;Note&lt;/strong&gt;: When using FTP, you cannot create or edit IIS 7.0 Web sites,
applications, or virtual directories, but you can publish and edit files. 
&lt;p&gt;
To use this option, provide the address of the FTP server, the port, the directory
to which you are connecting, and logon credentials if not using anonymous access. 
&lt;p&gt;
&lt;a href="http://learn.iis.net/file.axd?i=819"&gt;&lt;img alt="" src="http://learn.iis.net/file.axd?i=819" border="0"&gt;&lt;/a&gt; 
&lt;p&gt;
For more information on using the FTP server included in Windows Vista and Windows
Server 2008, see &lt;a href="http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/31c2427c-c0a5-49fa-9e03-823f34fba3e8.mspx?mfr=true"&gt;FTP
Site Setup (IIS 6.0)&lt;/a&gt;. To use the new &lt;a href="http://learn.iis.net/ControlPanel/FTP%207.0"&gt;FTP
7.0&lt;/a&gt;, which is available as a download from IIS.NET, see &lt;a href="http://www.iis.net/articles/view.aspx/IIS7/Managing-IIS7/Using-FTP-Server-in-IIS7/Adding-FTP-to-a-Web-site"&gt;Adding
FTP to a Web Site&lt;/a&gt;. 
&lt;h5&gt;Connect to an IIS 7.0 Web Site Using Front Page Server Extensions
&lt;/h5&gt;
&lt;p&gt;
You can use the Remote Site option if you have shared the IIS 7.0 Web site you want
to publish to using Front Page Server Extensions. Unlike the FTP Site option, you
can create and edit IIS 7.0 applications and virtual directories when using this option. 
&lt;p&gt;
&lt;a href="http://go.microsoft.com/fwlink/?LinkId=86544"&gt;Front Page Server Extensions
for IIS 7.0&lt;/a&gt; are available as a free download for Windows Vista and Windows Server
2008.&amp;nbsp;&amp;nbsp; For more information on installing and enabling Front Page Server
Extensions for IIS 7.0 Web sites, see &lt;a href="http://go.microsoft.com/fwlink/?LinkId=88546"&gt;Installing
Front Page Server Extensions for IIS 7.0&lt;/a&gt;. 
&lt;p&gt;
To quickly enable a remote Web site to be used with the “Remote Site” option in Visual
Studio, do the following: 
&lt;p&gt;
1. Download and install FPSE on the remote IIS 7.0 server. The provided installer
automatically installs all required IIS 7.0 components. 
&lt;p&gt;
2. Create an IIS 7.0 web site to connect to (optional, if the site does not already
exist). 
&lt;p&gt;
3. Enable either Basic Authentication or Windows Authentication methods for the Web
site. This is required for FPSE to be able to manage the site. 
&lt;p&gt;
&lt;strong&gt;Note&lt;/strong&gt;: If you use Basic authentication, the username and password
are transmitted in clear text so you should not use it for connecting to web sites
over public networks unless you also use SSL to protect the communication&lt;em&gt;.&lt;/em&gt; 
&lt;p&gt;
4. Enable the web site to be managed with FPSE. You can do this by executing the following
from the command line: 
&lt;p&gt;
&lt;samp&gt;&amp;gt; &lt;strong&gt;"%CommonProgramFiles%\Microsoft Shared\Web Server Extensions\50\bin\owsadm.exe"
-o install -p LM/W3SVC/&amp;lt;SITEID&amp;gt; -u &amp;lt;USERNAME&amp;gt;&lt;/strong&gt;
&lt;/samp&gt;
&lt;p&gt;
Where &amp;lt;SITEID&amp;gt; is the site id of the Web site you want to enable for FPSE, and
the &amp;lt;USERNAME&amp;gt; is the Windows account that can act as FPSE administrator. 
&lt;p&gt;
5. Connect to the site Using the “Remote Site” option in the Open Web Site dialog
or the New Site dialog. This allows you to connect to an existing Front Page Server
Extensions – enabled web site, or create new Web applications and virtual directories. 
&lt;p&gt;
&lt;a href="http://learn.iis.net/file.axd?i=820"&gt;&lt;img alt="" src="http://learn.iis.net/file.axd?i=820" border="0"&gt;&lt;/a&gt; 
&lt;p&gt;
If you receive the following error dialog during connection, double-check that you
have installed FPSE on the remote server, and have enabled FPSE management for the
Web site you are attempting to connect to. 
&lt;p&gt;
&lt;a href="http://learn.iis.net/file.axd?i=821"&gt;&lt;img alt="" src="http://learn.iis.net/file.axd?i=821" border="0"&gt;&lt;/a&gt; 
&lt;p&gt;
If you are using Windows authentication for your FPSE-enabled Web site, Visual Studio
attempts to authenticate using the account under which it was started.&amp;nbsp; If this
authentication fails, it prompts you to provide credentials for authentication with
the remote server.&amp;nbsp; 
&lt;p&gt;
If you are using Basic authentication, Visual Studio immediately prompts you for credentials. 
&lt;p&gt;
&lt;strong&gt;Note&lt;/strong&gt;: Basic authentication sends credentials in clear text, so it
can lead to unintended disclosure of your username and password if the site is not
protected with SSL. For this reason, we recommend using Windows authentication for
intranet environments, and using Basic authentication over SSL for internet environments&lt;em&gt;.&lt;/em&gt; 
&lt;p&gt;
If you have not enabled a suitable authentication method (Windows Authentication,
Basic Authentication, or Digest Authentication), you receive the following error dialog
when connecting. Turn on one of the above authentication methods to fix this problem. 
&lt;p&gt;
&lt;a href="http://learn.iis.net/file.axd?i=822"&gt;&lt;img alt="" src="http://learn.iis.net/file.axd?i=822" border="0"&gt;&lt;/a&gt; 
&lt;p&gt;
&lt;strong&gt;Note&lt;/strong&gt;: The "New Web Site …" button in the "Remote Site" dialog cannot
be used to create a new IIS 7.0 Web site.&amp;nbsp; Instead, it is used to create a new
Web application with the specified path for an existing Front Page Server Extensions
– enabled IIS 7.0 Web site. 
&lt;h4&gt;Debugging IIS 7.0 Web Applications
&lt;/h4&gt;
&lt;p&gt;
After you have opened a Web site or application in Visual Studio, you can take advantage
of Visual Studio debugging features to test it. In doing so, you have the following
options: 
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Use F5 debugging to debug from Visual Studio&lt;/strong&gt;. If you have opened
an IIS 7.0 Web site project using one of the options discussed earlier, this gives
you the most convenient way to debug your web application. You can debug it simply
by pressing F5, and then interacting with your application using a browser window.
In the rest of this article, we will focus on this option.&lt;strong&gt; &lt;/strong&gt; 
&lt;li&gt;
&lt;strong&gt;Attach to the IIS worker process directly&lt;/strong&gt;. If you know which IIS
worker process is hosting your application, you can use this option to attach directly
to that process. 
&lt;/li&gt;
&lt;/ul&gt;
&lt;h5&gt;Use F5 to Debug a Local IIS 7.0 Web Application from Visual Studio
&lt;/h5&gt;
&lt;p&gt;
F5 debugging provides the most convenient way to debug your Web application with Visual
Studio. To use it, do the following: 
&lt;p&gt;
1. Open an IIS 7.0 Web site using one of the options discussed earlier. 
&lt;p&gt;
2. Select the project file to which you want to make the initial request (optional). 
&lt;p&gt;
3. Set the desired breakpoints in your application source code (optional, you can
also set them during debugging). 
&lt;p&gt;
4. Press F5 to begin debugging.&amp;nbsp; Visual Studio will make an initial request to
the IIS 7.0 web application, attach to the hosting IIS worker process, and open a
new browser window where you can interact with your application. 
&lt;p&gt;
In order to successfully debug a local IIS 7.0 Web application, you must meet the
following requirements: 
&lt;p&gt;
1. Be logged on as a user that has Administrative privileges on the local computer
(Either the built-in Administrator account, or an account that is a member of the
built-in Administrators group). 
&lt;p&gt;
2. Start Visual Studio in Administrator mode by right-clicking the Visual Studio 2008
icon in the Start menu, and selecting “Run As Administrator”.&amp;nbsp; 
&lt;p&gt;
If you do not do this, Visual Studio receives a filtered UAC token and cannot debug. 
&lt;p&gt;
If you have opened an ASP.NET application using the “File System” option, Visual Studio
by default starts the ASP.NET Development Server to host your application.&amp;nbsp; In
this option, IIS 7.0 is not involved, and you are not required to be an Administrator
to debug your application. 
&lt;p&gt;
However, when using the ASP.NET Development Server, you do not have the full range
of features and services that IIS 7.0 environment provides, which may make your application
behave differently from when it is deployed on IIS 7.0. This includes the following: 
&lt;ul&gt;
&lt;li&gt;
No support for ASP.NET Integrated Mode. 
&lt;li&gt;
No support for IIS 7.0 features such as compression, native URL authentication, request
filtering, and others. 
&lt;li&gt;
No support for application technologies other than ASP.NET, such as PHP, ASP, CGI,
and others.&lt;/li&gt;
&lt;/ul&gt;
&lt;h5&gt;Use F5 to Debug a Remote IIS 7.0 Web Application from Visual Studio
&lt;/h5&gt;
&lt;p&gt;
You can use F5 to debug an IIS 7.0 Web application running on a remote server. The
process is similar to what was described earlier for debugging local IIS 7.0 applications,
but requires additional configuration to enable remote debugging to take place. 
&lt;p&gt;
In addition, you must open the remote IIS 7.0 Web site or application project using
the File System, FTP Site or Remote Site options as discussed in the "Using Visual
Studio 2008 with a Remote IIS 7.0 Server" section earlier in this article. 
&lt;p&gt;
In order to successfully debug a remote application, you must also meet the following
requirements: 
&lt;p&gt;
1. Install the Remote Debugging components on the server machine. For more information,
see &lt;a href="http://msdn2.microsoft.com/en-us/library/bt727f1t.aspx"&gt;How to: Set Up
Remote Debugging&lt;/a&gt;. 
&lt;p&gt;
2. Run the Remote Debugging monitor (msvsmon.exe) on the server machine.&amp;nbsp; See
notes further about how to do this properly. 
&lt;p&gt;
3. Open the required firewall ports for remote debugging.&amp;nbsp; 
&lt;p&gt;
When you run msvsmon.exe for the first time on the remote machine, it warns you if
the ports are not open, and offers to open them automatically. If you want to configure
the firewall manually or to see which ports are opened, see &lt;a href="http://msdn2.microsoft.com/en-us/library/bb385831.aspx"&gt;How
to: Manually Configure the Windows Vista Firewall for Remote Debugging&lt;/a&gt;. 
&lt;p&gt;
4. If you are using a Web application project and publishing to a remote IIS 7.0 server,
or if you have opened the remote Web site project using the "File System" or "FTP
Site" options, you must configure Visual Studio project start options to enable debugging. 
&lt;p&gt;
To do this for a Web site project, right-click on the Web site project node, chose
"Start Options …".&amp;nbsp; In the dialog, select "Use custom server" radio button and
type in the base URL of your Web application on the remote server. 
&lt;p&gt;
For a Web application project, right-click on the project node, chose "Properties
…", and click the "Web" tab.&amp;nbsp; In the "Web" tab, select the "Use IIS Web server"
radio button and type in the base URL of your Web application on the remote server. 
&lt;p&gt;
This process is described in detail earlier in the article. 
&lt;p&gt;
5. Configure permissions to allow debugging to take place.&amp;nbsp; See notes further
about how to do this properly. 
&lt;p&gt;
How you run the Remote Debugging monitor (msvsmon.exe) and configure your permissions
depends on whether your are operating in a domain or workgroup environment. 
&lt;p&gt;
&lt;strong&gt;To set up remote debugging in a workgroup environment&lt;/strong&gt; 
&lt;p&gt;
1. Create an account with the same username and password on both the Visual Studio
2008 client computer and the remote server computer. This account must have Administrative
rights on the remote server computer. 
&lt;p&gt;
&lt;strong&gt;Note&lt;/strong&gt;: If you are using Windows Authentication in your application,
this account must be the built-in Administrator account.&amp;nbsp; This means that the
built-in Administrator account must have the same password on both computers. 
&lt;p&gt;
2. Log on to the remote server computer using the account created in Step 1, and run
the Visual Studio 2008 Remote Debugger from the Start menu by right-clicking it, and
choosing "Run As Administrator". 
&lt;p&gt;
This is important – otherwise the Remote Debugging monitor receives a UAC-filtered
token and cannot debug IIS worker processes. 
&lt;p&gt;
&lt;strong&gt;Note&lt;/strong&gt;: Do not use the RunAs.exe command to run the msvsmon.exe process,
as this always results in a UAC-filtered token and prevents debugging from working&lt;em&gt;.&lt;/em&gt; 
&lt;p&gt;
You also have an option to run the Remote Debugging monitor as a service by opening
the Visual Studio 2008 Remote Debugger Configuration Wizard from the Start menu.&amp;nbsp;
If using this option, you must configure the Remote Debugging monitor to log on using
the account created in Step 1.&amp;nbsp; You then also must grant the corresponding account
the "Log On As A Service" right in the computer’s Local Security Policy console. 
&lt;p&gt;
3. Log on to the Visual Studio 2008 client computer with the account created in step
#1.&amp;nbsp; Run Visual Studio 2008 by right-clicking its icon in the Start menu, and
choosing "Run As Administrator". 
&lt;p&gt;
&lt;strong&gt;Note&lt;/strong&gt;: It is very important to both log in using the account created
in Step 1, and use the "Run As Administrator" option when running Visual Studio.&amp;nbsp;
As mentioned in Step 1, the account you are using MUST be an Administrative user on
the remote server machine. 
&lt;p&gt;
4. Open the remote IIS 7.0 Web site (using the File System, FTP Site or the Remote
Site option). 
&lt;p&gt;
If you are using Windows Authentication in your IIS 7.0 Web site, you must be running
Visual Studio 2008 using the built-in Administrator account and therefore also running
the Remote Debugging monitor on the remote computer using the built-in Administrator
account. The password for the Administrator account must be the same on the client
and remote server computers. 
&lt;p&gt;
In addition, you can do the following: 
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;
Use the FTP Site option to connect to the remote IIS 7.0 Web site, and use Anonymous
authentication. Then, you do not need to use the built-in Administrator account, as
long as the account you are using is an Administrative user on the remote server computer.
&lt;/p&gt;
&lt;li&gt;
&lt;p&gt;
Use the Remote Site option to connect to the remote IIS 7.0 Web site, and use Basic
or Digest authentication. Then, you do not need to use the built-in Administrator
account, as long as the account you are using is an Administrative user on the remote
server computer.
&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
If you need to use Windows Authentication in your IIS 7.0 Web site, and you cannot
use synchronized Administrator accounts, you must turn off UAC on the remote server
computer and reboot prior to attempting to debug.&amp;nbsp; This is not recommended for
production servers as it may negatively affect the security of your server. 
&lt;p&gt;
&lt;strong&gt;To set up remote debugging in a domain environment&lt;/strong&gt; 
&lt;p&gt;
Debugging in a domain environment is simpler to configure. To debug in a domain environment,
you must: 
&lt;p&gt;
1. Make the domain account you will be using to run Visual Studio 2008 a member of
the Administrators group on the remote server computer. 
&lt;p&gt;
2. Log on to the remote server computer using the domain account, and run the Remote
Debugging monitor (msvsmon.exe) using the "Run As Administrator" option. 
&lt;p&gt;
You also have an option to run the Remote Debugging monitor as a service by right
clicking the Visual Studio 2008 Remote Debugger Configuration Wizard from the Start
menu, and choosing "Run As Administrator".&amp;nbsp; You can let the Remote Debugging
monitor service run as LocalSystem. 
&lt;p&gt;
3. Log on to the Visual Studio 2008 client computer with the domain account.&amp;nbsp;
Run Visual Studio 2008 by right-clicking its icon in the Start menu, and choosing
"Run As Administrator". 
&lt;p&gt;
4. Open the remote IIS 7.0 Web site using the FTP Site or the Remote Site option.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.ilovedoudou.com/aggbug.ashx?id=37cb5c22-e666-42ee-9371-8436cd6ba0bb" /&gt;</description>
      <comments>http://blog.ilovedoudou.com/CommentView,guid,37cb5c22-e666-42ee-9371-8436cd6ba0bb.aspx</comments>
      <category>Web</category>
    </item>
    <item>
      <trackback:ping>http://blog.ilovedoudou.com/Trackback.aspx?guid=5db542a9-5609-4a02-bf7d-f9e90ded46d7</trackback:ping>
      <pingback:server>http://blog.ilovedoudou.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.ilovedoudou.com/PermaLink,guid,5db542a9-5609-4a02-bf7d-f9e90ded46d7.aspx</pingback:target>
      <dc:creator>Kevin Mocha</dc:creator>
      <wfw:comment>http://blog.ilovedoudou.com/CommentView,guid,5db542a9-5609-4a02-bf7d-f9e90ded46d7.aspx</wfw:comment>
      <wfw:commentRss>http://blog.ilovedoudou.com/SyndicationService.asmx/GetEntryCommentsRss?guid=5db542a9-5609-4a02-bf7d-f9e90ded46d7</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
        </p>
        <h5>
          <u>
            <a title="http://weblogs.asp.net/scottgu/archive/2007/11/19/visual-studio-2008-and-net-3-5-released.aspx" href="http://weblogs.asp.net/scottgu/archive/2007/11/19/visual-studio-2008-and-net-3-5-released.aspx">http://weblogs.asp.net/scottgu/archive/2007/11/19/visual-studio-2008-and-net-3-5-released.aspx</a>
          </u>
        </h5>
        <p>
 
</p>
        <h5>
          <u>Quick Tour of Some of the New Features</u>
        </h5>
        <p>
Visual Studio 2008 and .NET 3.5 contain a ton of new functionality and improvements. 
Below are links to blog posts I've done myself as well as links to videos you can
watch to learn more about it: 
</p>
        <p>
          <u>
            <strong>VS 2008 Multi-Targeting Support</strong>
          </u>
        </p>
        <p>
VS 2008 enables you to build applications that target multiple versions of the .NET
Framework.  This means you can use VS 2008 to open, edit and build existing .NET
2.0 and ASP.NET 2.0 applications (including ASP.NET 2.0 applications using ASP.NET
AJAX 1.0), and continue to deploy these application on .NET 2.0 machines.  You
can learn more about how this works from my blog post here: 
</p>
        <ul>
          <li>
            <a href="http://weblogs.asp.net/scottgu/archive/2007/06/20/vs-2008-multi-targeting-support.aspx">VS
2008 Multi-Targeting Support</a>
          </li>
        </ul>
        <p>
          <strong>
            <u>ASP.NET AJAX and JavaScript Support</u>
          </strong>
        </p>
        <p>
.NET 3.5 has ASP.NET AJAX built-in (no separate download required).  In addition
to including all of the features in ASP.NET AJAX 1.0, ASP.NET 3.5 also now includes
richer support for UpdatePanels integrating with WebParts, ASP.NET AJAX integration
with controls like &lt;asp:menu&gt; and &lt;asp:treeview&gt;, WCF support for JSON,
and many other AJAX improvements. 
</p>
        <p>
VS 2008 and Visual Web Developer 2008 also now have great support for integrating
JavaScript and AJAX into your applications.  You can learn more about this from
my blog posts here: 
</p>
        <ul>
          <li>
            <a href="http://weblogs.asp.net/scottgu/archive/2007/06/21/vs-2008-javascript-intellisense.aspx">VS
2008 JavaScript Intellisense</a>
          </li>
          <li>
            <a href="http://weblogs.asp.net/scottgu/archive/2007/07/19/vs-2008-javascript-debugging.aspx">VS
2008 JavaScript Debugging</a>
          </li>
          <li>
            <a href="http://weblogs.asp.net/scottgu/archive/2007/08/19/using-asp-net-ajax-control-extenders-in-vs-2008.aspx">VS
2008 ASP.NET AJAX Control Extender Support</a>
          </li>
          <li>
            <a href="http://weblogs.asp.net/scottgu/archive/2007/08/01/vs-2008-javascript-intellisense-for-silverlight.aspx">VS
2008 JavaScript Intellisense for Silverlight</a>
          </li>
        </ul>
        <p>
You can watch some videos that discuss ASP.NET AJAX and Visual Studio 2008 support
for it <a href="http://www.asp.net/learn/3.5-videos/">here</a>.  
</p>
        <p>
I also highly recommend the excellent <a href="http://www.amazon.com/gp/product/1933988142/104-9219624-7383145?ie=UTF8&amp;tag=scoblo04-20&amp;linkCode=xm2&amp;camp=1789&amp;creativeASIN=1933988142">ASP.NET
AJAX in Action</a> book to learn more about ASP.NET AJAX (both client-side and server-side). 
</p>
        <p>
          <strong>
            <u>VS 2008 Web Designer and CSS Support</u>
          </strong>
        </p>
        <p>
VS 2008 and Visual Web Developer 2008 Express includes a significantly improved
HTML web designer (the same one that ships with Expression Web).  This delivers
support for split-view editing, nested master pages, and great CSS integration. 
Below are some articles I've written that discuss this more: 
</p>
        <ul>
          <li>
            <a href="http://weblogs.asp.net/scottgu/archive/2007/07/25/vs-2008-web-designer-and-css-support.aspx">VS
2008 Web Designer and CSS Support</a>
          </li>
          <li>
            <a href="http://weblogs.asp.net/scottgu/archive/2007/07/09/vs-2008-nested-master-page-support.aspx">VS
2008 Nested Master Page Support</a>
          </li>
          <li>
            <a href="http://weblogs.asp.net/scottgu/archive/2007/07/30/enabling-vertical-split-view-in-vs-2008.aspx">VS
2008 Vertical Split View Support</a>
          </li>
          <li>
            <a href="http://weblogs.asp.net/scottgu/archive/2007/09/18/vs-2008-support-to-treat-html-css-and-jscript-validation-issues-as-warnings-instead-of-errors.aspx">VS
2008 Support to Treat CSS and JavaScript Validation Issues as Warnings instead of
Errors</a>
          </li>
        </ul>
        <p>
ASP.NET 3.5 also has a new &lt;asp:ListView&gt; control that provides the ability
to perform rich data scenarios with total control over the markup.  It works
nicely with the new CSS support in VS 2008.  You can learn more about it from
my article here: 
</p>
        <ul>
          <li>
            <a href="http://weblogs.asp.net/scottgu/archive/2007/08/10/the-asp-listview-control-part-1-building-a-product-listing-page-with-clean-css-ui.aspx">ASP.NET
3.5 ListView Control</a>
          </li>
        </ul>
        <p>
You can watch some videos that discuss the new Visual Studio 2008 web designer features
and the new ListView/DataPager controls <a href="http://www.asp.net/learn/3.5-videos/">here</a>.  
</p>
        <p>
          <u>
            <strong>Language Improvements and LINQ</strong>
          </u>
        </p>
        <p>
The new VB and C# compilers in VS 2008 deliver significant improvements to the languages. 
Both add functional programming concepts that enable you to write cleaner, terser,
and more expressive code.  These features also enable a new programming model
we call LINQ (language integrated query) that makes querying and working with data
a first-class programming concept with .NET.  
</p>
        <p>
Below are some of the articles I've written that explore these new language features
using C#: 
</p>
        <ul>
          <li>
            <a href="http://weblogs.asp.net/scottgu/archive/2007/03/08/new-c-orcas-language-features-automatic-properties-object-initializers-and-collection-initializers.aspx">Automatic
Properties, Object Initializer and Collection Initializers</a>
          </li>
          <li>
            <a href="http://weblogs.asp.net/scottgu/archive/2007/03/13/new-orcas-language-feature-extension-methods.aspx">Extension
Methods</a>
          </li>
          <li>
            <a href="http://weblogs.asp.net/scottgu/archive/2007/04/08/new-orcas-language-feature-lambda-expressions.aspx">Lambda
Expressions</a>
          </li>
          <li>
            <a href="http://weblogs.asp.net/scottgu/archive/2007/04/21/new-orcas-language-feature-query-syntax.aspx">Query
Syntax</a>
          </li>
          <li>
            <a href="http://weblogs.asp.net/scottgu/archive/2007/05/15/new-orcas-language-feature-anonymous-types.aspx?CommentPosted=true">Anonymous
Types</a>
          </li>
        </ul>
        <p>
Here are a few additional blog posts I've written that show off some of the new VS
2008 code editing support and some cool ways to use these new language features: 
</p>
        <ul>
          <li>
            <a href="http://weblogs.asp.net/scottgu/archive/2007/07/28/nice-vs-2008-code-editing-improvements.aspx">VS
2008 Code Editing Features</a>
          </li>
          <li>
            <a href="http://weblogs.asp.net/scottgu/archive/2007/10/01/tip-trick-building-a-tojson-extension-method-using-net-3-5.aspx">Tip/Trick:
Building a ToJson() Extension Method using .NET 3.5</a>
          </li>
          <li>
            <a href="http://weblogs.asp.net/scottgu/archive/2007/09/20/the-new-c-null-coalescing-operator-and-using-it-with-linq.aspx">The
C# ?? null coalescing operator (and using it with LINQ)</a>
          </li>
          <li>
            <a href="http://weblogs.asp.net/scottgu/archive/2007/08/07/using-linq-to-xml-and-how-to-build-a-custom-rss-feed-reader-with-it.aspx">Using
LINQ to XML (and how to build a custom RSS Feed Reader with it)</a>
          </li>
        </ul>
        <p>
The Visual Basic team has also created some great free videos that cover LINQ. 
You can watch them <a href="http://www.asp.net/learn/linq-videos/">here</a>. 
</p>
        <p>
          <strong>
            <u>Data Access Improvements with LINQ to SQL</u>
          </strong>
        </p>
        <p>
LINQ to SQL is a built-in OR/M (object relational mapper) in .NET 3.5.  It enables
you to model relational databases using a .NET object model.  You can then
query the database using LINQ, as well as update/insert/delete data from it. 
LINQ to SQL fully supports transactions, views, and stored procedures.  It also
provides an easy way to integrate business logic and validation rules into your data
model.  Below are some of the articles I've written that explore how to use it: 
</p>
        <ul>
          <li>
            <a href="http://weblogs.asp.net/scottgu/archive/2007/05/19/using-linq-to-sql-part-1.aspx">Part
1: Introduction to LINQ to SQL</a>
          </li>
          <li>
            <a href="http://weblogs.asp.net/scottgu/archive/2007/05/29/linq-to-sql-part-2-defining-our-data-model-classes.aspx">Part
2: Defining our Data Model Classes</a>
          </li>
          <li>
            <a href="http://weblogs.asp.net/scottgu/archive/2007/06/29/linq-to-sql-part-3-querying-our-database.aspx">Part
3: Querying our Database</a>
          </li>
          <li>
            <a href="http://weblogs.asp.net/scottgu/archive/2007/07/11/linq-to-sql-part-4-updating-our-database.aspx">Part
4: Updating our Database</a>
          </li>
          <li>
            <a href="http://weblogs.asp.net/scottgu/archive/2007/07/16/linq-to-sql-part-5-binding-ui-using-the-asp-linqdatasource-control.aspx">Part
5: Binding UI using the ASP:LinqDataSource Control</a>
          </li>
          <li>
            <a href="http://weblogs.asp.net/scottgu/archive/2007/08/16/linq-to-sql-part-6-retrieving-data-using-stored-procedures.aspx">Part
6: Retrieving Data Using Stored Procedures</a>
          </li>
          <li>
            <a href="http://weblogs.asp.net/scottgu/archive/2007/08/23/linq-to-sql-part-7-updating-our-database-using-stored-procedures.aspx">Part
7: Updating our Database using Stored Procedures</a>
          </li>
          <li>
            <a href="http://weblogs.asp.net/scottgu/archive/2007/08/27/linq-to-sql-part-8-executing-custom-sql-expressions.aspx">Part
8: Executing Custom SQL Expressions</a>
          </li>
          <li>
            <a href="http://weblogs.asp.net/scottgu/archive/2007/09/07/linq-to-sql-part-9-using-a-custom-linq-expression-with-the-lt-asp-linqdatasource-gt-control.aspx">Part
9: Using a Custom LINQ Expression with the &lt;asp:LinqDataSource&gt; control</a>
          </li>
        </ul>
        <p>
I think you'll find that LINQ and LINQ to SQL makes it much easier to build much
cleaner data models, and write much cleaner data code.  I'll be adding more posts
to my LINQ to SQL series in the weeks and months ahead (sorry for the delay in finishing
them earlier - so much to-do and so little time to-do it all!). 
</p>
        <p>
Scott Stanfield is also working on creating some great LINQ to SQL videos for the <a href="http://www.asp.net">www.asp.net</a> site
based on my article series above (all videos are in both VB and C#).  You can
watch the first 4 videos in this series <a href="http://www.asp.net/learn/linq-videos/">here</a>. 
</p>
        <p>
          <u>
            <strong>Browsing the .NET Framework Library Source using Visual Studio</strong>
          </u>
        </p>
        <p>
As I <a href="http://weblogs.asp.net/scottgu/archive/2007/10/03/releasing-the-source-code-for-the-net-framework-libraries.aspx">blogged</a> a
few weeks ago, we will be releasing a reference version of the .NET Framework library
source code as part of this release.  Visual Studio 2008 has built-in debugger
support to automatically step-into and debug this code on demand (VS 2008 can pull
down the source for the appropriate .NET Framework library file automatically for
you). 
</p>
        <p>
We are deploying the source servers to enable this right now, and will be publishing
the steps to turn this feature on in the next few weeks. 
</p>
        <p>
          <u>
            <strong>Lots of other improvements</strong>
          </u>
        </p>
        <p>
The list above is only a small set of the improvements coming.  For client development
VS 2008 includes WPF designer and project support.  ClickOnce and WPF XBAPs now
work with FireFox.  WinForms and WPF projects can also now use the ASP.NET
Application Services (Membership, Roles, Profile) for roaming user data.  
</p>
        <p>
Office development is much richer - including support for integrating with the Office
2007 ribbon, and with Outlook.  Visual Studio Tools for Office support is also
now built-into Visual Studio (you no longer need to buy a separate product). 
</p>
        <p>
New WCF and Workflow projects and designers are now included in VS 2008.  Unit
testing support is now much faster and included in VS Professional (and no longer
just VSTS).  Continuous Integration support is now built-in with TFS.  AJAX
web testing (unit and load) is now supported in the VS Test SKU.  And there is
much, much more... 
</p>
        <h5>
          <u>Installation Suggestions</u>
        </h5>
        <p>
People often ask me for suggestions on how best to upgrade from previous betas of
Visual Studio 2008.  In general I'd recommend uninstalling the Beta2 bits explicitly. 
As part of this you should uninstall Visual Studio 2008 Beta2, .NET Framework Beta2,
as well as the Visual Studio Web Authoring Component (these are all separate installs
and need to be uninstalled separately).  I then usually recommend rebooting the
machine after uninstalling just to make sure everything is clean before you kick off
the new install.  You can then install the final release of VS 2008 and .NET
3.5 on the machine. 
</p>
        <p>
Once installed, I usually recommend explicitly running the Tools-&gt;Import and Export
Settings menu option, choosing the "Reset Settings" option, and then re-pick your
preferred profile.  This helps ensure that older settings from the Beta2 release
are no longer around (and sometimes seems to help with performance). 
</p>
        <p>
Note that VS 2008 runs side-by-side with VS 2005 - so it is totally fine to have both
on the same machine (you will not have any problems with them on the same box). 
</p>
        <h5>
          <u>Silverlight Tools and VS Web Deployment Project Add-Ins</u>
        </h5>
        <p>
Two popular add-ins to Visual Studio are not yet available to download for
the final VS 2008 release.  These are the Silverlight 1.1 Tools Alpha for Visual
Studio and the Web Deployment Project add-in for Visual Studio.  Our hope is
to post updates to both of them to work with the final VS 2008 release in the next
two weeks.  If you are doing Silverlight 1.1 development using VS 2008 Beta2
you'll want to stick with with VS 2008 Beta2 until this updated Silverlight Tools
Add-In is available.  
</p>
        <p>
Hope this helps, 
</p>
        <p>
Scott
</p>
        <img width="0" height="0" src="http://blog.ilovedoudou.com/aggbug.ashx?id=5db542a9-5609-4a02-bf7d-f9e90ded46d7" />
      </body>
      <title>ScottGu's View of VS2008 and .NET 3.5</title>
      <guid isPermaLink="false">http://blog.ilovedoudou.com/PermaLink,guid,5db542a9-5609-4a02-bf7d-f9e90ded46d7.aspx</guid>
      <link>http://blog.ilovedoudou.com/PermaLink,guid,5db542a9-5609-4a02-bf7d-f9e90ded46d7.aspx</link>
      <pubDate>Mon, 03 Mar 2008 05:23:57 GMT</pubDate>
      <description>&lt;p&gt;
&lt;/p&gt;
&lt;h5&gt;&lt;u&gt;&lt;a title="http://weblogs.asp.net/scottgu/archive/2007/11/19/visual-studio-2008-and-net-3-5-released.aspx" href="http://weblogs.asp.net/scottgu/archive/2007/11/19/visual-studio-2008-and-net-3-5-released.aspx"&gt;http://weblogs.asp.net/scottgu/archive/2007/11/19/visual-studio-2008-and-net-3-5-released.aspx&lt;/a&gt;&lt;/u&gt;
&lt;/h5&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;h5&gt;&lt;u&gt;Quick Tour of Some of the New Features&lt;/u&gt;
&lt;/h5&gt;
&lt;p&gt;
Visual Studio 2008 and .NET 3.5 contain a ton of new functionality and improvements.&amp;nbsp;
Below are links to blog posts I've done myself as well as links to videos you can
watch to learn more about it: 
&lt;p&gt;
&lt;u&gt;&lt;strong&gt;VS 2008 Multi-Targeting Support&lt;/strong&gt;&lt;/u&gt; 
&lt;p&gt;
VS 2008 enables you to build applications that target multiple versions of the .NET
Framework.&amp;nbsp; This means you can use VS 2008 to open, edit and build existing .NET
2.0 and ASP.NET 2.0 applications (including ASP.NET 2.0 applications using ASP.NET
AJAX 1.0), and continue to deploy these application on .NET 2.0 machines.&amp;nbsp; You
can learn more about how this works from my blog post here: 
&lt;ul&gt;
&lt;li&gt;
&lt;a href="http://weblogs.asp.net/scottgu/archive/2007/06/20/vs-2008-multi-targeting-support.aspx"&gt;VS
2008 Multi-Targeting Support&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;strong&gt;&lt;u&gt;ASP.NET AJAX and JavaScript Support&lt;/u&gt;&lt;/strong&gt; 
&lt;p&gt;
.NET 3.5 has ASP.NET AJAX built-in (no separate download required).&amp;nbsp; In addition
to including all of the features in ASP.NET AJAX 1.0, ASP.NET 3.5 also now includes
richer support for UpdatePanels integrating with WebParts, ASP.NET AJAX integration
with controls like &amp;lt;asp:menu&amp;gt; and &amp;lt;asp:treeview&amp;gt;, WCF support for JSON,
and many other AJAX improvements. 
&lt;p&gt;
VS 2008 and Visual Web Developer 2008 also now have great support for integrating
JavaScript and AJAX into your applications.&amp;nbsp; You can learn more about this from
my blog posts here: 
&lt;ul&gt;
&lt;li&gt;
&lt;a href="http://weblogs.asp.net/scottgu/archive/2007/06/21/vs-2008-javascript-intellisense.aspx"&gt;VS
2008 JavaScript Intellisense&lt;/a&gt; 
&lt;li&gt;
&lt;a href="http://weblogs.asp.net/scottgu/archive/2007/07/19/vs-2008-javascript-debugging.aspx"&gt;VS
2008 JavaScript Debugging&lt;/a&gt; 
&lt;li&gt;
&lt;a href="http://weblogs.asp.net/scottgu/archive/2007/08/19/using-asp-net-ajax-control-extenders-in-vs-2008.aspx"&gt;VS
2008 ASP.NET AJAX Control Extender Support&lt;/a&gt; 
&lt;li&gt;
&lt;a href="http://weblogs.asp.net/scottgu/archive/2007/08/01/vs-2008-javascript-intellisense-for-silverlight.aspx"&gt;VS
2008 JavaScript Intellisense for Silverlight&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
You can watch some videos that discuss ASP.NET AJAX and Visual Studio 2008 support
for it &lt;a href="http://www.asp.net/learn/3.5-videos/"&gt;here&lt;/a&gt;.&amp;nbsp; 
&lt;p&gt;
I also highly recommend the excellent &lt;a href="http://www.amazon.com/gp/product/1933988142/104-9219624-7383145?ie=UTF8&amp;amp;tag=scoblo04-20&amp;amp;linkCode=xm2&amp;amp;camp=1789&amp;amp;creativeASIN=1933988142"&gt;ASP.NET
AJAX in Action&lt;/a&gt; book to learn more about ASP.NET AJAX (both client-side and server-side). 
&lt;p&gt;
&lt;strong&gt;&lt;u&gt;VS 2008 Web Designer and CSS Support&lt;/u&gt;&lt;/strong&gt; 
&lt;p&gt;
VS 2008 and Visual Web Developer 2008 Express&amp;nbsp;includes a significantly improved
HTML web designer (the same one that ships with Expression Web).&amp;nbsp; This delivers
support for split-view editing, nested master pages, and great CSS integration.&amp;nbsp;
Below are some articles I've written that discuss this more: 
&lt;ul&gt;
&lt;li&gt;
&lt;a href="http://weblogs.asp.net/scottgu/archive/2007/07/25/vs-2008-web-designer-and-css-support.aspx"&gt;VS
2008 Web Designer and CSS Support&lt;/a&gt; 
&lt;li&gt;
&lt;a href="http://weblogs.asp.net/scottgu/archive/2007/07/09/vs-2008-nested-master-page-support.aspx"&gt;VS
2008 Nested Master Page Support&lt;/a&gt; 
&lt;li&gt;
&lt;a href="http://weblogs.asp.net/scottgu/archive/2007/07/30/enabling-vertical-split-view-in-vs-2008.aspx"&gt;VS
2008 Vertical Split View Support&lt;/a&gt; 
&lt;li&gt;
&lt;a href="http://weblogs.asp.net/scottgu/archive/2007/09/18/vs-2008-support-to-treat-html-css-and-jscript-validation-issues-as-warnings-instead-of-errors.aspx"&gt;VS
2008 Support to Treat CSS and JavaScript Validation Issues as Warnings instead of
Errors&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
ASP.NET 3.5 also has a new &amp;lt;asp:ListView&amp;gt; control that provides the ability
to perform rich data scenarios with total control over the markup.&amp;nbsp; It works
nicely with the new CSS support in VS 2008.&amp;nbsp; You can learn more about it from
my article here: 
&lt;ul&gt;
&lt;li&gt;
&lt;a href="http://weblogs.asp.net/scottgu/archive/2007/08/10/the-asp-listview-control-part-1-building-a-product-listing-page-with-clean-css-ui.aspx"&gt;ASP.NET
3.5 ListView Control&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
You can watch some videos that discuss the new Visual Studio 2008 web designer features
and the new ListView/DataPager controls &lt;a href="http://www.asp.net/learn/3.5-videos/"&gt;here&lt;/a&gt;.&amp;nbsp; 
&lt;p&gt;
&lt;u&gt;&lt;strong&gt;Language Improvements and LINQ&lt;/strong&gt;&lt;/u&gt; 
&lt;p&gt;
The new VB and C# compilers in VS 2008 deliver significant improvements to the languages.&amp;nbsp;
Both add functional programming concepts that enable you to write cleaner, terser,
and more expressive code.&amp;nbsp; These features also enable a new programming model
we call LINQ (language integrated query) that makes querying and working with data
a first-class programming concept with .NET.&amp;nbsp; 
&lt;p&gt;
Below are some of the articles I've written that explore these new language features
using C#: 
&lt;ul&gt;
&lt;li&gt;
&lt;a href="http://weblogs.asp.net/scottgu/archive/2007/03/08/new-c-orcas-language-features-automatic-properties-object-initializers-and-collection-initializers.aspx"&gt;Automatic
Properties, Object Initializer and Collection Initializers&lt;/a&gt; 
&lt;li&gt;
&lt;a href="http://weblogs.asp.net/scottgu/archive/2007/03/13/new-orcas-language-feature-extension-methods.aspx"&gt;Extension
Methods&lt;/a&gt; 
&lt;li&gt;
&lt;a href="http://weblogs.asp.net/scottgu/archive/2007/04/08/new-orcas-language-feature-lambda-expressions.aspx"&gt;Lambda
Expressions&lt;/a&gt; 
&lt;li&gt;
&lt;a href="http://weblogs.asp.net/scottgu/archive/2007/04/21/new-orcas-language-feature-query-syntax.aspx"&gt;Query
Syntax&lt;/a&gt; 
&lt;li&gt;
&lt;a href="http://weblogs.asp.net/scottgu/archive/2007/05/15/new-orcas-language-feature-anonymous-types.aspx?CommentPosted=true"&gt;Anonymous
Types&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Here are a few additional blog posts I've written that show off some of the new VS
2008 code editing support and some cool ways to use these new language&amp;nbsp;features: 
&lt;ul&gt;
&lt;li&gt;
&lt;a href="http://weblogs.asp.net/scottgu/archive/2007/07/28/nice-vs-2008-code-editing-improvements.aspx"&gt;VS
2008 Code Editing Features&lt;/a&gt; 
&lt;li&gt;
&lt;a href="http://weblogs.asp.net/scottgu/archive/2007/10/01/tip-trick-building-a-tojson-extension-method-using-net-3-5.aspx"&gt;Tip/Trick:
Building a ToJson() Extension Method using .NET 3.5&lt;/a&gt; 
&lt;li&gt;
&lt;a href="http://weblogs.asp.net/scottgu/archive/2007/09/20/the-new-c-null-coalescing-operator-and-using-it-with-linq.aspx"&gt;The
C# ?? null coalescing operator (and using it with LINQ)&lt;/a&gt; 
&lt;li&gt;
&lt;a href="http://weblogs.asp.net/scottgu/archive/2007/08/07/using-linq-to-xml-and-how-to-build-a-custom-rss-feed-reader-with-it.aspx"&gt;Using
LINQ to XML (and how to build a custom RSS Feed Reader with it)&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
The Visual Basic team has also created some great free videos that cover LINQ.&amp;nbsp;
You can watch them &lt;a href="http://www.asp.net/learn/linq-videos/"&gt;here&lt;/a&gt;. 
&lt;p&gt;
&lt;strong&gt;&lt;u&gt;Data Access Improvements with LINQ to SQL&lt;/u&gt;&lt;/strong&gt; 
&lt;p&gt;
LINQ to SQL is a built-in OR/M (object relational mapper) in .NET 3.5.&amp;nbsp; It enables
you to model relational databases using a&amp;nbsp;.NET object model.&amp;nbsp; You can then
query the database using LINQ, as well as update/insert/delete data from it.&amp;nbsp;
LINQ to SQL fully supports transactions, views, and stored procedures.&amp;nbsp; It also
provides an easy way to integrate business logic and validation rules into your data
model.&amp;nbsp; Below are some of the articles I've written that explore how to use it: 
&lt;ul&gt;
&lt;li&gt;
&lt;a href="http://weblogs.asp.net/scottgu/archive/2007/05/19/using-linq-to-sql-part-1.aspx"&gt;Part
1: Introduction to LINQ to SQL&lt;/a&gt; 
&lt;li&gt;
&lt;a href="http://weblogs.asp.net/scottgu/archive/2007/05/29/linq-to-sql-part-2-defining-our-data-model-classes.aspx"&gt;Part
2: Defining our Data Model Classes&lt;/a&gt; 
&lt;li&gt;
&lt;a href="http://weblogs.asp.net/scottgu/archive/2007/06/29/linq-to-sql-part-3-querying-our-database.aspx"&gt;Part
3: Querying our Database&lt;/a&gt; 
&lt;li&gt;
&lt;a href="http://weblogs.asp.net/scottgu/archive/2007/07/11/linq-to-sql-part-4-updating-our-database.aspx"&gt;Part
4: Updating our Database&lt;/a&gt; 
&lt;li&gt;
&lt;a href="http://weblogs.asp.net/scottgu/archive/2007/07/16/linq-to-sql-part-5-binding-ui-using-the-asp-linqdatasource-control.aspx"&gt;Part
5: Binding UI using the ASP:LinqDataSource Control&lt;/a&gt; 
&lt;li&gt;
&lt;a href="http://weblogs.asp.net/scottgu/archive/2007/08/16/linq-to-sql-part-6-retrieving-data-using-stored-procedures.aspx"&gt;Part
6: Retrieving Data Using Stored Procedures&lt;/a&gt; 
&lt;li&gt;
&lt;a href="http://weblogs.asp.net/scottgu/archive/2007/08/23/linq-to-sql-part-7-updating-our-database-using-stored-procedures.aspx"&gt;Part
7: Updating our Database using Stored Procedures&lt;/a&gt; 
&lt;li&gt;
&lt;a href="http://weblogs.asp.net/scottgu/archive/2007/08/27/linq-to-sql-part-8-executing-custom-sql-expressions.aspx"&gt;Part
8: Executing Custom SQL Expressions&lt;/a&gt; 
&lt;li&gt;
&lt;a href="http://weblogs.asp.net/scottgu/archive/2007/09/07/linq-to-sql-part-9-using-a-custom-linq-expression-with-the-lt-asp-linqdatasource-gt-control.aspx"&gt;Part
9: Using a Custom LINQ Expression with the &amp;lt;asp:LinqDataSource&amp;gt; control&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
I think you'll find that LINQ and LINQ to SQL makes it much easier to&amp;nbsp;build much
cleaner data models, and write much cleaner data code.&amp;nbsp; I'll be adding more posts
to my LINQ to SQL series in the weeks and months ahead (sorry for the delay in finishing
them earlier&amp;nbsp;- so much to-do and so little time to-do it all!). 
&lt;p&gt;
Scott Stanfield is also working on creating some great LINQ to SQL videos for the &lt;a href="http://www.asp.net"&gt;www.asp.net&lt;/a&gt; site
based on my article series above (all videos are in both VB and C#).&amp;nbsp; You can
watch the first 4 videos in this series &lt;a href="http://www.asp.net/learn/linq-videos/"&gt;here&lt;/a&gt;. 
&lt;p&gt;
&lt;u&gt;&lt;strong&gt;Browsing the .NET Framework Library Source using Visual Studio&lt;/strong&gt;&lt;/u&gt; 
&lt;p&gt;
As I &lt;a href="http://weblogs.asp.net/scottgu/archive/2007/10/03/releasing-the-source-code-for-the-net-framework-libraries.aspx"&gt;blogged&lt;/a&gt; a
few weeks ago, we will be releasing a reference version of the .NET Framework library
source code as part of this release.&amp;nbsp; Visual Studio 2008 has built-in debugger
support to automatically step-into and debug this code on demand (VS 2008 can pull
down the source for the appropriate .NET Framework library file automatically for
you). 
&lt;p&gt;
We are deploying the source&amp;nbsp;servers to enable this right now, and will be publishing
the steps to turn this feature on in the next few weeks. 
&lt;p&gt;
&lt;u&gt;&lt;strong&gt;Lots of other improvements&lt;/strong&gt;&lt;/u&gt; 
&lt;p&gt;
The list above is only a small set of the improvements coming.&amp;nbsp; For client development
VS 2008 includes WPF designer and project support.&amp;nbsp; ClickOnce and WPF XBAPs now
work with FireFox.&amp;nbsp; WinForms and WPF&amp;nbsp;projects can also now use the ASP.NET
Application Services (Membership, Roles, Profile) for roaming user data.&amp;nbsp; 
&lt;p&gt;
Office development is much richer - including support for integrating with the Office
2007 ribbon, and with Outlook.&amp;nbsp; Visual Studio Tools for Office support is also
now built-into Visual Studio (you&amp;nbsp;no longer need to buy a separate product). 
&lt;p&gt;
New WCF and Workflow projects and designers are now included in VS 2008.&amp;nbsp; Unit
testing support is now much faster and&amp;nbsp;included in VS Professional (and no longer
just VSTS).&amp;nbsp; Continuous Integration support is now built-in with TFS.&amp;nbsp; AJAX
web testing (unit and load) is now supported in the VS Test SKU.&amp;nbsp; And there is
much, much more... 
&lt;h5&gt;&lt;u&gt;Installation Suggestions&lt;/u&gt;
&lt;/h5&gt;
&lt;p&gt;
People often ask me for suggestions on how best to upgrade from previous betas of
Visual Studio 2008.&amp;nbsp; In general I'd recommend uninstalling the Beta2 bits explicitly.&amp;nbsp;
As part of this you should uninstall Visual Studio 2008 Beta2, .NET Framework Beta2,
as well as the Visual Studio Web Authoring Component (these are all separate installs
and need to be uninstalled separately).&amp;nbsp; I then usually recommend rebooting the
machine after uninstalling just to make sure everything is clean before you kick off
the new install.&amp;nbsp; You can then install the final release of VS 2008 and .NET
3.5 on the machine. 
&lt;p&gt;
Once installed, I usually recommend explicitly running the Tools-&amp;gt;Import and Export
Settings menu option, choosing the "Reset Settings" option, and then re-pick your
preferred profile.&amp;nbsp; This helps ensure that older settings from the Beta2 release
are no longer around (and sometimes seems to help with performance). 
&lt;p&gt;
Note that VS 2008 runs side-by-side with VS 2005 - so it is totally fine to have both
on the same machine (you will not have any problems with them on the same box). 
&lt;h5&gt;&lt;u&gt;Silverlight Tools and VS Web Deployment Project Add-Ins&lt;/u&gt;
&lt;/h5&gt;
&lt;p&gt;
Two popular add-ins to&amp;nbsp;Visual Studio&amp;nbsp;are not yet available to download for
the final VS 2008 release.&amp;nbsp; These are the Silverlight 1.1 Tools Alpha for Visual
Studio and the Web Deployment Project add-in for Visual Studio.&amp;nbsp; Our hope is
to post updates to both of them to work with the final VS 2008 release in the next
two weeks.&amp;nbsp; If you are doing Silverlight 1.1 development using VS 2008 Beta2
you'll want to stick with with VS 2008 Beta2 until this updated Silverlight Tools
Add-In is available.&amp;nbsp; 
&lt;p&gt;
Hope this helps, 
&lt;p&gt;
Scott
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.ilovedoudou.com/aggbug.ashx?id=5db542a9-5609-4a02-bf7d-f9e90ded46d7" /&gt;</description>
      <comments>http://blog.ilovedoudou.com/CommentView,guid,5db542a9-5609-4a02-bf7d-f9e90ded46d7.aspx</comments>
      <category>DotNet;Web</category>
    </item>
    <item>
      <trackback:ping>http://blog.ilovedoudou.com/Trackback.aspx?guid=4f57c63d-7ebb-4722-8069-569df238959e</trackback:ping>
      <pingback:server>http://blog.ilovedoudou.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.ilovedoudou.com/PermaLink,guid,4f57c63d-7ebb-4722-8069-569df238959e.aspx</pingback:target>
      <dc:creator>Kevin Mocha</dc:creator>
      <wfw:comment>http://blog.ilovedoudou.com/CommentView,guid,4f57c63d-7ebb-4722-8069-569df238959e.aspx</wfw:comment>
      <wfw:commentRss>http://blog.ilovedoudou.com/SyndicationService.asmx/GetEntryCommentsRss?guid=4f57c63d-7ebb-4722-8069-569df238959e</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a title="http://wiki.asp.net/page.aspx/295/how-to-postback-asynchornously-from-inside-a-gridview/" href="http://wiki.asp.net/page.aspx/295/how-to-postback-asynchornously-from-inside-a-gridview/">http://wiki.asp.net/page.aspx/295/how-to-postback-asynchornously-from-inside-a-gridview/</a>
        </p>
        <img width="0" height="0" src="http://blog.ilovedoudou.com/aggbug.ashx?id=4f57c63d-7ebb-4722-8069-569df238959e" />
      </body>
      <title>How to Postback Asynchronously from inside a GridView</title>
      <guid isPermaLink="false">http://blog.ilovedoudou.com/PermaLink,guid,4f57c63d-7ebb-4722-8069-569df238959e.aspx</guid>
      <link>http://blog.ilovedoudou.com/PermaLink,guid,4f57c63d-7ebb-4722-8069-569df238959e.aspx</link>
      <pubDate>Fri, 22 Feb 2008 22:04:15 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a title="http://wiki.asp.net/page.aspx/295/how-to-postback-asynchornously-from-inside-a-gridview/" href="http://wiki.asp.net/page.aspx/295/how-to-postback-asynchornously-from-inside-a-gridview/"&gt;http://wiki.asp.net/page.aspx/295/how-to-postback-asynchornously-from-inside-a-gridview/&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.ilovedoudou.com/aggbug.ashx?id=4f57c63d-7ebb-4722-8069-569df238959e" /&gt;</description>
      <comments>http://blog.ilovedoudou.com/CommentView,guid,4f57c63d-7ebb-4722-8069-569df238959e.aspx</comments>
      <category>DotNet / ASP;Web</category>
    </item>
    <item>
      <trackback:ping>http://blog.ilovedoudou.com/Trackback.aspx?guid=2ff4ea36-5765-4dae-9604-d507ae8e45b8</trackback:ping>
      <pingback:server>http://blog.ilovedoudou.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.ilovedoudou.com/PermaLink,guid,2ff4ea36-5765-4dae-9604-d507ae8e45b8.aspx</pingback:target>
      <dc:creator>Kevin Mocha</dc:creator>
      <wfw:comment>http://blog.ilovedoudou.com/CommentView,guid,2ff4ea36-5765-4dae-9604-d507ae8e45b8.aspx</wfw:comment>
      <wfw:commentRss>http://blog.ilovedoudou.com/SyndicationService.asmx/GetEntryCommentsRss?guid=2ff4ea36-5765-4dae-9604-d507ae8e45b8</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <pre>&lt;ItemTemplate&gt;
    &lt;tr class='&lt;%# (Container.DataItemIndex % 2 == 0)?"even":"odd" %&gt;'&gt;    
<br />
&lt;td&gt; 
<br />
&lt;asp:LinkButton ID="EditButton" CommandName="Edit" runat="server" 
<br />
Text="Edit"&gt;&lt;/asp:LinkButton&gt; &lt;asp:LinkButton ID="DeleteButton" 
<br />
OnClientClick="return confirm('Delete Record?');" 
<br />
CommandName="Delete" CommandArgument='&lt;%# Eval("CustomerID")%&gt;' 
<br />
runat="server" Text="Delete"&gt;&lt;/asp:LinkButton&gt; &lt;/td&gt; &lt;td&gt; &lt;%#
Eval("CustomerID") %&gt; &lt;/td&gt; &lt;td&gt; &lt;%# Eval("CompanyName") %&gt; &lt;/td&gt;
&lt;td&gt; &lt;%# Eval("ContactName") %&gt; &lt;/td&gt; &lt;td&gt; &lt;%# Eval("ContactTitle")
%&gt; &lt;/td&gt; &lt;td&gt; &lt;%# Eval("Address") %&gt; &lt;/td&gt; &lt;td&gt; &lt;%#
Eval("City") %&gt; &lt;/td&gt; &lt;td&gt; &lt;%# Eval("Country") %&gt; &lt;/td&gt;
&lt;td&gt; &lt;asp:LinkButton ID="lbOrders" runat="server" Text="Orders" 
<br />
CommandName="ViewOrders" 
<br />
CommandArgument='&lt;%# Eval("CustomerID") %&gt;' /&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr
id="trOrders" runat="server" visible="false"&gt; &lt;td&gt;&amp;nbsp;&lt;/td&gt; &lt;td
colspan="8"&gt; &lt;asp:GridView id="gvOrders" runat="server" AutoGenerateColumns="False"
BackColor="White" BorderColor="#999999" BorderStyle="Solid" 
<br />
BorderWidth="1px" CellPadding="3" ForeColor="Black" GridLines="Vertical" Width="500px"
EnableViewState="false"&gt; &lt;FooterStyle BackColor="#CCCCCC" /&gt; &lt;Columns&gt;
&lt;asp:BoundField DataField="OrderID" HeaderText="OrderID" SortExpression="OrderID"
/&gt; &lt;asp:BoundField DataField="OrderDate" HeaderText="OrderDate" SortExpression="OrderDate"
HtmlEncode="false" 
<br />
DataFormatString="{0:d}" /&gt; &lt;asp:BoundField DataField="RequiredDate" 
<br />
HeaderText="RequiredDate" SortExpression="RequiredDate" HtmlEncode="false" 
<br />
DataFormatString="{0:d}" /&gt; &lt;asp:BoundField DataField="ShippedDate" 
<br />
HeaderText="ShippedDate" SortExpression="ShippedDate" HtmlEncode="false" 
<br />
DataFormatString="{0:d}" /&gt; &lt;/Columns&gt; &lt;AlternatingRowStyle BackColor="#eaeaea"
/&gt; &lt;/asp:GridView&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/ItemTemplate&gt; </pre>
        <img width="0" height="0" src="http://blog.ilovedoudou.com/aggbug.ashx?id=2ff4ea36-5765-4dae-9604-d507ae8e45b8" />
      </body>
      <title>Simplifying asp.net listview control template (alternative template)</title>
      <guid isPermaLink="false">http://blog.ilovedoudou.com/PermaLink,guid,2ff4ea36-5765-4dae-9604-d507ae8e45b8.aspx</guid>
      <link>http://blog.ilovedoudou.com/PermaLink,guid,2ff4ea36-5765-4dae-9604-d507ae8e45b8.aspx</link>
      <pubDate>Fri, 22 Feb 2008 21:24:45 GMT</pubDate>
      <description>&lt;pre&gt;&amp;lt;ItemTemplate&amp;gt;
    &amp;lt;tr class='&amp;lt;%# (Container.DataItemIndex % 2 == 0)?"even":"odd" %&amp;gt;'&amp;gt;    
&lt;br&gt;
&amp;lt;td&amp;gt; 
&lt;br&gt;
&amp;lt;asp:LinkButton ID="EditButton" CommandName="Edit" runat="server" 
&lt;br&gt;
Text="Edit"&amp;gt;&amp;lt;/asp:LinkButton&amp;gt; &amp;lt;asp:LinkButton ID="DeleteButton" 
&lt;br&gt;
OnClientClick="return confirm('Delete Record?');" 
&lt;br&gt;
CommandName="Delete" CommandArgument='&amp;lt;%# Eval("CustomerID")%&amp;gt;' 
&lt;br&gt;
runat="server" Text="Delete"&amp;gt;&amp;lt;/asp:LinkButton&amp;gt; &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; &amp;lt;%#
Eval("CustomerID") %&amp;gt; &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; &amp;lt;%# Eval("CompanyName") %&amp;gt; &amp;lt;/td&amp;gt;
&amp;lt;td&amp;gt; &amp;lt;%# Eval("ContactName") %&amp;gt; &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; &amp;lt;%# Eval("ContactTitle")
%&amp;gt; &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; &amp;lt;%# Eval("Address") %&amp;gt; &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; &amp;lt;%#
Eval("City") %&amp;gt; &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; &amp;lt;%# Eval("Country") %&amp;gt; &amp;lt;/td&amp;gt;
&amp;lt;td&amp;gt; &amp;lt;asp:LinkButton ID="lbOrders" runat="server" Text="Orders" 
&lt;br&gt;
CommandName="ViewOrders" 
&lt;br&gt;
CommandArgument='&amp;lt;%# Eval("CustomerID") %&amp;gt;' /&amp;gt; &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt; &amp;lt;tr
id="trOrders" runat="server" visible="false"&amp;gt; &amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt; &amp;lt;td
colspan="8"&amp;gt; &amp;lt;asp:GridView id="gvOrders" runat="server" AutoGenerateColumns="False"
BackColor="White" BorderColor="#999999" BorderStyle="Solid" 
&lt;br&gt;
BorderWidth="1px" CellPadding="3" ForeColor="Black" GridLines="Vertical" Width="500px"
EnableViewState="false"&amp;gt; &amp;lt;FooterStyle BackColor="#CCCCCC" /&amp;gt; &amp;lt;Columns&amp;gt;
&amp;lt;asp:BoundField DataField="OrderID" HeaderText="OrderID" SortExpression="OrderID"
/&amp;gt; &amp;lt;asp:BoundField DataField="OrderDate" HeaderText="OrderDate" SortExpression="OrderDate"
HtmlEncode="false" 
&lt;br&gt;
DataFormatString="{0:d}" /&amp;gt; &amp;lt;asp:BoundField DataField="RequiredDate" 
&lt;br&gt;
HeaderText="RequiredDate" SortExpression="RequiredDate" HtmlEncode="false" 
&lt;br&gt;
DataFormatString="{0:d}" /&amp;gt; &amp;lt;asp:BoundField DataField="ShippedDate" 
&lt;br&gt;
HeaderText="ShippedDate" SortExpression="ShippedDate" HtmlEncode="false" 
&lt;br&gt;
DataFormatString="{0:d}" /&amp;gt; &amp;lt;/Columns&amp;gt; &amp;lt;AlternatingRowStyle BackColor="#eaeaea"
/&amp;gt; &amp;lt;/asp:GridView&amp;gt; &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt; &amp;lt;/ItemTemplate&amp;gt; &lt;/pre&gt;
&lt;img width="0" height="0" src="http://blog.ilovedoudou.com/aggbug.ashx?id=2ff4ea36-5765-4dae-9604-d507ae8e45b8" /&gt;</description>
      <comments>http://blog.ilovedoudou.com/CommentView,guid,2ff4ea36-5765-4dae-9604-d507ae8e45b8.aspx</comments>
      <category>DotNet / ASP;Web</category>
    </item>
    <item>
      <trackback:ping>http://blog.ilovedoudou.com/Trackback.aspx?guid=106dec31-d52e-4bc8-895a-82994ed05e84</trackback:ping>
      <pingback:server>http://blog.ilovedoudou.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.ilovedoudou.com/PermaLink,guid,106dec31-d52e-4bc8-895a-82994ed05e84.aspx</pingback:target>
      <dc:creator>Kevin Mocha</dc:creator>
      <wfw:comment>http://blog.ilovedoudou.com/CommentView,guid,106dec31-d52e-4bc8-895a-82994ed05e84.aspx</wfw:comment>
      <wfw:commentRss>http://blog.ilovedoudou.com/SyndicationService.asmx/GetEntryCommentsRss?guid=106dec31-d52e-4bc8-895a-82994ed05e84</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <strong>Update:</strong>
          <a href="http://weblogs.asp.net/dfindley/archive/2006/04/23/Migrating-from-System.Web.Mail-to-System.Net.Mail.aspx">David
Findley</a> posted something that I hadn't thought of using that's even easier. 
Adding this to web.config will dump email messages sent from an ASP.NET application
to the specified path:
</p>
        <pre>&lt;system.net&gt;
  &lt;mailSettings&gt;
    &lt;!--
    Production setting
    
    &lt;smtp deliveryMethod="Network"&gt;
      &lt;network host="localhost" port="25" /&gt;
    &lt;/smtp&gt;
    
    --&gt;

    &lt;smtp deliveryMethod="SpecifiedPickupDirectory"&gt;
      &lt;specifiedPickupDirectory pickupDirectoryLocation="C:\TestMessages" /&gt;
    &lt;/smtp&gt;

  &lt;/mailSettings&gt;
&lt;/system.net&gt;</pre>
        <img width="0" height="0" src="http://blog.ilovedoudou.com/aggbug.ashx?id=106dec31-d52e-4bc8-895a-82994ed05e84" />
      </body>
      <title>Email testing for ASP.NET</title>
      <guid isPermaLink="false">http://blog.ilovedoudou.com/PermaLink,guid,106dec31-d52e-4bc8-895a-82994ed05e84.aspx</guid>
      <link>http://blog.ilovedoudou.com/PermaLink,guid,106dec31-d52e-4bc8-895a-82994ed05e84.aspx</link>
      <pubDate>Fri, 22 Feb 2008 21:02:18 GMT</pubDate>
      <description>&lt;p&gt;
&lt;strong&gt;Update:&lt;/strong&gt; &lt;a href="http://weblogs.asp.net/dfindley/archive/2006/04/23/Migrating-from-System.Web.Mail-to-System.Net.Mail.aspx"&gt;David
Findley&lt;/a&gt; posted something that I hadn't thought of using that's even easier.&amp;nbsp;
Adding this to web.config will dump email messages sent from an ASP.NET application
to the specified path:&lt;pre&gt;&amp;lt;system.net&amp;gt;
  &amp;lt;mailSettings&amp;gt;
    &amp;lt;!--
    Production setting
    
    &amp;lt;smtp deliveryMethod="Network"&amp;gt;
      &amp;lt;network host="localhost" port="25" /&amp;gt;
    &amp;lt;/smtp&amp;gt;
    
    --&amp;gt;

    &amp;lt;smtp deliveryMethod="SpecifiedPickupDirectory"&amp;gt;
      &amp;lt;specifiedPickupDirectory pickupDirectoryLocation="C:\TestMessages" /&amp;gt;
    &amp;lt;/smtp&amp;gt;

  &amp;lt;/mailSettings&amp;gt;
&amp;lt;/system.net&amp;gt;&lt;/pre&gt;
&lt;img width="0" height="0" src="http://blog.ilovedoudou.com/aggbug.ashx?id=106dec31-d52e-4bc8-895a-82994ed05e84" /&gt;</description>
      <comments>http://blog.ilovedoudou.com/CommentView,guid,106dec31-d52e-4bc8-895a-82994ed05e84.aspx</comments>
      <category>DotNet / ASP;Web</category>
    </item>
    <item>
      <trackback:ping>http://blog.ilovedoudou.com/Trackback.aspx?guid=f9a01848-7142-4840-82e2-2ef08529f15c</trackback:ping>
      <pingback:server>http://blog.ilovedoudou.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.ilovedoudou.com/PermaLink,guid,f9a01848-7142-4840-82e2-2ef08529f15c.aspx</pingback:target>
      <dc:creator>Kevin Mocha</dc:creator>
      <wfw:comment>http://blog.ilovedoudou.com/CommentView,guid,f9a01848-7142-4840-82e2-2ef08529f15c.aspx</wfw:comment>
      <wfw:commentRss>http://blog.ilovedoudou.com/SyndicationService.asmx/GetEntryCommentsRss?guid=f9a01848-7142-4840-82e2-2ef08529f15c</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <h3>
          <a title="http://daptivate.com/archive/2008/02/12/top-10-best-practices-for-production-asp-net-applications.aspx" href="http://daptivate.com/archive/2008/02/12/top-10-best-practices-for-production-asp-net-applications.aspx">http://daptivate.com/archive/2008/02/12/top-10-best-practices-for-production-asp-net-applications.aspx</a>
        </h3>
        <h3>Top 10 Best Practices for Production ASP.NET Applications
</h3>
        <em>12 Feb, 2008.</em>
        <p>
In no particular order, here are the top ten things I've learned to pay attention
to when dealing with production ASP.NET applications.  Hopefully they will help
you save you some time and headaches.  As always, your thoughts and additions
are welcome. 
</p>
        <h4>1.  Generate new encryption keys
</h4>
        <p>
When moving an application to production for the first time it is a good idea to generate
new encryption keys.  This includes the machine validation key and decryption
key as well as any other custom keys your application may be using.  There is <a href="http://www.codeproject.com/KB/aspnet/machineKey.aspx">an
article on CodeProject</a> that talks about generating machineKeys specifically that
should be helpful with this. 
</p>
        <h4>2.  Encrypt sensitive sections of your web.config
</h4>
        <p>
This includes both the connection string and machine key sections.  See <a href="http://weblogs.asp.net/scottgu/archive/2006/01/09/434893.aspx">Scott
Guthrie's post</a> for some good references.  Note that if your application runs
in a clustered environment you will need to share a custom key using the RSA provider
as described in an <a href="http://msdn2.microsoft.com/en-us/library/68ze1hb2%28VS.80%29.aspx">MSDN
article</a>. 
</p>
        <h4>3.  Use trusted SQL connections
</h4>
        <p>
Both <a href="http://idunno.org/articles/276.aspx">Barry Dorrans</a> and <a href="http://weblogs.asp.net/achang/archive/2004/04/15/113866.aspx">Alex
Chang</a> have articles which discuss this in detail. 
</p>
        <h4>4.  Set retail="true" in your machine.config
</h4>
        <ol>
&lt;configuration&gt;
</ol>
        <br />
&lt;system.web&gt;<br />
&lt;deployment retail="true"/&gt;<br />
&lt;/system.web&gt;<br />
&lt;/configuration&gt;<br />
This will kill three birds with one stone.  It will force the 'debug' flag in
the web.config to be false,  it will disable page output tracing, and  it
will force the custom error page to be shown to remote users rather than the actual
exception or error message.  For more information you can read <a href="http://weblogs.asp.net/scottgu/archive/2006/04/11/442448.aspx">Scott
Guthrie's post</a> or the <a href="http://msdn2.microsoft.com/en-us/library/ms228298%28VS.80%29.aspx">MSDN
reference</a>.
<h4>5.  Create a new application pool for your site
</h4><p>
When setting up your new site for the first time do not share an existing application
pool.  Create a new application pool which will be used by only by the new web
application. 
</p><h4>6.  Set the memory limit for your application pool
</h4><p>
When creating the application pool, specifically set the memory limit rather than
the time limit which is set by default.  <a href="http://www.asp.net">Asp.net</a> has
a <a href="http://www.asp.net/learn/whitepapers/aspnet-and-iis6/">good whitepaper</a> which
explains the value of this: 
</p><blockquote><p>
By default IIS 6.0 does not set a limit on the amount of memory that IIS is allowed
to use. ASP.NET’s Cache feature relies on a limitation of memory so the Cache can
proactively remove unused items from memory. 
</p><p>
It is recommended that you configure the memory recycling feature of IIS 6.0.
</p></blockquote><h4>7.  Create and appropriately use an app_Offline.htm file
</h4><p>
There are many benefits to using this file.  It provides an easy way to take
your application offline in a somewhat user friendly way (you can at least have a
pretty explanation) while fixing critical issues or pushing a major update. 
It also forces an application restart in case you forget to do this for a deployment. 
Once again, ScottGu is the <a href="http://weblogs.asp.net/scottgu/archive/2006/04/09/442332.aspx">best
source</a> for more information on this. 
</p><h4>8.  Develop a repeatable deployment process and automate it
</h4><p>
It is way too easy to make mistakes when deploying any type of software.  This
is especially the case with software that uses configuration files that may be different
between the development, staging, or production environments.  I would argue
that the process you come up with is not nearly as important as it being easily repeatable
and automated.  You can fine tune the process as needed, but you don't want a
simple typo to bring a site down. 
</p><h4>9.  Build and reference release versions of all assemblies
</h4><p>
In addition to making sure ASP.NET is not configured in debug mode, also make sure
that your assemblies are not debug assemblies.  There are of course exceptions
if you are trying to solve a unique issue in your production environment ... but in
most cases you should always deploy with release builds for all assemblies. 
</p><h4>10.  Load test
</h4><p>
This goes without saying.  Inevitably, good load testing will uncover threading
and memory issues not otherwise considered.
</p><img width="0" height="0" src="http://blog.ilovedoudou.com/aggbug.ashx?id=f9a01848-7142-4840-82e2-2ef08529f15c" /></body>
      <title>Top 10 Best Practices for Production ASP.NET Applications</title>
      <guid isPermaLink="false">http://blog.ilovedoudou.com/PermaLink,guid,f9a01848-7142-4840-82e2-2ef08529f15c.aspx</guid>
      <link>http://blog.ilovedoudou.com/PermaLink,guid,f9a01848-7142-4840-82e2-2ef08529f15c.aspx</link>
      <pubDate>Tue, 19 Feb 2008 14:24:48 GMT</pubDate>
      <description>&lt;h3&gt;&lt;a title="http://daptivate.com/archive/2008/02/12/top-10-best-practices-for-production-asp-net-applications.aspx" href="http://daptivate.com/archive/2008/02/12/top-10-best-practices-for-production-asp-net-applications.aspx"&gt;http://daptivate.com/archive/2008/02/12/top-10-best-practices-for-production-asp-net-applications.aspx&lt;/a&gt;
&lt;/h3&gt;
&lt;h3&gt;Top 10 Best Practices for Production ASP.NET Applications
&lt;/h3&gt;
&lt;em&gt;12 Feb, 2008.&lt;/em&gt; 
&lt;p&gt;
In no particular order, here are the top ten things I've learned to pay attention
to when dealing with production ASP.NET applications.&amp;nbsp; Hopefully they will help
you save you some time and headaches.&amp;nbsp; As always, your thoughts and additions
are welcome. 
&lt;h4&gt;1.&amp;nbsp; Generate new encryption keys
&lt;/h4&gt;
&lt;p&gt;
When moving an application to production for the first time it is a good idea to generate
new encryption keys.&amp;nbsp; This includes the machine validation key and decryption
key as well as any other custom keys your application may be using.&amp;nbsp; There is &lt;a href="http://www.codeproject.com/KB/aspnet/machineKey.aspx"&gt;an
article on CodeProject&lt;/a&gt; that talks about generating machineKeys specifically that
should be helpful with this. 
&lt;h4&gt;2.&amp;nbsp; Encrypt sensitive sections of your web.config
&lt;/h4&gt;
&lt;p&gt;
This includes both the connection string and machine key sections.&amp;nbsp; See &lt;a href="http://weblogs.asp.net/scottgu/archive/2006/01/09/434893.aspx"&gt;Scott
Guthrie's post&lt;/a&gt; for some good references.&amp;nbsp; Note that if your application runs
in a clustered environment you will need to share a custom key using the RSA provider
as described in an &lt;a href="http://msdn2.microsoft.com/en-us/library/68ze1hb2%28VS.80%29.aspx"&gt;MSDN
article&lt;/a&gt;. 
&lt;h4&gt;3.&amp;nbsp; Use trusted SQL connections
&lt;/h4&gt;
&lt;p&gt;
Both &lt;a href="http://idunno.org/articles/276.aspx"&gt;Barry Dorrans&lt;/a&gt; and &lt;a href="http://weblogs.asp.net/achang/archive/2004/04/15/113866.aspx"&gt;Alex
Chang&lt;/a&gt; have articles which discuss this in detail. 
&lt;h4&gt;4.&amp;nbsp; Set retail="true" in your machine.config
&lt;/h4&gt;
&lt;ol&gt;
&amp;lt;configuration&amp;gt;&lt;br&gt;
&amp;lt;system.web&amp;gt;&lt;br&gt;
&amp;lt;deployment retail="true"/&amp;gt;&lt;br&gt;
&amp;lt;/system.web&amp;gt;&lt;br&gt;
&amp;lt;/configuration&amp;gt;&lt;br&gt;
This will kill three birds with one stone.&amp;nbsp; It will force the 'debug' flag in
the web.config to be false,&amp;nbsp; it will disable page output tracing, and&amp;nbsp; it
will force the custom error page to be shown to remote users rather than the actual
exception or error message.&amp;nbsp; For more information you can read &lt;a href="http://weblogs.asp.net/scottgu/archive/2006/04/11/442448.aspx"&gt;Scott
Guthrie's post&lt;/a&gt; or the &lt;a href="http://msdn2.microsoft.com/en-us/library/ms228298%28VS.80%29.aspx"&gt;MSDN
reference&lt;/a&gt;.&gt;
&lt;h4&gt;5.&amp;nbsp; Create a new application pool for your site
&lt;/h4&gt;
&lt;p&gt;
When setting up your new site for the first time do not share an existing application
pool.&amp;nbsp; Create a new application pool which will be used by only by the new web
application. 
&lt;h4&gt;6.&amp;nbsp; Set the memory limit for your application pool
&lt;/h4&gt;
&lt;p&gt;
When creating the application pool, specifically set the memory limit rather than
the time limit which is set by default.&amp;nbsp; &lt;a href="http://www.asp.net"&gt;Asp.net&lt;/a&gt; has
a &lt;a href="http://www.asp.net/learn/whitepapers/aspnet-and-iis6/"&gt;good whitepaper&lt;/a&gt; which
explains the value of this: &lt;blockquote&gt; 
&lt;p&gt;
By default IIS 6.0 does not set a limit on the amount of memory that IIS is allowed
to use. ASP.NET’s Cache feature relies on a limitation of memory so the Cache can
proactively remove unused items from memory. 
&lt;p&gt;
It is recommended that you configure the memory recycling feature of IIS 6.0.
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;h4&gt;7.&amp;nbsp; Create and appropriately use an app_Offline.htm file
&lt;/h4&gt;
&lt;p&gt;
There are many benefits to using this file.&amp;nbsp; It provides an easy way to take
your application offline in a somewhat user friendly way (you can at least have a
pretty explanation) while fixing critical issues or pushing a major update.&amp;nbsp;
It also forces an application restart in case you forget to do this for a deployment.&amp;nbsp;
Once again, ScottGu is the &lt;a href="http://weblogs.asp.net/scottgu/archive/2006/04/09/442332.aspx"&gt;best
source&lt;/a&gt; for more information on this. 
&lt;h4&gt;8.&amp;nbsp; Develop a repeatable deployment process and automate it
&lt;/h4&gt;
&lt;p&gt;
It is way too easy to make mistakes when deploying any type of software.&amp;nbsp; This
is especially the case with software that uses configuration files that may be different
between the development, staging, or production environments.&amp;nbsp; I would argue
that the process you come up with is not nearly as important as it being easily repeatable
and automated.&amp;nbsp; You can fine tune the process as needed, but you don't want a
simple typo to bring a site down. 
&lt;h4&gt;9.&amp;nbsp; Build and reference release versions of all assemblies
&lt;/h4&gt;
&lt;p&gt;
In addition to making sure ASP.NET is not configured in debug mode, also make sure
that your assemblies are not debug assemblies.&amp;nbsp; There are of course exceptions
if you are trying to solve a unique issue in your production environment ... but in
most cases you should always deploy with release builds for all assemblies. 
&lt;h4&gt;10.&amp;nbsp; Load test
&lt;/h4&gt;
&lt;p&gt;
This goes without saying.&amp;nbsp; Inevitably, good load testing will uncover threading
and memory issues not otherwise considered.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.ilovedoudou.com/aggbug.ashx?id=f9a01848-7142-4840-82e2-2ef08529f15c" /&gt;</description>
      <comments>http://blog.ilovedoudou.com/CommentView,guid,f9a01848-7142-4840-82e2-2ef08529f15c.aspx</comments>
      <category>DotNet / ASP;Web</category>
    </item>
    <item>
      <trackback:ping>http://blog.ilovedoudou.com/Trackback.aspx?guid=163eb255-ce6b-4076-bd0d-7ae831ae6fa8</trackback:ping>
      <pingback:server>http://blog.ilovedoudou.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.ilovedoudou.com/PermaLink,guid,163eb255-ce6b-4076-bd0d-7ae831ae6fa8.aspx</pingback:target>
      <dc:creator>Kevin Mocha</dc:creator>
      <wfw:comment>http://blog.ilovedoudou.com/CommentView,guid,163eb255-ce6b-4076-bd0d-7ae831ae6fa8.aspx</wfw:comment>
      <wfw:commentRss>http://blog.ilovedoudou.com/SyndicationService.asmx/GetEntryCommentsRss?guid=163eb255-ce6b-4076-bd0d-7ae831ae6fa8</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a title="http://kuler.adobe.com/#" href="http://kuler.adobe.com/#">http://kuler.adobe.com/#</a>
        </p>
        <img width="0" height="0" src="http://blog.ilovedoudou.com/aggbug.ashx?id=163eb255-ce6b-4076-bd0d-7ae831ae6fa8" />
      </body>
      <title>color schema website</title>
      <guid isPermaLink="false">http://blog.ilovedoudou.com/PermaLink,guid,163eb255-ce6b-4076-bd0d-7ae831ae6fa8.aspx</guid>
      <link>http://blog.ilovedoudou.com/PermaLink,guid,163eb255-ce6b-4076-bd0d-7ae831ae6fa8.aspx</link>
      <pubDate>Wed, 30 Jan 2008 00:42:56 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a title="http://kuler.adobe.com/#" href="http://kuler.adobe.com/#"&gt;http://kuler.adobe.com/#&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.ilovedoudou.com/aggbug.ashx?id=163eb255-ce6b-4076-bd0d-7ae831ae6fa8" /&gt;</description>
      <comments>http://blog.ilovedoudou.com/CommentView,guid,163eb255-ce6b-4076-bd0d-7ae831ae6fa8.aspx</comments>
      <category>Web</category>
    </item>
    <item>
      <trackback:ping>http://blog.ilovedoudou.com/Trackback.aspx?guid=efa10fd9-ea8c-4e75-88e2-88bb0ae69dcc</trackback:ping>
      <pingback:server>http://blog.ilovedoudou.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.ilovedoudou.com/PermaLink,guid,efa10fd9-ea8c-4e75-88e2-88bb0ae69dcc.aspx</pingback:target>
      <dc:creator>Kevin Mocha</dc:creator>
      <wfw:comment>http://blog.ilovedoudou.com/CommentView,guid,efa10fd9-ea8c-4e75-88e2-88bb0ae69dcc.aspx</wfw:comment>
      <wfw:commentRss>http://blog.ilovedoudou.com/SyndicationService.asmx/GetEntryCommentsRss?guid=efa10fd9-ea8c-4e75-88e2-88bb0ae69dcc</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a title="http://developer.apple.com/iphone/devcenter/designingcontent.html" href="http://developer.apple.com/iphone/devcenter/designingcontent.html">http://developer.apple.com/iphone/devcenter/designingcontent.html</a>
        </p>
        <p>
          <a title="http://www.practicalecommerce.com/blogs/developers-diary/archives/104" href="http://www.practicalecommerce.com/blogs/developers-diary/archives/104">http://www.practicalecommerce.com/blogs/developers-diary/archives/104</a>
        </p>
        <p>
 
</p>
        <p>
I'm getting ready to setup an HTC Excalibur and I wanted to post my list of favorite
sites to visit with my Mobile Browser and a list of the apps I really need to install
to make my Windows Mobile Smartphone complete. 
</p>
        <ul>
          <li>
            <strong>Amazon Mobile </strong>- <a href="http://m.amazon.com">http://m.amazon.com</a> -
A basic, but very usable site, focused on search, that lets folks who've setup their
Amazon account ahead of time purchase directly from the phone. Nice if you have Amazon
Prime Free Shipping. 
</li>
          <li>
            <strong>BBC PDA </strong>- <a href="http://www.bbc.co.uk/mobile/pda">http://www.bbc.co.uk/mobile/pda</a> or <a href="http://www.bbc.co.uk/mobile">http://www.bbc.co.uk/mobile</a> -
BBC has a mobile site and a PDA site, but the PDA site looks best on Smartphones or
Blackberries. The best of the BBC on my phone. The mobile site would look good on
an old black-and-white WAP Nokia. 
</li>
          <li>
            <strong>CNN Mobile </strong>- <a href="http://m.cnn.com">http://m.cnn.com</a> - Same
here, mobile CNN, some pics, I use this site a lot. 
</li>
          <li>
            <strong>Engadget Mobile </strong>- <a href="http://m.engadget.com">http://m.engadget.com</a> -
My favorite tech and gadget blog, now with mobiley goodness. I wish I could see comments
though. 
</li>
          <li>
            <strong>Hanselman.com</strong> - <a href="http://www.hanselman.com">http://www.hanselman.com</a> -
Ha! See what I did right there? Back in the day, we taught <a href="http://www.hanselman.com/blog/MakingDasBlogWorkOnMobileDevices.aspx">dasBlog
about mobile devices</a> and if you hit hanselman.com from a Blackberry or Windows
Mobile browser (and a number of other tiny browsers), we'll detect it and give you
a mobile experience. Yay! 
</li>
          <li>
            <strong>Facebook</strong> - <a href="http://m.facebook.com">http://m.facebook.com</a> -
In terms of pure functionality, I'd say that Facebook's mobile site is, hands-down,
the most functional. It feels like you can most everything you'd ever want to using
only Tiny HTML. This site and this company continue to impress, probably because it's
running entirely on Red Bull and 20-year-olds. 
</li>
          <li>
            <strong>Flight Stats</strong> - <a href="http://mobile.flightstats.com">http://mobile.flightstats.com</a> -
This fine site has saved my <a href="http://www.urbandictionary.com/define.php?term=tuckus">tuckus</a> a
number of times while traveling. Their Airport Chatter section is interesting also. 
</li>
          <li>
            <strong>Google</strong> - <a href="http://www.google.com/xhtml">http://www.google.com/xhtml</a> -
The Tiny XHTML version of Google includes location specific searches and personalization
with News, Weather, Movies, etc. 
<ul><li><strong>+1-800-GOOG-411 (+1-800-4664-411)</strong> - If you're able to call this number,
either domestically or internationally, it's worth a try because it's amazing. Much
better than the "1-800-Tell-Me stuff back in the day, but still of the same vein.
I use this a LOT. 
</li></ul></li>
          <li>
            <strong>Microsoft Live </strong>- <a href="http://wls.live.com">http://wls.live.com</a> or <a href="http://m.live.com">http://m.live.com</a> -
If you hit wls you'll get your browser detected and possible prompted to download
a nice applet for your phone. If you hit m.live.com you'll get tiny Windows Live Search. 
</li>
          <li>
            <strong>Gmail</strong> - <a href="http://m.gmail.com">http://m.gmail.com</a> - If
you hit gmail with your phone you should get detected and sent over to the mobile
version. If not, you can hit m.gmail.com or <a href="https://mail.google.com/mail/x/">https://mail.google.com/mail/<strong>x/</strong></a> where
the <em>x</em> is magic. If you're running <a href="http://www.google.com/calendar/hosted/YOURDOMAIN.com/m">Google
Apps for Your Domain (GAFYD) you can hack that URL also</a>. 
</li>
          <li>
            <strong>Joystiq </strong>- <a href="http://m.joystiq.com">http://m.joystiq.com</a> -
Tiny Gaming Site. Interestingly, while they use (I think) the same back end as Engadget,
sometimes the fonts are all wonky. 
</li>
          <li>
            <strong>Mobile MSN </strong>- <a href="http://m.msn.com">http://m.msn.com</a> - A
decent mobile portal and good jumping off point. The mobile stocks are particularly
good. 
</li>
          <li>
            <strong>MSNBC </strong>- <a href="http://www.msnbc.msn.com">http://www.msnbc.msn.com</a> -
It's astonishingly LAME that you can't get to this site from <a href="http://m.msnbc.com">http://m.msnbc.com</a> but
perhaps they'll read this and make that DNS change, because this is a really good
tiny news site. 
</li>
          <li>
            <strong>Alarm.com</strong> - <a href="https://www.alarm.com/pda">https://www.alarm.com/pda</a> -
I use Alarm.com to manage my security systems at the house and our rentals from my
phone. If you've got a service available over the web, you really ought to have a
minimal mobile website so kudos to them for having one. 
</li>
          <li>
            <strong>Twitter </strong>- <a href="http://m.twitter.com">http://m.twitter.com</a> -
Does exactly what it says it does...mobile twitter, although I'd like to be able to
see Direct Replies in the interface. 
</li>
          <li>
            <strong>Wapedia (Mobile Wikipedia) </strong>- <a href="http://wapedia.mobi/en">http://wapedia.mobi/en</a> -
Very useful for <strike>winning arguments with the wife</strike> self-edification,
it's the mobile Wikipedia. 
</li>
        </ul>
        <p>
I think it's funny that folks thought that the ".mobi" top level domain extension
was a good idea and that the internet just changed "www.foo.com" to "m.foo.com" and
saved the registration fee. Plus, I don't have to tap out the "obi" which saves me,
like minutes. 
</p>
        <p>
What are <em>your </em>must-have mobile websites, Dear Reader? <img width="0" height="0" src="http://blog.ilovedoudou.com/aggbug.ashx?id=efa10fd9-ea8c-4e75-88e2-88bb0ae69dcc" /></p>
      </body>
      <title>iPhone web site developing</title>
      <guid isPermaLink="false">http://blog.ilovedoudou.com/PermaLink,guid,efa10fd9-ea8c-4e75-88e2-88bb0ae69dcc.aspx</guid>
      <link>http://blog.ilovedoudou.com/PermaLink,guid,efa10fd9-ea8c-4e75-88e2-88bb0ae69dcc.aspx</link>
      <pubDate>Fri, 25 Jan 2008 22:01:26 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a title="http://developer.apple.com/iphone/devcenter/designingcontent.html" href="http://developer.apple.com/iphone/devcenter/designingcontent.html"&gt;http://developer.apple.com/iphone/devcenter/designingcontent.html&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a title="http://www.practicalecommerce.com/blogs/developers-diary/archives/104" href="http://www.practicalecommerce.com/blogs/developers-diary/archives/104"&gt;http://www.practicalecommerce.com/blogs/developers-diary/archives/104&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
I'm getting ready to setup an HTC Excalibur and I wanted to post my list of favorite
sites to visit with my Mobile Browser and a list of the apps I really need to install
to make my Windows Mobile Smartphone complete. 
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Amazon Mobile &lt;/strong&gt;- &lt;a href="http://m.amazon.com"&gt;http://m.amazon.com&lt;/a&gt; -
A basic, but very usable site, focused on search, that lets folks who've setup their
Amazon account ahead of time purchase directly from the phone. Nice if you have Amazon
Prime Free Shipping. 
&lt;li&gt;
&lt;strong&gt;BBC PDA &lt;/strong&gt;- &lt;a href="http://www.bbc.co.uk/mobile/pda"&gt;http://www.bbc.co.uk/mobile/pda&lt;/a&gt; or &lt;a href="http://www.bbc.co.uk/mobile"&gt;http://www.bbc.co.uk/mobile&lt;/a&gt; -
BBC has a mobile site and a PDA site, but the PDA site looks best on Smartphones or
Blackberries. The best of the BBC on my phone. The mobile site would look good on
an old black-and-white WAP Nokia. 
&lt;li&gt;
&lt;strong&gt;CNN Mobile &lt;/strong&gt;- &lt;a href="http://m.cnn.com"&gt;http://m.cnn.com&lt;/a&gt; - Same
here, mobile CNN, some pics, I use this site a lot. 
&lt;li&gt;
&lt;strong&gt;Engadget Mobile &lt;/strong&gt;- &lt;a href="http://m.engadget.com"&gt;http://m.engadget.com&lt;/a&gt; -
My favorite tech and gadget blog, now with mobiley goodness. I wish I could see comments
though. 
&lt;li&gt;
&lt;strong&gt;Hanselman.com&lt;/strong&gt; - &lt;a href="http://www.hanselman.com"&gt;http://www.hanselman.com&lt;/a&gt; -
Ha! See what I did right there? Back in the day, we taught &lt;a href="http://www.hanselman.com/blog/MakingDasBlogWorkOnMobileDevices.aspx"&gt;dasBlog
about mobile devices&lt;/a&gt; and if you hit hanselman.com from a Blackberry or Windows
Mobile browser (and a number of other tiny browsers), we'll detect it and give you
a mobile experience. Yay! 
&lt;li&gt;
&lt;strong&gt;Facebook&lt;/strong&gt; - &lt;a href="http://m.facebook.com"&gt;http://m.facebook.com&lt;/a&gt; -
In terms of pure functionality, I'd say that Facebook's mobile site is, hands-down,
the most functional. It feels like you can most everything you'd ever want to using
only Tiny HTML. This site and this company continue to impress, probably because it's
running entirely on Red Bull and 20-year-olds. 
&lt;li&gt;
&lt;strong&gt;Flight Stats&lt;/strong&gt; - &lt;a href="http://mobile.flightstats.com"&gt;http://mobile.flightstats.com&lt;/a&gt; -
This fine site has saved my &lt;a href="http://www.urbandictionary.com/define.php?term=tuckus"&gt;tuckus&lt;/a&gt; a
number of times while traveling. Their Airport Chatter section is interesting also. 
&lt;li&gt;
&lt;strong&gt;Google&lt;/strong&gt; - &lt;a href="http://www.google.com/xhtml"&gt;http://www.google.com/xhtml&lt;/a&gt; -
The Tiny XHTML version of Google includes location specific searches and personalization
with News, Weather, Movies, etc. 
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;+1-800-GOOG-411 (+1-800-4664-411)&lt;/strong&gt; - If you're able to call this number,
either domestically or internationally, it's worth a try because it's amazing. Much
better than the "1-800-Tell-Me stuff back in the day, but still of the same vein.
I use this a LOT. 
&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;
&lt;strong&gt;Microsoft Live &lt;/strong&gt;- &lt;a href="http://wls.live.com"&gt;http://wls.live.com&lt;/a&gt; or &lt;a href="http://m.live.com"&gt;http://m.live.com&lt;/a&gt; -
If you hit wls you'll get your browser detected and possible prompted to download
a nice applet for your phone. If you hit m.live.com you'll get tiny Windows Live Search. 
&lt;li&gt;
&lt;strong&gt;Gmail&lt;/strong&gt; - &lt;a href="http://m.gmail.com"&gt;http://m.gmail.com&lt;/a&gt; - If
you hit gmail with your phone you should get detected and sent over to the mobile
version. If not, you can hit m.gmail.com or &lt;a href="https://mail.google.com/mail/x/"&gt;https://mail.google.com/mail/&lt;strong&gt;x/&lt;/strong&gt;&lt;/a&gt; where
the &lt;em&gt;x&lt;/em&gt; is magic. If you're running &lt;a href="http://www.google.com/calendar/hosted/YOURDOMAIN.com/m"&gt;Google
Apps for Your Domain (GAFYD) you can hack that URL also&lt;/a&gt;. 
&lt;li&gt;
&lt;strong&gt;Joystiq &lt;/strong&gt;- &lt;a href="http://m.joystiq.com"&gt;http://m.joystiq.com&lt;/a&gt; -
Tiny Gaming Site. Interestingly, while they use (I think) the same back end as Engadget,
sometimes the fonts are all wonky. 
&lt;li&gt;
&lt;strong&gt;Mobile MSN &lt;/strong&gt;- &lt;a href="http://m.msn.com"&gt;http://m.msn.com&lt;/a&gt; - A
decent mobile portal and good jumping off point. The mobile stocks are particularly
good. 
&lt;li&gt;
&lt;strong&gt;MSNBC &lt;/strong&gt;- &lt;a href="http://www.msnbc.msn.com"&gt;http://www.msnbc.msn.com&lt;/a&gt; -
It's astonishingly LAME that you can't get to this site from &lt;a href="http://m.msnbc.com"&gt;http://m.msnbc.com&lt;/a&gt; but
perhaps they'll read this and make that DNS change, because this is a really good
tiny news site. 
&lt;li&gt;
&lt;strong&gt;Alarm.com&lt;/strong&gt; - &lt;a href="https://www.alarm.com/pda"&gt;https://www.alarm.com/pda&lt;/a&gt; -
I use Alarm.com to manage my security systems at the house and our rentals from my
phone. If you've got a service available over the web, you really ought to have a
minimal mobile website so kudos to them for having one. 
&lt;li&gt;
&lt;strong&gt;Twitter &lt;/strong&gt;- &lt;a href="http://m.twitter.com"&gt;http://m.twitter.com&lt;/a&gt; -
Does exactly what it says it does...mobile twitter, although I'd like to be able to
see Direct Replies in the interface. 
&lt;li&gt;
&lt;strong&gt;Wapedia (Mobile Wikipedia) &lt;/strong&gt;- &lt;a href="http://wapedia.mobi/en"&gt;http://wapedia.mobi/en&lt;/a&gt; -
Very useful for &lt;strike&gt;winning arguments with the wife&lt;/strike&gt; self-edification,
it's the mobile Wikipedia. 
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
I think it's funny that folks thought that the ".mobi" top level domain extension
was a good idea and that the internet just changed "www.foo.com" to "m.foo.com" and
saved the registration fee. Plus, I don't have to tap out the "obi" which saves me,
like minutes. 
&lt;p&gt;
What are &lt;em&gt;your &lt;/em&gt;must-have mobile websites, Dear Reader? &lt;img width="0" height="0" src="http://blog.ilovedoudou.com/aggbug.ashx?id=efa10fd9-ea8c-4e75-88e2-88bb0ae69dcc" /&gt;</description>
      <comments>http://blog.ilovedoudou.com/CommentView,guid,efa10fd9-ea8c-4e75-88e2-88bb0ae69dcc.aspx</comments>
      <category>Cool Stuff;Life;Mobile;Projects / Mobile Navigator Website;Web</category>
    </item>
    <item>
      <trackback:ping>http://blog.ilovedoudou.com/Trackback.aspx?guid=54d54466-e903-46f5-872e-aa7c66377abc</trackback:ping>
      <pingback:server>http://blog.ilovedoudou.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.ilovedoudou.com/PermaLink,guid,54d54466-e903-46f5-872e-aa7c66377abc.aspx</pingback:target>
      <dc:creator>Kevin Mocha</dc:creator>
      <wfw:comment>http://blog.ilovedoudou.com/CommentView,guid,54d54466-e903-46f5-872e-aa7c66377abc.aspx</wfw:comment>
      <wfw:commentRss>http://blog.ilovedoudou.com/SyndicationService.asmx/GetEntryCommentsRss?guid=54d54466-e903-46f5-872e-aa7c66377abc</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a title="http://www.askmehelpdesk.com/taxes/f1-status-self-employment-19049.html" href="http://www.askmehelpdesk.com/taxes/f1-status-self-employment-19049.html">http://www.askmehelpdesk.com/taxes/f1-status-self-employment-19049.html</a>
        </p>
        <img width="0" height="0" src="http://blog.ilovedoudou.com/aggbug.ashx?id=54d54466-e903-46f5-872e-aa7c66377abc" />
      </body>
      <title>How to pay the tax for adSense?</title>
      <guid isPermaLink="false">http://blog.ilovedoudou.com/PermaLink,guid,54d54466-e903-46f5-872e-aa7c66377abc.aspx</guid>
      <link>http://blog.ilovedoudou.com/PermaLink,guid,54d54466-e903-46f5-872e-aa7c66377abc.aspx</link>
      <pubDate>Thu, 24 Jan 2008 16:49:44 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a title="http://www.askmehelpdesk.com/taxes/f1-status-self-employment-19049.html" href="http://www.askmehelpdesk.com/taxes/f1-status-self-employment-19049.html"&gt;http://www.askmehelpdesk.com/taxes/f1-status-self-employment-19049.html&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.ilovedoudou.com/aggbug.ashx?id=54d54466-e903-46f5-872e-aa7c66377abc" /&gt;</description>
      <comments>http://blog.ilovedoudou.com/CommentView,guid,54d54466-e903-46f5-872e-aa7c66377abc.aspx</comments>
      <category>Web</category>
    </item>
    <item>
      <trackback:ping>http://blog.ilovedoudou.com/Trackback.aspx?guid=1692c383-f758-4686-a7c3-dda64c6253f2</trackback:ping>
      <pingback:server>http://blog.ilovedoudou.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.ilovedoudou.com/PermaLink,guid,1692c383-f758-4686-a7c3-dda64c6253f2.aspx</pingback:target>
      <dc:creator>Kevin Mocha</dc:creator>
      <wfw:comment>http://blog.ilovedoudou.com/CommentView,guid,1692c383-f758-4686-a7c3-dda64c6253f2.aspx</wfw:comment>
      <wfw:commentRss>http://blog.ilovedoudou.com/SyndicationService.asmx/GetEntryCommentsRss?guid=1692c383-f758-4686-a7c3-dda64c6253f2</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a title="http://www.aaronlerch.com/blog/2008/01/01/unifying-web-sites-and-web-services-with-the-aspnet-mvc-framework/" href="http://www.aaronlerch.com/blog/2008/01/01/unifying-web-sites-and-web-services-with-the-aspnet-mvc-framework/">http://www.aaronlerch.com/blog/2008/01/01/unifying-web-sites-and-web-services-with-the-aspnet-mvc-framework/</a>
        </p>
        <img width="0" height="0" src="http://blog.ilovedoudou.com/aggbug.ashx?id=1692c383-f758-4686-a7c3-dda64c6253f2" />
      </body>
      <title>Unifying Web &amp;quot;Sites&amp;quot; and Web Services with the ASP.NET MVC Framework</title>
      <guid isPermaLink="false">http://blog.ilovedoudou.com/PermaLink,guid,1692c383-f758-4686-a7c3-dda64c6253f2.aspx</guid>
      <link>http://blog.ilovedoudou.com/PermaLink,guid,1692c383-f758-4686-a7c3-dda64c6253f2.aspx</link>
      <pubDate>Fri, 11 Jan 2008 15:04:01 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a title="http://www.aaronlerch.com/blog/2008/01/01/unifying-web-sites-and-web-services-with-the-aspnet-mvc-framework/" href="http://www.aaronlerch.com/blog/2008/01/01/unifying-web-sites-and-web-services-with-the-aspnet-mvc-framework/"&gt;http://www.aaronlerch.com/blog/2008/01/01/unifying-web-sites-and-web-services-with-the-aspnet-mvc-framework/&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.ilovedoudou.com/aggbug.ashx?id=1692c383-f758-4686-a7c3-dda64c6253f2" /&gt;</description>
      <comments>http://blog.ilovedoudou.com/CommentView,guid,1692c383-f758-4686-a7c3-dda64c6253f2.aspx</comments>
      <category>DotNet / ASP;Web</category>
    </item>
    <item>
      <trackback:ping>http://blog.ilovedoudou.com/Trackback.aspx?guid=1a115622-a165-4e3a-a852-1d9f9b2d701c</trackback:ping>
      <pingback:server>http://blog.ilovedoudou.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.ilovedoudou.com/PermaLink,guid,1a115622-a165-4e3a-a852-1d9f9b2d701c.aspx</pingback:target>
      <dc:creator>Kevin Mocha</dc:creator>
      <wfw:comment>http://blog.ilovedoudou.com/CommentView,guid,1a115622-a165-4e3a-a852-1d9f9b2d701c.aspx</wfw:comment>
      <wfw:commentRss>http://blog.ilovedoudou.com/SyndicationService.asmx/GetEntryCommentsRss?guid=1a115622-a165-4e3a-a852-1d9f9b2d701c</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a title="http://www.aaronlerch.com/blog/2008/01/01/unifying-web-sites-and-web-services-with-the-aspnet-mvc-framework/" href="http://www.aaronlerch.com/blog/2008/01/01/unifying-web-sites-and-web-services-with-the-aspnet-mvc-framework/">http://www.aaronlerch.com/blog/2008/01/01/unifying-web-sites-and-web-services-with-the-aspnet-mvc-framework/</a>
        </p>
        <img width="0" height="0" src="http://blog.ilovedoudou.com/aggbug.ashx?id=1a115622-a165-4e3a-a852-1d9f9b2d701c" />
      </body>
      <title>Unifying Web &amp;quot;Sites&amp;quot; and Web Services with the ASP.NET MVC Framework</title>
      <guid isPermaLink="false">http://blog.ilovedoudou.com/PermaLink,guid,1a115622-a165-4e3a-a852-1d9f9b2d701c.aspx</guid>
      <link>http://blog.ilovedoudou.com/PermaLink,guid,1a115622-a165-4e3a-a852-1d9f9b2d701c.aspx</link>
      <pubDate>Fri, 11 Jan 2008 15:03:54 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a title="http://www.aaronlerch.com/blog/2008/01/01/unifying-web-sites-and-web-services-with-the-aspnet-mvc-framework/" href="http://www.aaronlerch.com/blog/2008/01/01/unifying-web-sites-and-web-services-with-the-aspnet-mvc-framework/"&gt;http://www.aaronlerch.com/blog/2008/01/01/unifying-web-sites-and-web-services-with-the-aspnet-mvc-framework/&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.ilovedoudou.com/aggbug.ashx?id=1a115622-a165-4e3a-a852-1d9f9b2d701c" /&gt;</description>
      <comments>http://blog.ilovedoudou.com/CommentView,guid,1a115622-a165-4e3a-a852-1d9f9b2d701c.aspx</comments>
      <category>DotNet / ASP;Web</category>
    </item>
    <item>
      <trackback:ping>http://blog.ilovedoudou.com/Trackback.aspx?guid=6bee7aec-7c84-43cf-b7d1-6128c5171b45</trackback:ping>
      <pingback:server>http://blog.ilovedoudou.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.ilovedoudou.com/PermaLink,guid,6bee7aec-7c84-43cf-b7d1-6128c5171b45.aspx</pingback:target>
      <dc:creator>Kevin Mocha</dc:creator>
      <wfw:comment>http://blog.ilovedoudou.com/CommentView,guid,6bee7aec-7c84-43cf-b7d1-6128c5171b45.aspx</wfw:comment>
      <wfw:commentRss>http://blog.ilovedoudou.com/SyndicationService.asmx/GetEntryCommentsRss?guid=6bee7aec-7c84-43cf-b7d1-6128c5171b45</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a title="http://www.imaginativeuniversal.com/SessionExpiredMonitorWithASPNETAJAX.aspx" href="http://www.imaginativeuniversal.com/SessionExpiredMonitorWithASPNETAJAX.aspx">http://www.imaginativeuniversal.com/SessionExpiredMonitorWithASPNETAJAX.aspx</a>
        </p>
        <img width="0" height="0" src="http://blog.ilovedoudou.com/aggbug.ashx?id=6bee7aec-7c84-43cf-b7d1-6128c5171b45" />
      </body>
      <title>Session Expired Monitor with ASP.NET AJAX</title>
      <guid isPermaLink="false">http://blog.ilovedoudou.com/PermaLink,guid,6bee7aec-7c84-43cf-b7d1-6128c5171b45.aspx</guid>
      <link>http://blog.ilovedoudou.com/PermaLink,guid,6bee7aec-7c84-43cf-b7d1-6128c5171b45.aspx</link>
      <pubDate>Fri, 11 Jan 2008 14:10:23 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a title="http://www.imaginativeuniversal.com/SessionExpiredMonitorWithASPNETAJAX.aspx" href="http://www.imaginativeuniversal.com/SessionExpiredMonitorWithASPNETAJAX.aspx"&gt;http://www.imaginativeuniversal.com/SessionExpiredMonitorWithASPNETAJAX.aspx&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.ilovedoudou.com/aggbug.ashx?id=6bee7aec-7c84-43cf-b7d1-6128c5171b45" /&gt;</description>
      <comments>http://blog.ilovedoudou.com/CommentView,guid,6bee7aec-7c84-43cf-b7d1-6128c5171b45.aspx</comments>
      <category>DotNet / ASP;Projects / YardSaleMap;Web</category>
    </item>
    <item>
      <trackback:ping>http://blog.ilovedoudou.com/Trackback.aspx?guid=7d595c9a-27c0-4980-897d-318a728276dc</trackback:ping>
      <pingback:server>http://blog.ilovedoudou.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.ilovedoudou.com/PermaLink,guid,7d595c9a-27c0-4980-897d-318a728276dc.aspx</pingback:target>
      <dc:creator>Kevin Mocha</dc:creator>
      <wfw:comment>http://blog.ilovedoudou.com/CommentView,guid,7d595c9a-27c0-4980-897d-318a728276dc.aspx</wfw:comment>
      <wfw:commentRss>http://blog.ilovedoudou.com/SyndicationService.asmx/GetEntryCommentsRss?guid=7d595c9a-27c0-4980-897d-318a728276dc</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
1&amp;1 VPS FAQ
</p>
        <p>
          <a title="http://www.faq.1and1.com/dedicated_servers/virtual_private_servers/windows_vps/general_information/index.html" href="http://www.faq.1and1.com/dedicated_servers/virtual_private_servers/windows_vps/general_information/index.html">http://www.faq.1and1.com/dedicated_servers/virtual_private_servers/windows_vps/general_information/index.html</a>
        </p>
        <p>
 
</p>
        <p>
1. install .Net 3.5, SQL Express 2005, MSSMSE
</p>
        <p>
2. Modify the registry table to remove "mscorlib.tlb could not be loaded" <a title="http://kbalertz.com/918685/Error-message-install-Server-could.aspx" href="http://kbalertz.com/918685/Error-message-install-Server-could.aspx">http://kbalertz.com/918685/Error-message-install-Server-could.aspx</a></p>
        <p>
3. Open IIS to create the new web site.
</p>
        <p>
4. Change the permission from "no script" to "script only"
</p>
        <p>
5 Open MSSMSE to add "Network Service" login account and customized user login account.
</p>
        <p>
6 Add a new user for the target db (better use the same name with the customized user
login created in step 5)
</p>
        <p>
7. Don't forget the grand the permission. 
</p>
        <p>
8. connection string for .Net 2.0 and above is like this: 
</p>
        <p>
          <em>Data Source=myServerAddress;Initial Catalog=myDataBase;Integrated Security=SSPI;User
ID=myDomain\myUsername;Password=myPassword;</em>
        </p>
        <p>
          <a title="http://www.connectionstrings.com/default.aspx?carrier=sqlserver2005" href="http://www.connectionstrings.com/default.aspx?carrier=sqlserver2005">http://www.connectionstrings.com/default.aspx?carrier=sqlserver2005</a>
        </p>
        <p>
9. Have to activate the Plesk to create a backup of VPS image manually, which will
consume lots of resource though for the $29.99 plan. 
</p>
        <img width="0" height="0" src="http://blog.ilovedoudou.com/aggbug.ashx?id=7d595c9a-27c0-4980-897d-318a728276dc" />
      </body>
      <title>configure 1&amp;amp;1 VPS package</title>
      <guid isPermaLink="false">http://blog.ilovedoudou.com/PermaLink,guid,7d595c9a-27c0-4980-897d-318a728276dc.aspx</guid>
      <link>http://blog.ilovedoudou.com/PermaLink,guid,7d595c9a-27c0-4980-897d-318a728276dc.aspx</link>
      <pubDate>Sat, 22 Dec 2007 04:47:57 GMT</pubDate>
      <description>&lt;p&gt;
1&amp;amp;1 VPS FAQ
&lt;/p&gt;
&lt;p&gt;
&lt;a title="http://www.faq.1and1.com/dedicated_servers/virtual_private_servers/windows_vps/general_information/index.html" href="http://www.faq.1and1.com/dedicated_servers/virtual_private_servers/windows_vps/general_information/index.html"&gt;http://www.faq.1and1.com/dedicated_servers/virtual_private_servers/windows_vps/general_information/index.html&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
1. install .Net 3.5, SQL Express 2005, MSSMSE
&lt;/p&gt;
&lt;p&gt;
2. Modify the registry table to remove "mscorlib.tlb could not be loaded" &lt;a title="http://kbalertz.com/918685/Error-message-install-Server-could.aspx" href="http://kbalertz.com/918685/Error-message-install-Server-could.aspx"&gt;http://kbalertz.com/918685/Error-message-install-Server-could.aspx&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
3. Open IIS to create the new web site.
&lt;/p&gt;
&lt;p&gt;
4. Change the permission from "no script" to "script only"
&lt;/p&gt;
&lt;p&gt;
5 Open MSSMSE to add "Network Service" login account and customized user login account.
&lt;/p&gt;
&lt;p&gt;
6 Add a new user for the target db (better use the same name with the customized user
login created in step 5)
&lt;/p&gt;
&lt;p&gt;
7. Don't forget the grand the permission. 
&lt;/p&gt;
&lt;p&gt;
8. connection string for .Net 2.0 and above is like this: 
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;Data Source=myServerAddress;Initial Catalog=myDataBase;Integrated Security=SSPI;User
ID=myDomain\myUsername;Password=myPassword;&lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a title="http://www.connectionstrings.com/default.aspx?carrier=sqlserver2005" href="http://www.connectionstrings.com/default.aspx?carrier=sqlserver2005"&gt;http://www.connectionstrings.com/default.aspx?carrier=sqlserver2005&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
9. Have to activate the Plesk to create a backup of VPS image manually, which will
consume lots of resource though for the $29.99 plan. 
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.ilovedoudou.com/aggbug.ashx?id=7d595c9a-27c0-4980-897d-318a728276dc" /&gt;</description>
      <comments>http://blog.ilovedoudou.com/CommentView,guid,7d595c9a-27c0-4980-897d-318a728276dc.aspx</comments>
      <category>Projects / YardSaleMap;Web</category>
    </item>
    <item>
      <trackback:ping>http://blog.ilovedoudou.com/Trackback.aspx?guid=2ec1e8ab-60ee-45f1-b855-b17ae44afb90</trackback:ping>
      <pingback:server>http://blog.ilovedoudou.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.ilovedoudou.com/PermaLink,guid,2ec1e8ab-60ee-45f1-b855-b17ae44afb90.aspx</pingback:target>
      <dc:creator>Kevin Mocha</dc:creator>
      <wfw:comment>http://blog.ilovedoudou.com/CommentView,guid,2ec1e8ab-60ee-45f1-b855-b17ae44afb90.aspx</wfw:comment>
      <wfw:commentRss>http://blog.ilovedoudou.com/SyndicationService.asmx/GetEntryCommentsRss?guid=2ec1e8ab-60ee-45f1-b855-b17ae44afb90</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a title="http://msdn2.microsoft.com/en-us/library/dct97kc3.aspx" href="http://msdn2.microsoft.com/en-us/library/dct97kc3.aspx">http://msdn2.microsoft.com/en-us/library/dct97kc3.aspx</a>
        </p>
        <p>
Both master pages and content pages can contain event handlers for controls. For controls,
events are handled locally—a control in a content page raises an event in the content
page, and a control in the master page raises an event in the master page. Controls
events are not sent from the content page to the master page. Similarly, you cannot
handle an event from a master page control in a content page. 
</p>
        <p>
In some cases, the same event is raised in both the content and the master page. For
example, both pages raise <a href="http://msdn2.microsoft.com/en-us/library/ddx12zse.aspx">Init</a> and <a href="http://msdn2.microsoft.com/en-us/library/abk3yt37.aspx">Load</a> events.
The general rule for how events are raised is that the initialization events are raised
from the innermost control to the outermost one, and all other events are raised from
the outermost control to the innermost one. It is helpful to remember that the master
page is merged into the content page and treated as a control in the content page. 
</p>
        <p>
The following is the sequence in which events occur when a master page is merged with
a content page: 
</p>
        <ol>
          <li>
            <p>
Master page controls Init event.
</p>
          </li>
          <li>
            <p>
Content controls Init event.
</p>
          </li>
          <li>
            <p>
Master page Init event.
</p>
          </li>
          <li>
            <p>
Content page Init event.
</p>
          </li>
          <li>
            <p>
Content page Load event.
</p>
          </li>
          <li>
            <p>
Master page Load event.
</p>
          </li>
          <li>
            <p>
Content controls Load event.
</p>
          </li>
          <li>
            <p>
Content page PreRender event.
</p>
          </li>
          <li>
            <p>
Master page PreRender event.
</p>
          </li>
          <li>
            <p>
Master page controls PreRender event.
</p>
          </li>
          <li>
            <p>
Content controls PreRender event.
</p>
          </li>
        </ol>
        <p>
The sequence of events in master and content pages rarely is important for you as
page developer. However, if you are creating event handlers that depend on the availability
of certain controls, you will find it helpful to understand the event sequence in
master and content pages. <img width="0" height="0" src="http://blog.ilovedoudou.com/aggbug.ashx?id=2ec1e8ab-60ee-45f1-b855-b17ae44afb90" /></p>
      </body>
      <title>Events in ASP.NET Master and Content Pages</title>
      <guid isPermaLink="false">http://blog.ilovedoudou.com/PermaLink,guid,2ec1e8ab-60ee-45f1-b855-b17ae44afb90.aspx</guid>
      <link>http://blog.ilovedoudou.com/PermaLink,guid,2ec1e8ab-60ee-45f1-b855-b17ae44afb90.aspx</link>
      <pubDate>Thu, 20 Dec 2007 03:42:19 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a title="http://msdn2.microsoft.com/en-us/library/dct97kc3.aspx" href="http://msdn2.microsoft.com/en-us/library/dct97kc3.aspx"&gt;http://msdn2.microsoft.com/en-us/library/dct97kc3.aspx&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Both master pages and content pages can contain event handlers for controls. For controls,
events are handled locally—a control in a content page raises an event in the content
page, and a control in the master page raises an event in the master page. Controls
events are not sent from the content page to the master page. Similarly, you cannot
handle an event from a master page control in a content page. 
&lt;p&gt;
In some cases, the same event is raised in both the content and the master page. For
example, both pages raise &lt;a href="http://msdn2.microsoft.com/en-us/library/ddx12zse.aspx"&gt;Init&lt;/a&gt; and &lt;a href="http://msdn2.microsoft.com/en-us/library/abk3yt37.aspx"&gt;Load&lt;/a&gt; events.
The general rule for how events are raised is that the initialization events are raised
from the innermost control to the outermost one, and all other events are raised from
the outermost control to the innermost one. It is helpful to remember that the master
page is merged into the content page and treated as a control in the content page. 
&lt;p&gt;
The following is the sequence in which events occur when a master page is merged with
a content page: 
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;
Master page controls Init event.
&lt;/p&gt;
&lt;li&gt;
&lt;p&gt;
Content controls Init event.
&lt;/p&gt;
&lt;li&gt;
&lt;p&gt;
Master page Init event.
&lt;/p&gt;
&lt;li&gt;
&lt;p&gt;
Content page Init event.
&lt;/p&gt;
&lt;li&gt;
&lt;p&gt;
Content page Load event.
&lt;/p&gt;
&lt;li&gt;
&lt;p&gt;
Master page Load event.
&lt;/p&gt;
&lt;li&gt;
&lt;p&gt;
Content controls Load event.
&lt;/p&gt;
&lt;li&gt;
&lt;p&gt;
Content page PreRender event.
&lt;/p&gt;
&lt;li&gt;
&lt;p&gt;
Master page PreRender event.
&lt;/p&gt;
&lt;li&gt;
&lt;p&gt;
Master page controls PreRender event.
&lt;/p&gt;
&lt;li&gt;
&lt;p&gt;
Content controls PreRender event.
&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
The sequence of events in master and content pages rarely is important for you as
page developer. However, if you are creating event handlers that depend on the availability
of certain controls, you will find it helpful to understand the event sequence in
master and content pages. &lt;img width="0" height="0" src="http://blog.ilovedoudou.com/aggbug.ashx?id=2ec1e8ab-60ee-45f1-b855-b17ae44afb90" /&gt;</description>
      <comments>http://blog.ilovedoudou.com/CommentView,guid,2ec1e8ab-60ee-45f1-b855-b17ae44afb90.aspx</comments>
      <category>DotNet / ASP;Web</category>
    </item>
    <item>
      <trackback:ping>http://blog.ilovedoudou.com/Trackback.aspx?guid=24026b68-02f5-4e48-a302-4971a4746ae9</trackback:ping>
      <pingback:server>http://blog.ilovedoudou.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.ilovedoudou.com/PermaLink,guid,24026b68-02f5-4e48-a302-4971a4746ae9.aspx</pingback:target>
      <dc:creator>Kevin Mocha</dc:creator>
      <wfw:comment>http://blog.ilovedoudou.com/CommentView,guid,24026b68-02f5-4e48-a302-4971a4746ae9.aspx</wfw:comment>
      <wfw:commentRss>http://blog.ilovedoudou.com/SyndicationService.asmx/GetEntryCommentsRss?guid=24026b68-02f5-4e48-a302-4971a4746ae9</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://web-harvest.sourceforge.net/">http://web-harvest.sourceforge.net/</a>
        </p>
        <p>
          <a href="http://lucene.apache.org/">http://lucene.apache.org/</a>
        </p>
        <img width="0" height="0" src="http://blog.ilovedoudou.com/aggbug.ashx?id=24026b68-02f5-4e48-a302-4971a4746ae9" />
      </body>
      <title>Web Crawler and search engine</title>
      <guid isPermaLink="false">http://blog.ilovedoudou.com/PermaLink,guid,24026b68-02f5-4e48-a302-4971a4746ae9.aspx</guid>
      <link>http://blog.ilovedoudou.com/PermaLink,guid,24026b68-02f5-4e48-a302-4971a4746ae9.aspx</link>
      <pubDate>Wed, 19 Dec 2007 16:02:07 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://web-harvest.sourceforge.net/"&gt;http://web-harvest.sourceforge.net/&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://lucene.apache.org/"&gt;http://lucene.apache.org/&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.ilovedoudou.com/aggbug.ashx?id=24026b68-02f5-4e48-a302-4971a4746ae9" /&gt;</description>
      <comments>http://blog.ilovedoudou.com/CommentView,guid,24026b68-02f5-4e48-a302-4971a4746ae9.aspx</comments>
      <category>Projects / deals;Web</category>
    </item>
    <item>
      <trackback:ping>http://blog.ilovedoudou.com/Trackback.aspx?guid=a8ce07dc-09e6-4832-b19a-1da2646db717</trackback:ping>
      <pingback:server>http://blog.ilovedoudou.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.ilovedoudou.com/PermaLink,guid,a8ce07dc-09e6-4832-b19a-1da2646db717.aspx</pingback:target>
      <dc:creator>Kevin Mocha</dc:creator>
      <wfw:comment>http://blog.ilovedoudou.com/CommentView,guid,a8ce07dc-09e6-4832-b19a-1da2646db717.aspx</wfw:comment>
      <wfw:commentRss>http://blog.ilovedoudou.com/SyndicationService.asmx/GetEntryCommentsRss?guid=a8ce07dc-09e6-4832-b19a-1da2646db717</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a title="http://iframe.in/" href="http://iframe.in/">http://iframe.in/</a>
        </p>
        <img width="0" height="0" src="http://blog.ilovedoudou.com/aggbug.ashx?id=a8ce07dc-09e6-4832-b19a-1da2646db717" />
      </body>
      <title>Javascript Encoder</title>
      <guid isPermaLink="false">http://blog.ilovedoudou.com/PermaLink,guid,a8ce07dc-09e6-4832-b19a-1da2646db717.aspx</guid>
      <link>http://blog.ilovedoudou.com/PermaLink,guid,a8ce07dc-09e6-4832-b19a-1da2646db717.aspx</link>
      <pubDate>Thu, 29 Nov 2007 04:50:40 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a title="http://iframe.in/" href="http://iframe.in/"&gt;http://iframe.in/&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.ilovedoudou.com/aggbug.ashx?id=a8ce07dc-09e6-4832-b19a-1da2646db717" /&gt;</description>
      <comments>http://blog.ilovedoudou.com/CommentView,guid,a8ce07dc-09e6-4832-b19a-1da2646db717.aspx</comments>
      <category>DotNet / AJAX;Web</category>
    </item>
    <item>
      <trackback:ping>http://blog.ilovedoudou.com/Trackback.aspx?guid=12028123-5046-42c2-ba97-6a79e407e46a</trackback:ping>
      <pingback:server>http://blog.ilovedoudou.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.ilovedoudou.com/PermaLink,guid,12028123-5046-42c2-ba97-6a79e407e46a.aspx</pingback:target>
      <dc:creator>Kevin Mocha</dc:creator>
      <wfw:comment>http://blog.ilovedoudou.com/CommentView,guid,12028123-5046-42c2-ba97-6a79e407e46a.aspx</wfw:comment>
      <wfw:commentRss>http://blog.ilovedoudou.com/SyndicationService.asmx/GetEntryCommentsRss?guid=12028123-5046-42c2-ba97-6a79e407e46a</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a title="http://forums.asp.net/t/1127834.aspx" href="http://forums.asp.net/t/1127834.aspx">http://forums.asp.net/t/1127834.aspx</a>
        </p>
        <p>
 
</p>
        <p>
you can use the following javascript function to set the active tab:  
</p>
        <p>
function SetActiveTab(tabControl, tabNumber)<br />
{<br />
  var ctrl = $find(tabControl);<br />
  ctrl.set_activeTab(ctrl.get_tabs()[tabNumber]);<br />
} 
</p>
        <p>
tabControl: ID from the TabContainer Controls<br />
tabNumber: Number of the new Tab (starting at 0) 
</p>
        <p>
  
</p>
        <p>
Or 
</p>
        <p>
  
</p>
        <p>
$find('&lt;%=TabContainer1.ClientID%&gt;').get_activeTabIndex(); 
</p>
        <p>
and 
</p>
        <p>
$find('&lt;%=TabContainer1.ClientID%&gt;').set_activeTabIndex(2); <img width="0" height="0" src="http://blog.ilovedoudou.com/aggbug.ashx?id=12028123-5046-42c2-ba97-6a79e407e46a" /></p>
      </body>
      <title>Change active tab in Ajax tab container using javascript</title>
      <guid isPermaLink="false">http://blog.ilovedoudou.com/PermaLink,guid,12028123-5046-42c2-ba97-6a79e407e46a.aspx</guid>
      <link>http://blog.ilovedoudou.com/PermaLink,guid,12028123-5046-42c2-ba97-6a79e407e46a.aspx</link>
      <pubDate>Wed, 28 Nov 2007 03:54:46 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a title="http://forums.asp.net/t/1127834.aspx" href="http://forums.asp.net/t/1127834.aspx"&gt;http://forums.asp.net/t/1127834.aspx&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
you can use the following javascript function to set the active tab:&amp;nbsp; 
&lt;p&gt;
function SetActiveTab(tabControl, tabNumber)&lt;br&gt;
{&lt;br&gt;
&amp;nbsp; var ctrl = $find(tabControl);&lt;br&gt;
&amp;nbsp; ctrl.set_activeTab(ctrl.get_tabs()[tabNumber]);&lt;br&gt;
} 
&lt;p&gt;
tabControl: ID from the TabContainer Controls&lt;br&gt;
tabNumber: Number of the new Tab (starting at 0) 
&lt;p&gt;
&amp;nbsp; 
&lt;p&gt;
Or 
&lt;p&gt;
&amp;nbsp; 
&lt;p&gt;
$find('&amp;lt;%=TabContainer1.ClientID%&amp;gt;').get_activeTabIndex(); 
&lt;p&gt;
and 
&lt;p&gt;
$find('&amp;lt;%=TabContainer1.ClientID%&amp;gt;').set_activeTabIndex(2); &lt;img width="0" height="0" src="http://blog.ilovedoudou.com/aggbug.ashx?id=12028123-5046-42c2-ba97-6a79e407e46a" /&gt;</description>
      <comments>http://blog.ilovedoudou.com/CommentView,guid,12028123-5046-42c2-ba97-6a79e407e46a.aspx</comments>
      <category>DotNet / AJAX;DotNet / ASP;Projects / YardSaleMap;Web</category>
    </item>
    <item>
      <trackback:ping>http://blog.ilovedoudou.com/Trackback.aspx?guid=70c673f6-36d4-48a4-ac29-eef0dad8630f</trackback:ping>
      <pingback:server>http://blog.ilovedoudou.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.ilovedoudou.com/PermaLink,guid,70c673f6-36d4-48a4-ac29-eef0dad8630f.aspx</pingback:target>
      <dc:creator>Kevin Mocha</dc:creator>
      <wfw:comment>http://blog.ilovedoudou.com/CommentView,guid,70c673f6-36d4-48a4-ac29-eef0dad8630f.aspx</wfw:comment>
      <wfw:commentRss>http://blog.ilovedoudou.com/SyndicationService.asmx/GetEntryCommentsRss?guid=70c673f6-36d4-48a4-ac29-eef0dad8630f</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a title="http://blenitz.blogspot.com/2007/09/hidden-columns-with-values-aspgridview.html" href="http://blenitz.blogspot.com/2007/09/hidden-columns-with-values-aspgridview.html">http://blenitz.blogspot.com/2007/09/hidden-columns-with-values-aspgridview.html</a>
        </p>
        <p>
(If you don't want to show empty headtitle, put the hidden filed in with other field
in one grid colomn)
</p>
        <p>
If you set Column Visible property to false, this column won't rendered. But if you
want these values available, What will you do?<br />
My trick was, set HeaderText to empty, convert the BoundField in TemplateField, and
use a HiddenField control. The effect the column won't be visible. Also you can use
the controls array to access to value property. 
</p>
        <blockquote>&lt;Columns&gt;&lt;asp:BoundField DataField="CompanyCode"<br />
HeaderText="Company" SortExpression="CompanyCode" /&gt;<br />
...<br />
&lt;Columns&gt;<br />
&lt;asp:TemplateField&gt;&lt;ItemTemplate&gt;&lt;asp:HiddenField<br />
id="hf1" Value='&lt;%# Bind("CompanyCode") %&gt;'<br />
runat="server"&gt;&lt;/asp:HiddenField&gt;&lt;/ItemTemplate&gt;<br />
...<br />
// accesing the value property<br />
int tmpID =<br />
Convert.ToInt32(((HiddenField)GridView1.SelectedRow.Cells[3].Controls[1]).Value); </blockquote>
        <img width="0" height="0" src="http://blog.ilovedoudou.com/aggbug.ashx?id=70c673f6-36d4-48a4-ac29-eef0dad8630f" />
      </body>
      <title>Use Hidden columns in ASP:DataGridView</title>
      <guid isPermaLink="false">http://blog.ilovedoudou.com/PermaLink,guid,70c673f6-36d4-48a4-ac29-eef0dad8630f.aspx</guid>
      <link>http://blog.ilovedoudou.com/PermaLink,guid,70c673f6-36d4-48a4-ac29-eef0dad8630f.aspx</link>
      <pubDate>Mon, 12 Nov 2007 21:07:00 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a title="http://blenitz.blogspot.com/2007/09/hidden-columns-with-values-aspgridview.html" href="http://blenitz.blogspot.com/2007/09/hidden-columns-with-values-aspgridview.html"&gt;http://blenitz.blogspot.com/2007/09/hidden-columns-with-values-aspgridview.html&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
(If you don't want to show empty headtitle, put the hidden filed in with other field
in one grid colomn)
&lt;/p&gt;
&lt;p&gt;
If you set Column Visible property to false, this column won't rendered. But if you
want these values available, What will you do?&lt;br&gt;
My trick was, set HeaderText to empty, convert the BoundField in TemplateField, and
use a HiddenField control. The effect the column won't be visible. Also you can use
the controls array to access to value property. &lt;blockquote&gt;&amp;lt;Columns&amp;gt;&amp;lt;asp:BoundField
DataField="CompanyCode"&lt;br&gt;
HeaderText="Company" SortExpression="CompanyCode" /&amp;gt;&lt;br&gt;
...&lt;br&gt;
&amp;lt;Columns&amp;gt;&lt;br&gt;
&amp;lt;asp:TemplateField&amp;gt;&amp;lt;ItemTemplate&amp;gt;&amp;lt;asp:HiddenField&lt;br&gt;
id="hf1" Value='&amp;lt;%# Bind("CompanyCode") %&amp;gt;'&lt;br&gt;
runat="server"&amp;gt;&amp;lt;/asp:HiddenField&amp;gt;&amp;lt;/ItemTemplate&amp;gt;&lt;br&gt;
...&lt;br&gt;
// accesing the value property&lt;br&gt;
int tmpID =&lt;br&gt;
Convert.ToInt32(((HiddenField)GridView1.SelectedRow.Cells[3].Controls[1]).Value); &lt;/blockquote&gt;&lt;img width="0" height="0" src="http://blog.ilovedoudou.com/aggbug.ashx?id=70c673f6-36d4-48a4-ac29-eef0dad8630f" /&gt;</description>
      <comments>http://blog.ilovedoudou.com/CommentView,guid,70c673f6-36d4-48a4-ac29-eef0dad8630f.aspx</comments>
      <category>DotNet / ASP;Web</category>
    </item>
    <item>
      <trackback:ping>http://blog.ilovedoudou.com/Trackback.aspx?guid=dbc26b3c-f7a1-4953-9597-ec89713d3d6d</trackback:ping>
      <pingback:server>http://blog.ilovedoudou.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.ilovedoudou.com/PermaLink,guid,dbc26b3c-f7a1-4953-9597-ec89713d3d6d.aspx</pingback:target>
      <dc:creator>Kevin Mocha</dc:creator>
      <wfw:comment>http://blog.ilovedoudou.com/CommentView,guid,dbc26b3c-f7a1-4953-9597-ec89713d3d6d.aspx</wfw:comment>
      <wfw:commentRss>http://blog.ilovedoudou.com/SyndicationService.asmx/GetEntryCommentsRss?guid=dbc26b3c-f7a1-4953-9597-ec89713d3d6d</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a title="http://www.cj.com/faq.html" href="http://www.cj.com/faq.html">http://www.cj.com/faq.html</a>
        </p>
        <p>
          <a title="http://forum.abestweb.com/forumdisplay.php?f=34" href="http://forum.abestweb.com/forumdisplay.php?f=34">http://forum.abestweb.com/forumdisplay.php?f=34</a>
        </p>
        <p>
 
</p>
        <p>
Buy.com
</p>
        <p>
          <a title="http://www.buy.com/corp/affiliate_faq.asp?loc=13898" href="http://www.buy.com/corp/affiliate_faq.asp?loc=13898">http://www.buy.com/corp/affiliate_faq.asp?loc=13898</a>
        </p>
        <img width="0" height="0" src="http://blog.ilovedoudou.com/aggbug.ashx?id=dbc26b3c-f7a1-4953-9597-ec89713d3d6d" />
      </body>
      <title>Affiliate Programs</title>
      <guid isPermaLink="false">http://blog.ilovedoudou.com/PermaLink,guid,dbc26b3c-f7a1-4953-9597-ec89713d3d6d.aspx</guid>
      <link>http://blog.ilovedoudou.com/PermaLink,guid,dbc26b3c-f7a1-4953-9597-ec89713d3d6d.aspx</link>
      <pubDate>Mon, 22 Oct 2007 18:56:10 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a title="http://www.cj.com/faq.html" href="http://www.cj.com/faq.html"&gt;http://www.cj.com/faq.html&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a title="http://forum.abestweb.com/forumdisplay.php?f=34" href="http://forum.abestweb.com/forumdisplay.php?f=34"&gt;http://forum.abestweb.com/forumdisplay.php?f=34&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
Buy.com
&lt;/p&gt;
&lt;p&gt;
&lt;a title="http://www.buy.com/corp/affiliate_faq.asp?loc=13898" href="http://www.buy.com/corp/affiliate_faq.asp?loc=13898"&gt;http://www.buy.com/corp/affiliate_faq.asp?loc=13898&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.ilovedoudou.com/aggbug.ashx?id=dbc26b3c-f7a1-4953-9597-ec89713d3d6d" /&gt;</description>
      <comments>http://blog.ilovedoudou.com/CommentView,guid,dbc26b3c-f7a1-4953-9597-ec89713d3d6d.aspx</comments>
      <category>Web</category>
    </item>
    <item>
      <trackback:ping>http://blog.ilovedoudou.com/Trackback.aspx?guid=1e9aa733-1f91-4b39-87be-026646110be5</trackback:ping>
      <pingback:server>http://blog.ilovedoudou.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.ilovedoudou.com/PermaLink,guid,1e9aa733-1f91-4b39-87be-026646110be5.aspx</pingback:target>
      <dc:creator>Kevin Mocha</dc:creator>
      <wfw:comment>http://blog.ilovedoudou.com/CommentView,guid,1e9aa733-1f91-4b39-87be-026646110be5.aspx</wfw:comment>
      <wfw:commentRss>http://blog.ilovedoudou.com/SyndicationService.asmx/GetEntryCommentsRss?guid=1e9aa733-1f91-4b39-87be-026646110be5</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
今天看了一篇关于网站运作、服务器负载的文章，讲得很独到,也很有意义，很现实，建议大家都看看，这些问题我相关很多创业项目忽略或处理得不够深。<br />
这个文章中提到的问题很多看起来是很细的一件事情，但恰恰这就直接导致运作的成败<br />
大家讨论，一定要仔细看完！<br />
原文： 
</p>
        <p>
我做过多个2.0公司的技术顾问，简单的谈谈2.0公司遇到的问题(涉及隐私，我用A B C D代替)，这里就不再赘述大家众所周知的页面静态化，缓存和代码安全等问题了，有点技术的2.0公司的CTO都知道这些东西，我们谈点发展之后的问题 
<br />
A公司 
<br />
A公司做的是SNS网站，程序是两个毛头小伙子做的，目标直指51，程序开发是一帆风顺，功能也比51牛多了，推广也是一帆风顺（A公司有自己独到的推广方式。但是当ALEXA到2W的时候问题出来了，每天下午4点左右，网站速度慢的惊人，基本上打不开，公司三台服务器CPU100%，让人郁闷的是公司的网络配置方式，居然是双WEB的集群，而单独一台DB数据库。整个瓶颈在数据库，于是我建议做DB的集群，分析了一下数据结构，MD，典型的WEB程序员的作品，没有一点数据库设计规范，功能实现是可以，如果要扩展，不可能，集群基本上是不可能的，怎么办？不能办，于是，一个月的时间修改程序，数据结构基本上换了一遍
前期砸进去的几十万打了水飘，用户走光了。 
<br />
结论：WEB2.0前期设计的时候不应该只考虑功能，应该认真考虑一下底层和数据结构了。 
<br />
B公司 
<br />
B公司也是做的SNS网站，程序是3个人开发的，CEO是某名牌大学的经济学硕士，有点知己网的味道，又有一些特色出来，说实话，公司的潜力不错，CEO 有很强的运作能力，感觉前景不错。系统架构还行，但是---但是系统崩溃了，why?系统没有考虑到用户有个海量的说法，文件也有个海量的说法，用户的相册，图片全部存贮在WEB服务器的一个分区上，每个用户一个目录，而打开性能监视器，磁盘的IO高的惊人，基本上无暇响应。众所周知，文件系统也是一个数据库，单独大文件无所谓，关键是整个是300多个G的零碎文件，大量的读写操作，系统崩溃，数据丢失，文件系统的一个链断了，用户数据全部丢失！！！这是一个非常沉重的问题，系统整整停了一个月来做数据恢复（单独文件很容易，但是海量文件目前还没有一个软件能组织起来软件架构）。解决方案：修改程序架构，做分布式文件存贮（程序修改用了8天，但是文件转移却又用去了将近一个月），20万用户损失殆尽 
<br />
结论：WEB2.0前期的设计应该有应付海量存贮的考虑，整个涉及了程序架构的修改，前期规划不好的话基本上思路一条。 
<br />
C公司 
<br />
C公司是一个值得尊敬的公司，CEO技术出身，和比尔盖茨一样，大学未毕业出来做网络，01到03年做短信狠赚了一笔，后来做的小项目也小有所成，说实话，我很佩服。公司做的是校友方面，但是更偏重myspace风格，注重个人主页，推广方面也下了大手笔。系统崩溃的原因其实很简单，由于采用的是微软的
SqlServer，而微软直接就告诉了我们，SQLSERVER不支持集群，他们的数据库超负载，100%就没有下去过，只能横向增加配置，采用了4路 4核CPU系统，但是系统还是崩溃了...
高互动注定了高负载。解决方案：现从基本入手，解决掉几个程序耗能大户，对数据库采用横向切割，将用户每10万进行分组，同时对数据库系统进行散列，将多个表垂直分割，同时进行文件分组，解决问题.
因为修改了数据结构，程序也基本上大动了一下。 好在系统没有出大错，损失不算很大，不过对用户体验造成了很坏的影响。 
<br />
结论：WEB2.0前期设计应该有良好的散列考虑，程序应该能有配合的扩充性，符合数据库的扩充 
<br />
D公司 
<br />
D公司是一个各个方面做的比较好的公司，做了CDN加速，图片也独立分出了N个服务器，数据库不错的一个，(CTO是个数据库专家），系统崩溃的原因在于 WEB，按道理说WEB很容易做集群的，但是发现集群并解决不掉问题，他们的集群只允许做4台的WEB集群，但是4台都当掉了。仔细分析，找到原因，我估计整个也是大部分CTO最容易犯的一个错误，或者说他们根本就想不到的问题，就是WEB上传的问题，上传的时候由于时间的原因，线程是保持链接的，300
个线程就可以把一个WEB Server当掉了。解决方案：这个最简单，把上传和其他耗能大户分离出独立出来。程序改动不是很大，但是之前半个月速度满对用户体验的损失也不可小视。 
<br />
结论：没有什么结论了，毕竟有海量访问经验的CTO不多，也就是那几个大站的。 
<br />
总结：不是泼冷水，模仿其实是很容易的，随便找几个WEB程序员就能做到，并且很简单，速度可能还很高效，因为WEB2.0无非就是跟数据库打交道，会操作数据库就会做。但是真正做大并不容易，因为能应付海量访问的程序并不简单，现在的程序员都太自命不凡，其实真正有经验的并不多，不要相信一个月薪5K-
-10K的程序员能给你多大的惊喜，能应付海量访问的程序员不是那个价格。如果您想做2.0，想做大，有几个个建议： 
<br />
一.找DBMS的专家设计好数据库，大部分程序员都不知道分区视图，数据散列，数据组的概念 
<br />
二.设计好程序架构（这个其实不难，有个高人指导就行了），保持良好的扩展性，成本考虑可以找兼职的系统架构设计师做好系统架构，确定将来的发展瓶颈。 
<br />
三.考虑好文件存贮的问题。文件存贮的技术含量看起来很低，其实是很高的，可以考虑反向代理的方案。文件存贮出问题了，站点基本上就完蛋了，不仅仅是RAID的问题和存贮服务器的问题，不过道理倒是一点就破的 
<br />
四.中国国情考虑，这个最致命，需要考虑电信和网通的问题，CDN并不能解决所有问题。互动性的东西并CDN并不是很有效。最关键的是，现有的双线机房遇到DDOS攻击基本上都会当掉，原因很简单，双线机房都是私人机房，本身就不会有太高的带宽，随便攻击一下就可以D掉（顺带提一个笑话，我知道一个双线机房的老总总共1G的带宽却买了4G的金盾墙，很简单800M的攻击就可以搞定）。 
<br />
五.网络延迟的问题，这是分布式系统必须要考虑的，程序要能容忍0到100秒的数据延迟的功能，也就是同步的问题。不要小看这几十秒，问题很大的，如果你的站点有交互式功能，比如即时聊天，你可以想象一下是个什么结果。对于即时聊天的东西，可以用反向代理来解决（成本较高）。但是对于留言和评论的影响不大，但是如果系统为了健壮做了缓存和静态化的时候，这个东西可能就是灾难性的了。 
<br />
六.分散你的程序，如果你没有太多的资金构筑动辄百万的服务器，建议把功能分散开来，比如相册一台服务器，留言一台服务器 
<br />
七.看好你的程序员，如果没有很好的激励措施的话你的程序员很容易写出敷衍性的代码，而这个可能就是将来的大患，程序架构定下来后要修改可能就要费牛劲了。最好你的CTO能对你100%的衷心，100%的负责。 
<br />
八.文件同步的问题，这个问题可能你觉得没有必要，如果你看一下网通和电信的TTL就明白了，同步要支持续传，并且不能是持续的，否则你的成本会高出N倍，不要期望能通过你的软件实现，交给你的程序员吧，把上面的话告诉他他就知道怎么做了。 
<br />
九.最狠的一个问题了，也是吃亏最大的问题，不管您跟网警的关系多好，看好你的用户，审核好你的东西，一被停机可能就致命，本人就吃过N次亏。 
<br />
十.最后，祝各位站长一番风顺，大展宏图。 
</p>
        <p>
朋友发的，不知道哪里看到的
</p>
        <img width="0" height="0" src="http://blog.ilovedoudou.com/aggbug.ashx?id=1e9aa733-1f91-4b39-87be-026646110be5" />
      </body>
      <title>Issues to construct web2.0 web site</title>
      <guid isPermaLink="false">http://blog.ilovedoudou.com/PermaLink,guid,1e9aa733-1f91-4b39-87be-026646110be5.aspx</guid>
      <link>http://blog.ilovedoudou.com/PermaLink,guid,1e9aa733-1f91-4b39-87be-026646110be5.aspx</link>
      <pubDate>Mon, 22 Oct 2007 13:13:16 GMT</pubDate>
      <description>&lt;p&gt;
今天看了一篇关于网站运作、服务器负载的文章，讲得很独到,也很有意义，很现实，建议大家都看看，这些问题我相关很多创业项目忽略或处理得不够深。&lt;br&gt;
这个文章中提到的问题很多看起来是很细的一件事情，但恰恰这就直接导致运作的成败&lt;br&gt;
大家讨论，一定要仔细看完！&lt;br&gt;
原文： 
&lt;p&gt;
我做过多个2.0公司的技术顾问，简单的谈谈2.0公司遇到的问题(涉及隐私，我用A B C D代替)，这里就不再赘述大家众所周知的页面静态化，缓存和代码安全等问题了，有点技术的2.0公司的CTO都知道这些东西，我们谈点发展之后的问题 
&lt;br&gt;
A公司 
&lt;br&gt;
A公司做的是SNS网站，程序是两个毛头小伙子做的，目标直指51，程序开发是一帆风顺，功能也比51牛多了，推广也是一帆风顺（A公司有自己独到的推广方式。但是当ALEXA到2W的时候问题出来了，每天下午4点左右，网站速度慢的惊人，基本上打不开，公司三台服务器CPU100%，让人郁闷的是公司的网络配置方式，居然是双WEB的集群，而单独一台DB数据库。整个瓶颈在数据库，于是我建议做DB的集群，分析了一下数据结构，MD，典型的WEB程序员的作品，没有一点数据库设计规范，功能实现是可以，如果要扩展，不可能，集群基本上是不可能的，怎么办？不能办，于是，一个月的时间修改程序，数据结构基本上换了一遍
前期砸进去的几十万打了水飘，用户走光了。 
&lt;br&gt;
结论：WEB2.0前期设计的时候不应该只考虑功能，应该认真考虑一下底层和数据结构了。 
&lt;br&gt;
B公司 
&lt;br&gt;
B公司也是做的SNS网站，程序是3个人开发的，CEO是某名牌大学的经济学硕士，有点知己网的味道，又有一些特色出来，说实话，公司的潜力不错，CEO 有很强的运作能力，感觉前景不错。系统架构还行，但是---但是系统崩溃了，why?系统没有考虑到用户有个海量的说法，文件也有个海量的说法，用户的相册，图片全部存贮在WEB服务器的一个分区上，每个用户一个目录，而打开性能监视器，磁盘的IO高的惊人，基本上无暇响应。众所周知，文件系统也是一个数据库，单独大文件无所谓，关键是整个是300多个G的零碎文件，大量的读写操作，系统崩溃，数据丢失，文件系统的一个链断了，用户数据全部丢失！！！这是一个非常沉重的问题，系统整整停了一个月来做数据恢复（单独文件很容易，但是海量文件目前还没有一个软件能组织起来软件架构）。解决方案：修改程序架构，做分布式文件存贮（程序修改用了8天，但是文件转移却又用去了将近一个月），20万用户损失殆尽 
&lt;br&gt;
结论：WEB2.0前期的设计应该有应付海量存贮的考虑，整个涉及了程序架构的修改，前期规划不好的话基本上思路一条。 
&lt;br&gt;
C公司 
&lt;br&gt;
C公司是一个值得尊敬的公司，CEO技术出身，和比尔盖茨一样，大学未毕业出来做网络，01到03年做短信狠赚了一笔，后来做的小项目也小有所成，说实话，我很佩服。公司做的是校友方面，但是更偏重myspace风格，注重个人主页，推广方面也下了大手笔。系统崩溃的原因其实很简单，由于采用的是微软的
SqlServer，而微软直接就告诉了我们，SQLSERVER不支持集群，他们的数据库超负载，100%就没有下去过，只能横向增加配置，采用了4路 4核CPU系统，但是系统还是崩溃了...
高互动注定了高负载。解决方案：现从基本入手，解决掉几个程序耗能大户，对数据库采用横向切割，将用户每10万进行分组，同时对数据库系统进行散列，将多个表垂直分割，同时进行文件分组，解决问题.
因为修改了数据结构，程序也基本上大动了一下。 好在系统没有出大错，损失不算很大，不过对用户体验造成了很坏的影响。 
&lt;br&gt;
结论：WEB2.0前期设计应该有良好的散列考虑，程序应该能有配合的扩充性，符合数据库的扩充 
&lt;br&gt;
D公司 
&lt;br&gt;
D公司是一个各个方面做的比较好的公司，做了CDN加速，图片也独立分出了N个服务器，数据库不错的一个，(CTO是个数据库专家），系统崩溃的原因在于 WEB，按道理说WEB很容易做集群的，但是发现集群并解决不掉问题，他们的集群只允许做4台的WEB集群，但是4台都当掉了。仔细分析，找到原因，我估计整个也是大部分CTO最容易犯的一个错误，或者说他们根本就想不到的问题，就是WEB上传的问题，上传的时候由于时间的原因，线程是保持链接的，300
个线程就可以把一个WEB Server当掉了。解决方案：这个最简单，把上传和其他耗能大户分离出独立出来。程序改动不是很大，但是之前半个月速度满对用户体验的损失也不可小视。 
&lt;br&gt;
结论：没有什么结论了，毕竟有海量访问经验的CTO不多，也就是那几个大站的。 
&lt;br&gt;
总结：不是泼冷水，模仿其实是很容易的，随便找几个WEB程序员就能做到，并且很简单，速度可能还很高效，因为WEB2.0无非就是跟数据库打交道，会操作数据库就会做。但是真正做大并不容易，因为能应付海量访问的程序并不简单，现在的程序员都太自命不凡，其实真正有经验的并不多，不要相信一个月薪5K-
-10K的程序员能给你多大的惊喜，能应付海量访问的程序员不是那个价格。如果您想做2.0，想做大，有几个个建议： 
&lt;br&gt;
一.找DBMS的专家设计好数据库，大部分程序员都不知道分区视图，数据散列，数据组的概念 
&lt;br&gt;
二.设计好程序架构（这个其实不难，有个高人指导就行了），保持良好的扩展性，成本考虑可以找兼职的系统架构设计师做好系统架构，确定将来的发展瓶颈。 
&lt;br&gt;
三.考虑好文件存贮的问题。文件存贮的技术含量看起来很低，其实是很高的，可以考虑反向代理的方案。文件存贮出问题了，站点基本上就完蛋了，不仅仅是RAID的问题和存贮服务器的问题，不过道理倒是一点就破的 
&lt;br&gt;
四.中国国情考虑，这个最致命，需要考虑电信和网通的问题，CDN并不能解决所有问题。互动性的东西并CDN并不是很有效。最关键的是，现有的双线机房遇到DDOS攻击基本上都会当掉，原因很简单，双线机房都是私人机房，本身就不会有太高的带宽，随便攻击一下就可以D掉（顺带提一个笑话，我知道一个双线机房的老总总共1G的带宽却买了4G的金盾墙，很简单800M的攻击就可以搞定）。 
&lt;br&gt;
五.网络延迟的问题，这是分布式系统必须要考虑的，程序要能容忍0到100秒的数据延迟的功能，也就是同步的问题。不要小看这几十秒，问题很大的，如果你的站点有交互式功能，比如即时聊天，你可以想象一下是个什么结果。对于即时聊天的东西，可以用反向代理来解决（成本较高）。但是对于留言和评论的影响不大，但是如果系统为了健壮做了缓存和静态化的时候，这个东西可能就是灾难性的了。 
&lt;br&gt;
六.分散你的程序，如果你没有太多的资金构筑动辄百万的服务器，建议把功能分散开来，比如相册一台服务器，留言一台服务器 
&lt;br&gt;
七.看好你的程序员，如果没有很好的激励措施的话你的程序员很容易写出敷衍性的代码，而这个可能就是将来的大患，程序架构定下来后要修改可能就要费牛劲了。最好你的CTO能对你100%的衷心，100%的负责。 
&lt;br&gt;
八.文件同步的问题，这个问题可能你觉得没有必要，如果你看一下网通和电信的TTL就明白了，同步要支持续传，并且不能是持续的，否则你的成本会高出N倍，不要期望能通过你的软件实现，交给你的程序员吧，把上面的话告诉他他就知道怎么做了。 
&lt;br&gt;
九.最狠的一个问题了，也是吃亏最大的问题，不管您跟网警的关系多好，看好你的用户，审核好你的东西，一被停机可能就致命，本人就吃过N次亏。 
&lt;br&gt;
十.最后，祝各位站长一番风顺，大展宏图。 
&lt;p&gt;
朋友发的，不知道哪里看到的
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.ilovedoudou.com/aggbug.ashx?id=1e9aa733-1f91-4b39-87be-026646110be5" /&gt;</description>
      <comments>http://blog.ilovedoudou.com/CommentView,guid,1e9aa733-1f91-4b39-87be-026646110be5.aspx</comments>
      <category>Web</category>
    </item>
    <item>
      <trackback:ping>http://blog.ilovedoudou.com/Trackback.aspx?guid=bb47a0c4-75ac-48d9-a808-5a8de2fb70b8</trackback:ping>
      <pingback:server>http://blog.ilovedoudou.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.ilovedoudou.com/PermaLink,guid,bb47a0c4-75ac-48d9-a808-5a8de2fb70b8.aspx</pingback:target>
      <dc:creator>Kevin Mocha</dc:creator>
      <wfw:comment>http://blog.ilovedoudou.com/CommentView,guid,bb47a0c4-75ac-48d9-a808-5a8de2fb70b8.aspx</wfw:comment>
      <wfw:commentRss>http://blog.ilovedoudou.com/SyndicationService.asmx/GetEntryCommentsRss?guid=bb47a0c4-75ac-48d9-a808-5a8de2fb70b8</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a title="http://msdn2.microsoft.com/en-us/asp.net/Aa336613.aspx" href="http://msdn2.microsoft.com/en-us/asp.net/Aa336613.aspx">http://msdn2.microsoft.com/en-us/asp.net/Aa336613.aspx</a>
        </p>
        <img width="0" height="0" src="http://blog.ilovedoudou.com/aggbug.ashx?id=bb47a0c4-75ac-48d9-a808-5a8de2fb70b8" />
      </body>
      <title>ASP.NET Design Templates</title>
      <guid isPermaLink="false">http://blog.ilovedoudou.com/PermaLink,guid,bb47a0c4-75ac-48d9-a808-5a8de2fb70b8.aspx</guid>
      <link>http://blog.ilovedoudou.com/PermaLink,guid,bb47a0c4-75ac-48d9-a808-5a8de2fb70b8.aspx</link>
      <pubDate>Mon, 22 Oct 2007 03:57:37 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a title="http://msdn2.microsoft.com/en-us/asp.net/Aa336613.aspx" href="http://msdn2.microsoft.com/en-us/asp.net/Aa336613.aspx"&gt;http://msdn2.microsoft.com/en-us/asp.net/Aa336613.aspx&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.ilovedoudou.com/aggbug.ashx?id=bb47a0c4-75ac-48d9-a808-5a8de2fb70b8" /&gt;</description>
      <comments>http://blog.ilovedoudou.com/CommentView,guid,bb47a0c4-75ac-48d9-a808-5a8de2fb70b8.aspx</comments>
      <category>DotNet / ASP;Web</category>
    </item>
    <item>
      <trackback:ping>http://blog.ilovedoudou.com/Trackback.aspx?guid=bf1be2da-4b52-421f-9094-648396f6462d</trackback:ping>
      <pingback:server>http://blog.ilovedoudou.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.ilovedoudou.com/PermaLink,guid,bf1be2da-4b52-421f-9094-648396f6462d.aspx</pingback:target>
      <dc:creator>Kevin Mocha</dc:creator>
      <wfw:comment>http://blog.ilovedoudou.com/CommentView,guid,bf1be2da-4b52-421f-9094-648396f6462d.aspx</wfw:comment>
      <wfw:commentRss>http://blog.ilovedoudou.com/SyndicationService.asmx/GetEntryCommentsRss?guid=bf1be2da-4b52-421f-9094-648396f6462d</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a title="http://aspnet.4guysfromrolla.com/articles/080206-1.aspx" href="http://aspnet.4guysfromrolla.com/articles/080206-1.aspx">http://aspnet.4guysfromrolla.com/articles/080206-1.aspx</a>
        </p>
        <p>
 
</p>
        <p>
Sending web page by email:
</p>
        <p>
          <a title="http://www.devhood.com/tutorials/tutorial_details.aspx?tutorial_id=758" href="http://www.devhood.com/tutorials/tutorial_details.aspx?tutorial_id=758">http://www.devhood.com/tutorials/tutorial_details.aspx?tutorial_id=758</a>
        </p>
        <p>
          <br />
        </p>
        <p>
          <a title="http://www.devhood.com/tutorials/tutorial_details.aspx?tutorial_id=758" href="http://www.devhood.com/tutorials/tutorial_details.aspx?tutorial_id=758">http://www.ifxplus.com/post/Send-Mail-through-SMTP-with-SSL-Authentication-like-GMail.aspx</a>
        </p>
        <p>
          <a title="http://www.devhood.com/tutorials/tutorial_details.aspx?tutorial_id=758" href="http://www.devhood.com/tutorials/tutorial_details.aspx?tutorial_id=758">
            <br />
          </a>
        </p>
        <img width="0" height="0" src="http://blog.ilovedoudou.com/aggbug.ashx?id=bf1be2da-4b52-421f-9094-648396f6462d" />
      </body>
      <title>Sending HTML-Formatted Email by ASP.NET 2.0</title>
      <guid isPermaLink="false">http://blog.ilovedoudou.com/PermaLink,guid,bf1be2da-4b52-421f-9094-648396f6462d.aspx</guid>
      <link>http://blog.ilovedoudou.com/PermaLink,guid,bf1be2da-4b52-421f-9094-648396f6462d.aspx</link>
      <pubDate>Fri, 19 Oct 2007 21:11:11 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a title="http://aspnet.4guysfromrolla.com/articles/080206-1.aspx" href="http://aspnet.4guysfromrolla.com/articles/080206-1.aspx"&gt;http://aspnet.4guysfromrolla.com/articles/080206-1.aspx&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
Sending web page by email:
&lt;/p&gt;
&lt;p&gt;
&lt;a title="http://www.devhood.com/tutorials/tutorial_details.aspx?tutorial_id=758" href="http://www.devhood.com/tutorials/tutorial_details.aspx?tutorial_id=758"&gt;http://www.devhood.com/tutorials/tutorial_details.aspx?tutorial_id=758&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a title="http://www.devhood.com/tutorials/tutorial_details.aspx?tutorial_id=758" href="http://www.devhood.com/tutorials/tutorial_details.aspx?tutorial_id=758"&gt;http://www.ifxplus.com/post/Send-Mail-through-SMTP-with-SSL-Authentication-like-GMail.aspx&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a title="http://www.devhood.com/tutorials/tutorial_details.aspx?tutorial_id=758" href="http://www.devhood.com/tutorials/tutorial_details.aspx?tutorial_id=758"&gt;
&lt;br&gt;
&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.ilovedoudou.com/aggbug.ashx?id=bf1be2da-4b52-421f-9094-648396f6462d" /&gt;</description>
      <comments>http://blog.ilovedoudou.com/CommentView,guid,bf1be2da-4b52-421f-9094-648396f6462d.aspx</comments>
      <category>DotNet / ASP;Projects / YardSaleMap;Web</category>
    </item>
    <item>
      <trackback:ping>http://blog.ilovedoudou.com/Trackback.aspx?guid=6eb4c08f-a840-4907-b9aa-a879d57b694c</trackback:ping>
      <pingback:server>http://blog.ilovedoudou.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.ilovedoudou.com/PermaLink,guid,6eb4c08f-a840-4907-b9aa-a879d57b694c.aspx</pingback:target>
      <dc:creator>Kevin Mocha</dc:creator>
      <wfw:comment>http://blog.ilovedoudou.com/CommentView,guid,6eb4c08f-a840-4907-b9aa-a879d57b694c.aspx</wfw:comment>
      <wfw:commentRss>http://blog.ilovedoudou.com/SyndicationService.asmx/GetEntryCommentsRss?guid=6eb4c08f-a840-4907-b9aa-a879d57b694c</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
  
</p>
        <p>
          <a title="http://www.doshdosh.com/learn-from-adsense-millionaire-markus-frind/" href="http://www.doshdosh.com/learn-from-adsense-millionaire-markus-frind/">http://www.doshdosh.com/learn-from-adsense-millionaire-markus-frind/</a>
        </p>
        <p>
The quoted text is extracted from some of Markus’s blog posts as well as interviews
over the past few years. All of the specific references are left at the bottom of
the post and do visit them to read more, if you’re interested. 
</p>
        <ol>
          <li>
            <strong>Enter the Market at the Right Time. </strong>“As for the growth, a think a
lot of that was accidental or first-mover advantage. Here in Canada LavaLife was the
only real dating site, and they had a monopoly. I had a couple of my friends sign
up from the major cities and after that the site just started to grow and spread.” 
</li>
          <li>
            <strong>Free is a Powerful Business Model.</strong> “I always liked free sites and
couldn’t see why companies had to change insane amounts of money for something that
was trivial to make.” 
<p>
“The community was really built by word of mouth. There was a need for a free site
and because no one else was providing it, it just grew like a weed. A lot of people
just don’t want to pay for dating sites.” 
</p></li>
          <li>
            <strong>You Don’t Need a Team. </strong>“It’s just me right now, my girlfriend helps
with some of the customer service stuff when I don’t want to do it. I am planning
on expanding into other markets but I don’t think I need to hire any employees any
time soon. Nearly all the work can be automated away except for user stupidity that
leads to crazy questions.” 
</li>
          <li>
            <strong>Offline Marketing is Not Essential.</strong> “Offline promo works well when
marketing to huge existing customer base. It does not work well when trying to grow
big…Like nearly every other site I sort of ignore offline marketing, as it is far
too expensive when you don’t have huge numbers of people in your target market already
using your service.” 
</li>
          <li>
            <strong>Success Doesn’t Just Depend on One Thing. </strong>“I like simplicity, and
I am not a graphic designer at all. Success doesn’t come down to just one thing. Its
not like Microsoft can clone Google’s layout and be the largest search engine. Success
is a combination of things and having the right idea at the right time.” 
</li>
          <li>
            <strong>Uptime is Just as Important as Innovation. </strong>“I redesign my site every
couple of weeks so it doesn’t get crushed by the sheer number of users online. As
for front-end design I could care less, lots of users are using my site and more are
coming every day, my number one focus is making sure the site stays up for another
day.” 
</li>
          <li>
            <strong>Create Unique Sites that Stand Out.</strong> “Google pays out $500 million
a quarter to AdSense users. That money is going somewhere, and if you look at the
top 1000 sites not a hell of a lot of them have AdSense. 
<p>
Statistically speaking those sites that have low numbers of users and high EPC [Earnings
Per Click] will make the most money. Build sites that no one else has done before,
stuff only goes viral the first 1 or 2 times after that you have to buy your way into
a market.” 
</p></li>
          <li>
            <strong>You Need to Have a Rigorous Work Ethic.</strong> “When I came home from work
I sat down and I forced myself to code for a hour or 2. The enemy was thinking, whenever
I paused or started to think I would force myself to type something, its amazing how
much you can get done when you just type. 
<p>
For that business its just a matter of repetition and fighting boredom. At the end
of the day you just need to sit down and DO it. Most people don’t.” 
</p></li>
          <li>
            <strong>Site Value and Functions Trump Design. </strong>“Function over form to build
an emotional connection with the user. Blend ads into content, No flashing crap, make
the site useful. Basically all those things that everyone knows you are supposed to
do, but very few people actually do. 
<p>
There is no magic bullet, but you should always test new designs or new text etc to
get the result that you want. You will never have the worst design and never the best,
but through testing you can always improve.” 
</p></li>
          <li>
            <strong>Think of Monetization Potential Before Starting a Site. </strong>“Build something
useful, simple in ways that people will use. Explore things like Ad Sense, affiliate
programs, and just explore ways of making money. Most 2.0 companies will never make
a dime and they’re not built to make a dime. 
<p>
So I would start looking at how to make money before you even design or think about
starting a business.” 
</p></li>
          <li>
            <strong>Don’t be Discouraged With Low Income.</strong> “I had a single affiliate program
but it didn’t even make $40/month. I went and added Adsense pretty quick, I made a
whole $5.63 cents my first month, but that was more then enough for me to realize
that I wouldn’t go broke running the site and I could make a business out of this
with enough traffic.” 
</li>
          <li>
            <strong>Learn What You Need to Know.</strong> “Basically I spent every waking minute
when I wasn’t at my day job reading, studying, and learning. I picked out “enemies”
and did everything I could to defeat them which meant being bigger then them. I refused
to accept defeat of any kind, and I constantly forced myself to test new things.” 
</li>
          <li>
            <strong>When You Have Traffic, Look Beyond Adsense</strong>. “The main goal is to
start replacing adsense/dating ads and hire sales people. I spent the last few weeks
working long days optimizing my ad revenue and as a result adding over a million a
year net per week of work. 
<p>
At the end of the day its not possible for me optimize revenues myself or to outsource
sales as no one vender could sell more than 3% of my inventory. I am at a size now
were there are no off the shelf solutions and everything has to be built from the
ground up.”
</p></li>
          <li>
            <strong>Know the Limits of Your Business Model</strong>. “If I wanted to generate
$100 million in revenues per year it would be pretty easy, all I need to do is convert
to a paid site. To generate 100 million a year as a free site is virtually impossible
as the market isn’t big enough. 
<p>
I’m already the largest player in the UK, Canada, and US. Growing the company another
10 to 20 fold just isn’t realistic.”
</p></li>
          <li>
            <strong>Always Have a Goal to Work Towards</strong>. “If you are working in a cubicle,
your goal may be to experience the world outside of your cage, or stay at a 5 star
whenever you want, or to go on vacation whenever you want. 
<p>
For me i’d set my goal to owning the whole resort and the yacht out front and making
100 million a year instead of just millions. 
</p><p>
Just because you are already successful doesn’t mean you don’t need a goal to work
towards. Don’t assume that anyone successful thinks differently then you.”
</p></li>
          <li>
            <strong>Success Doesn’t Happen, It’s Created</strong>. “Now I know most of the people
reading this are aspiring to create a business of some kind. Many will just day dream
all day but never actually do anything. 
<p>
I was like that a few years ago, then I finally sat down and did something, and kept
forcing myself to do it till it became a pattern and it turned out hugely successful.”
</p></li>
          <li>
            <strong>Weigh Your Costs to Estimate Profitability</strong>. “In my opinion if the
cost of your operations are 2-3 cents a unique visitor chances are plain advertising
will bring you to profitability. If your costs are over 10 cents a unique visitor
then you will need to sell a product or service. 
<p>
This of course assumes a high traffic site with at least 100k uniques per day. In
about 2 years from now we will probably see a 30-50% decrease in operational costs
as hardware and software costs continue to fall.” 
</p></li>
        </ol>
        <img width="0" height="0" src="http://blog.ilovedoudou.com/aggbug.ashx?id=6eb4c08f-a840-4907-b9aa-a879d57b694c" />
      </body>
      <title>17 Tips on Building a Lucrative Online Business or Website</title>
      <guid isPermaLink="false">http://blog.ilovedoudou.com/PermaLink,guid,6eb4c08f-a840-4907-b9aa-a879d57b694c.aspx</guid>
      <link>http://blog.ilovedoudou.com/PermaLink,guid,6eb4c08f-a840-4907-b9aa-a879d57b694c.aspx</link>
      <pubDate>Tue, 18 Sep 2007 20:55:22 GMT</pubDate>
      <description>&lt;p&gt;
&amp;nbsp; 
&lt;p&gt;
&lt;a title="http://www.doshdosh.com/learn-from-adsense-millionaire-markus-frind/" href="http://www.doshdosh.com/learn-from-adsense-millionaire-markus-frind/"&gt;http://www.doshdosh.com/learn-from-adsense-millionaire-markus-frind/&lt;/a&gt; 
&lt;p&gt;
The quoted text is extracted from some of Markus’s blog posts as well as interviews
over the past few years. All of the specific references are left at the bottom of
the post and do visit them to read more, if you’re interested. 
&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Enter the Market at the Right Time. &lt;/strong&gt;“As for the growth, a think a
lot of that was accidental or first-mover advantage. Here in Canada LavaLife was the
only real dating site, and they had a monopoly. I had a couple of my friends sign
up from the major cities and after that the site just started to grow and spread.” 
&lt;li&gt;
&lt;strong&gt;Free is a Powerful Business Model.&lt;/strong&gt; “I always liked free sites and
couldn’t see why companies had to change insane amounts of money for something that
was trivial to make.” 
&lt;p&gt;
“The community was really built by word of mouth. There was a need for a free site
and because no one else was providing it, it just grew like a weed. A lot of people
just don’t want to pay for dating sites.” 
&lt;/p&gt;
&lt;li&gt;
&lt;strong&gt;You Don’t Need a Team. &lt;/strong&gt;“It’s just me right now, my girlfriend helps
with some of the customer service stuff when I don’t want to do it. I am planning
on expanding into other markets but I don’t think I need to hire any employees any
time soon. Nearly all the work can be automated away except for user stupidity that
leads to crazy questions.” 
&lt;li&gt;
&lt;strong&gt;Offline Marketing is Not Essential.&lt;/strong&gt; “Offline promo works well when
marketing to huge existing customer base. It does not work well when trying to grow
big…Like nearly every other site I sort of ignore offline marketing, as it is far
too expensive when you don’t have huge numbers of people in your target market already
using your service.” 
&lt;li&gt;
&lt;strong&gt;Success Doesn’t Just Depend on One Thing. &lt;/strong&gt;“I like simplicity, and
I am not a graphic designer at all. Success doesn’t come down to just one thing. Its
not like Microsoft can clone Google’s layout and be the largest search engine. Success
is a combination of things and having the right idea at the right time.” 
&lt;li&gt;
&lt;strong&gt;Uptime is Just as Important as Innovation. &lt;/strong&gt;“I redesign my site every
couple of weeks so it doesn’t get crushed by the sheer number of users online. As
for front-end design I could care less, lots of users are using my site and more are
coming every day, my number one focus is making sure the site stays up for another
day.” 
&lt;li&gt;
&lt;strong&gt;Create Unique Sites that Stand Out.&lt;/strong&gt; “Google pays out $500 million
a quarter to AdSense users. That money is going somewhere, and if you look at the
top 1000 sites not a hell of a lot of them have AdSense. 
&lt;p&gt;
Statistically speaking those sites that have low numbers of users and high EPC [Earnings
Per Click] will make the most money. Build sites that no one else has done before,
stuff only goes viral the first 1 or 2 times after that you have to buy your way into
a market.” 
&lt;/p&gt;
&lt;li&gt;
&lt;strong&gt;You Need to Have a Rigorous Work Ethic.&lt;/strong&gt; “When I came home from work
I sat down and I forced myself to code for a hour or 2. The enemy was thinking, whenever
I paused or started to think I would force myself to type something, its amazing how
much you can get done when you just type. 
&lt;p&gt;
For that business its just a matter of repetition and fighting boredom. At the end
of the day you just need to sit down and DO it. Most people don’t.” 
&lt;/p&gt;
&lt;li&gt;
&lt;strong&gt;Site Value and Functions Trump Design. &lt;/strong&gt;“Function over form to build
an emotional connection with the user. Blend ads into content, No flashing crap, make
the site useful. Basically all those things that everyone knows you are supposed to
do, but very few people actually do. 
&lt;p&gt;
There is no magic bullet, but you should always test new designs or new text etc to
get the result that you want. You will never have the worst design and never the best,
but through testing you can always improve.” 
&lt;/p&gt;
&lt;li&gt;
&lt;strong&gt;Think of Monetization Potential Before Starting a Site. &lt;/strong&gt;“Build something
useful, simple in ways that people will use. Explore things like Ad Sense, affiliate
programs, and just explore ways of making money. Most 2.0 companies will never make
a dime and they’re not built to make a dime. 
&lt;p&gt;
So I would start looking at how to make money before you even design or think about
starting a business.” 
&lt;/p&gt;
&lt;li&gt;
&lt;strong&gt;Don’t be Discouraged With Low Income.&lt;/strong&gt; “I had a single affiliate program
but it didn’t even make $40/month. I went and added Adsense pretty quick, I made a
whole $5.63 cents my first month, but that was more then enough for me to realize
that I wouldn’t go broke running the site and I could make a business out of this
with enough traffic.” 
&lt;li&gt;
&lt;strong&gt;Learn What You Need to Know.&lt;/strong&gt; “Basically I spent every waking minute
when I wasn’t at my day job reading, studying, and learning. I picked out “enemies”
and did everything I could to defeat them which meant being bigger then them. I refused
to accept defeat of any kind, and I constantly forced myself to test new things.” 
&lt;li&gt;
&lt;strong&gt;When You Have Traffic, Look Beyond Adsense&lt;/strong&gt;. “The main goal is to
start replacing adsense/dating ads and hire sales people. I spent the last few weeks
working long days optimizing my ad revenue and as a result adding over a million a
year net per week of work. 
&lt;p&gt;
At the end of the day its not possible for me optimize revenues myself or to outsource
sales as no one vender could sell more than 3% of my inventory. I am at a size now
were there are no off the shelf solutions and everything has to be built from the
ground up.”
&lt;/p&gt;
&lt;li&gt;
&lt;strong&gt;Know the Limits of Your Business Model&lt;/strong&gt;. “If I wanted to generate
$100 million in revenues per year it would be pretty easy, all I need to do is convert
to a paid site. To generate 100 million a year as a free site is virtually impossible
as the market isn’t big enough. 
&lt;p&gt;
I’m already the largest player in the UK, Canada, and US. Growing the company another
10 to 20 fold just isn’t realistic.”
&lt;/p&gt;
&lt;li&gt;
&lt;strong&gt;Always Have a Goal to Work Towards&lt;/strong&gt;. “If you are working in a cubicle,
your goal may be to experience the world outside of your cage, or stay at a 5 star
whenever you want, or to go on vacation whenever you want. 
&lt;p&gt;
For me i’d set my goal to owning the whole resort and the yacht out front and making
100 million a year instead of just millions. 
&lt;p&gt;
Just because you are already successful doesn’t mean you don’t need a goal to work
towards. Don’t assume that anyone successful thinks differently then you.”
&lt;/p&gt;
&lt;li&gt;
&lt;strong&gt;Success Doesn’t Happen, It’s Created&lt;/strong&gt;. “Now I know most of the people
reading this are aspiring to create a business of some kind. Many will just day dream
all day but never actually do anything. 
&lt;p&gt;
I was like that a few years ago, then I finally sat down and did something, and kept
forcing myself to do it till it became a pattern and it turned out hugely successful.”
&lt;/p&gt;
&lt;li&gt;
&lt;strong&gt;Weigh Your Costs to Estimate Profitability&lt;/strong&gt;. “In my opinion if the
cost of your operations are 2-3 cents a unique visitor chances are plain advertising
will bring you to profitability. If your costs are over 10 cents a unique visitor
then you will need to sell a product or service. 
&lt;p&gt;
This of course assumes a high traffic site with at least 100k uniques per day. In
about 2 years from now we will probably see a 30-50% decrease in operational costs
as hardware and software costs continue to fall.” 
&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;img width="0" height="0" src="http://blog.ilovedoudou.com/aggbug.ashx?id=6eb4c08f-a840-4907-b9aa-a879d57b694c" /&gt;</description>
      <comments>http://blog.ilovedoudou.com/CommentView,guid,6eb4c08f-a840-4907-b9aa-a879d57b694c.aspx</comments>
      <category>Projects;Web</category>
    </item>
    <item>
      <trackback:ping>http://blog.ilovedoudou.com/Trackback.aspx?guid=239f9575-40fc-4f40-b31a-d44ee9baccef</trackback:ping>
      <pingback:server>http://blog.ilovedoudou.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.ilovedoudou.com/PermaLink,guid,239f9575-40fc-4f40-b31a-d44ee9baccef.aspx</pingback:target>
      <dc:creator>Kevin Mocha</dc:creator>
      <wfw:comment>http://blog.ilovedoudou.com/CommentView,guid,239f9575-40fc-4f40-b31a-d44ee9baccef.aspx</wfw:comment>
      <wfw:commentRss>http://blog.ilovedoudou.com/SyndicationService.asmx/GetEntryCommentsRss?guid=239f9575-40fc-4f40-b31a-d44ee9baccef</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a title="http://www.opensourcetemplates.org/" href="http://www.opensourcetemplates.org/">http://www.opensourcetemplates.org/</a>
        </p>
        <img width="0" height="0" src="http://blog.ilovedoudou.com/aggbug.ashx?id=239f9575-40fc-4f40-b31a-d44ee9baccef" />
      </body>
      <title>HTML website templates</title>
      <guid isPermaLink="false">http://blog.ilovedoudou.com/PermaLink,guid,239f9575-40fc-4f40-b31a-d44ee9baccef.aspx</guid>
      <link>http://blog.ilovedoudou.com/PermaLink,guid,239f9575-40fc-4f40-b31a-d44ee9baccef.aspx</link>
      <pubDate>Mon, 09 Jul 2007 15:18:33 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a title="http://www.opensourcetemplates.org/" href="http://www.opensourcetemplates.org/"&gt;http://www.opensourcetemplates.org/&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.ilovedoudou.com/aggbug.ashx?id=239f9575-40fc-4f40-b31a-d44ee9baccef" /&gt;</description>
      <comments>http://blog.ilovedoudou.com/CommentView,guid,239f9575-40fc-4f40-b31a-d44ee9baccef.aspx</comments>
      <category>Web</category>
    </item>
    <item>
      <trackback:ping>http://blog.ilovedoudou.com/Trackback.aspx?guid=e381b2ac-a3cd-4027-84b9-acc6df9ecfa1</trackback:ping>
      <pingback:server>http://blog.ilovedoudou.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.ilovedoudou.com/PermaLink,guid,e381b2ac-a3cd-4027-84b9-acc6df9ecfa1.aspx</pingback:target>
      <dc:creator>Kevin Mocha</dc:creator>
      <wfw:comment>http://blog.ilovedoudou.com/CommentView,guid,e381b2ac-a3cd-4027-84b9-acc6df9ecfa1.aspx</wfw:comment>
      <wfw:commentRss>http://blog.ilovedoudou.com/SyndicationService.asmx/GetEntryCommentsRss?guid=e381b2ac-a3cd-4027-84b9-acc6df9ecfa1</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
        </p>
        <p>
          <a href="http://up-file.com/index.php">http://up-file.com/index.php</a> with a 1024mb
(1 gig limit)<br /><a href="http://www.spread-it.com/">http://www.spread-it.com/</a> 500mb<br /><a href="http://www.megaupload.com/">http://www.megaupload.com/</a> 250mb<br /><a href="http://turboupload.com/">http://turboupload.com/</a> 70mb<br /><a href="http://rapidshare.de/files/">http://rapidshare.de/files/</a></p>
        <p>
          <a href="http://depositfiles.com/en/">http://depositfiles.com/en/</a>
        </p>
        <img width="0" height="0" src="http://blog.ilovedoudou.com/aggbug.ashx?id=e381b2ac-a3cd-4027-84b9-acc6df9ecfa1" />
      </body>
      <title>filesharing service</title>
      <guid isPermaLink="false">http://blog.ilovedoudou.com/PermaLink,guid,e381b2ac-a3cd-4027-84b9-acc6df9ecfa1.aspx</guid>
      <link>http://blog.ilovedoudou.com/PermaLink,guid,e381b2ac-a3cd-4027-84b9-acc6df9ecfa1.aspx</link>
      <pubDate>Tue, 08 May 2007 13:32:56 GMT</pubDate>
      <description>&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://up-file.com/index.php"&gt;http://up-file.com/index.php&lt;/a&gt; with a 1024mb
(1 gig limit)&lt;br&gt;
&lt;a href="http://www.spread-it.com/"&gt;http://www.spread-it.com/&lt;/a&gt; 500mb&lt;br&gt;
&lt;a href="http://www.megaupload.com/"&gt;http://www.megaupload.com/&lt;/a&gt; 250mb&lt;br&gt;
&lt;a href="http://turboupload.com/"&gt;http://turboupload.com/&lt;/a&gt; 70mb&lt;br&gt;
&lt;a href="http://rapidshare.de/files/"&gt;http://rapidshare.de/files/&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://depositfiles.com/en/"&gt;http://depositfiles.com/en/&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.ilovedoudou.com/aggbug.ashx?id=e381b2ac-a3cd-4027-84b9-acc6df9ecfa1" /&gt;</description>
      <comments>http://blog.ilovedoudou.com/CommentView,guid,e381b2ac-a3cd-4027-84b9-acc6df9ecfa1.aspx</comments>
      <category>Web</category>
    </item>
    <item>
      <trackback:ping>http://blog.ilovedoudou.com/Trackback.aspx?guid=7a564bc9-454b-421c-bf55-0a5eca7d84b3</trackback:ping>
      <pingback:server>http://blog.ilovedoudou.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.ilovedoudou.com/PermaLink,guid,7a564bc9-454b-421c-bf55-0a5eca7d84b3.aspx</pingback:target>
      <dc:creator>Kevin Mocha</dc:creator>
      <wfw:comment>http://blog.ilovedoudou.com/CommentView,guid,7a564bc9-454b-421c-bf55-0a5eca7d84b3.aspx</wfw:comment>
      <wfw:commentRss>http://blog.ilovedoudou.com/SyndicationService.asmx/GetEntryCommentsRss?guid=7a564bc9-454b-421c-bf55-0a5eca7d84b3</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://websterflooble.com/program_id.html">http://websterflooble.com/program_id.html</a>
        </p>
        <img width="0" height="0" src="http://blog.ilovedoudou.com/aggbug.ashx?id=7a564bc9-454b-421c-bf55-0a5eca7d84b3" />
      </body>
      <title>Review for online AD programs</title>
      <guid isPermaLink="false">http://blog.ilovedoudou.com/PermaLink,guid,7a564bc9-454b-421c-bf55-0a5eca7d84b3.aspx</guid>
      <link>http://blog.ilovedoudou.com/PermaLink,guid,7a564bc9-454b-421c-bf55-0a5eca7d84b3.aspx</link>
      <pubDate>Thu, 26 Apr 2007 18:27:13 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://websterflooble.com/program_id.html"&gt;http://websterflooble.com/program_id.html&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.ilovedoudou.com/aggbug.ashx?id=7a564bc9-454b-421c-bf55-0a5eca7d84b3" /&gt;</description>
      <comments>http://blog.ilovedoudou.com/CommentView,guid,7a564bc9-454b-421c-bf55-0a5eca7d84b3.aspx</comments>
      <category>Web</category>
    </item>
    <item>
      <trackback:ping>http://blog.ilovedoudou.com/Trackback.aspx?guid=2c9a2e8a-2474-4321-9e1a-e80305a30b47</trackback:ping>
      <pingback:server>http://blog.ilovedoudou.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.ilovedoudou.com/PermaLink,guid,2c9a2e8a-2474-4321-9e1a-e80305a30b47.aspx</pingback:target>
      <dc:creator>Kevin Mocha</dc:creator>
      <wfw:comment>http://blog.ilovedoudou.com/CommentView,guid,2c9a2e8a-2474-4321-9e1a-e80305a30b47.aspx</wfw:comment>
      <wfw:commentRss>http://blog.ilovedoudou.com/SyndicationService.asmx/GetEntryCommentsRss?guid=2c9a2e8a-2474-4321-9e1a-e80305a30b47</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://www.dynamicdrive.com/">http://www.dynamicdrive.com/</a> (Dynamic
Javascript and DHTML)
</p>
        <p>
          <a href="http://css.maxdesign.com.au/">http://css.maxdesign.com.au/</a> (Great
Layout and List CSS Tutorial) 
</p>
        <img width="0" height="0" src="http://blog.ilovedoudou.com/aggbug.ashx?id=2c9a2e8a-2474-4321-9e1a-e80305a30b47" />
      </body>
      <title>Web Resources</title>
      <guid isPermaLink="false">http://blog.ilovedoudou.com/PermaLink,guid,2c9a2e8a-2474-4321-9e1a-e80305a30b47.aspx</guid>
      <link>http://blog.ilovedoudou.com/PermaLink,guid,2c9a2e8a-2474-4321-9e1a-e80305a30b47.aspx</link>
      <pubDate>Wed, 25 Apr 2007 21:24:59 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://www.dynamicdrive.com/"&gt;http://www.dynamicdrive.com/&lt;/a&gt;&amp;nbsp;(Dynamic
Javascript and DHTML)
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://css.maxdesign.com.au/"&gt;http://css.maxdesign.com.au/&lt;/a&gt;&amp;nbsp;(Great
Layout and List CSS Tutorial) 
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.ilovedoudou.com/aggbug.ashx?id=2c9a2e8a-2474-4321-9e1a-e80305a30b47" /&gt;</description>
      <comments>http://blog.ilovedoudou.com/CommentView,guid,2c9a2e8a-2474-4321-9e1a-e80305a30b47.aspx</comments>
      <category>Web</category>
    </item>
    <item>
      <trackback:ping>http://blog.ilovedoudou.com/Trackback.aspx?guid=3732cffe-6556-49d0-af97-b9414c0d166c</trackback:ping>
      <pingback:server>http://blog.ilovedoudou.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.ilovedoudou.com/PermaLink,guid,3732cffe-6556-49d0-af97-b9414c0d166c.aspx</pingback:target>
      <dc:creator>Kevin Mocha</dc:creator>
      <wfw:comment>http://blog.ilovedoudou.com/CommentView,guid,3732cffe-6556-49d0-af97-b9414c0d166c.aspx</wfw:comment>
      <wfw:commentRss>http://blog.ilovedoudou.com/SyndicationService.asmx/GetEntryCommentsRss?guid=3732cffe-6556-49d0-af97-b9414c0d166c</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://webhost4life.com/wss.asp">http://webhost4life.com/wss.asp</a> ($29.95/Month)
</p>
        <p>
          <a href="http://www.sharepointhosting.com/">http://www.sharepointhosting.com/</a> (Video
tutorials available)
</p>
        <img width="0" height="0" src="http://blog.ilovedoudou.com/aggbug.ashx?id=3732cffe-6556-49d0-af97-b9414c0d166c" />
      </body>
      <title>SharePoint 2007 web hosting</title>
      <guid isPermaLink="false">http://blog.ilovedoudou.com/PermaLink,guid,3732cffe-6556-49d0-af97-b9414c0d166c.aspx</guid>
      <link>http://blog.ilovedoudou.com/PermaLink,guid,3732cffe-6556-49d0-af97-b9414c0d166c.aspx</link>
      <pubDate>Mon, 16 Apr 2007 19:44:10 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://webhost4life.com/wss.asp"&gt;http://webhost4life.com/wss.asp&lt;/a&gt; ($29.95/Month)
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.sharepointhosting.com/"&gt;http://www.sharepointhosting.com/&lt;/a&gt;&amp;nbsp;(Video
tutorials available)
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.ilovedoudou.com/aggbug.ashx?id=3732cffe-6556-49d0-af97-b9414c0d166c" /&gt;</description>
      <comments>http://blog.ilovedoudou.com/CommentView,guid,3732cffe-6556-49d0-af97-b9414c0d166c.aspx</comments>
      <category>Web</category>
    </item>
    <item>
      <trackback:ping>http://blog.ilovedoudou.com/Trackback.aspx?guid=fd10fac5-0d6c-4788-8f80-63abf8470cb6</trackback:ping>
      <pingback:server>http://blog.ilovedoudou.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.ilovedoudou.com/PermaLink,guid,fd10fac5-0d6c-4788-8f80-63abf8470cb6.aspx</pingback:target>
      <dc:creator>Kevin Mocha</dc:creator>
      <wfw:comment>http://blog.ilovedoudou.com/CommentView,guid,fd10fac5-0d6c-4788-8f80-63abf8470cb6.aspx</wfw:comment>
      <wfw:commentRss>http://blog.ilovedoudou.com/SyndicationService.asmx/GetEntryCommentsRss?guid=fd10fac5-0d6c-4788-8f80-63abf8470cb6</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
        </p>
        <p>
Copy and paste the text below<br />
&lt;marquee scrollamount="1" scrolldelay="10" direction="up" width="200" height="50"
style="font-family: Verdana; font-size: 8pt"&gt;<br />
ENTER TEXT MESSAGE HERE <br />
&lt;/marquee&gt; 
</p>
        <p>
  
</p>
        <p>
          <a href="http://www.comriesoftware.net/codewidgets/product.aspx?key=80">http://www.comriesoftware.net/codewidgets/product....</a>
        </p>
        <img width="0" height="0" src="http://blog.ilovedoudou.com/aggbug.ashx?id=fd10fac5-0d6c-4788-8f80-63abf8470cb6" />
      </body>
      <title>Scrolling text tags.</title>
      <guid isPermaLink="false">http://blog.ilovedoudou.com/PermaLink,guid,fd10fac5-0d6c-4788-8f80-63abf8470cb6.aspx</guid>
      <link>http://blog.ilovedoudou.com/PermaLink,guid,fd10fac5-0d6c-4788-8f80-63abf8470cb6.aspx</link>
      <pubDate>Thu, 12 Apr 2007 17:43:35 GMT</pubDate>
      <description>&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
Copy and paste the text below&lt;br&gt;
&amp;lt;marquee scrollamount="1" scrolldelay="10" direction="up" width="200" height="50"
style="font-family: Verdana; font-size: 8pt"&amp;gt;&lt;br&gt;
ENTER TEXT MESSAGE HERE&amp;nbsp;&lt;br&gt;
&amp;lt;/marquee&amp;gt; 
&lt;p&gt;
&amp;nbsp; 
&lt;p&gt;
&lt;a href="http://www.comriesoftware.net/codewidgets/product.aspx?key=80"&gt;http://www.comriesoftware.net/codewidgets/product....&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.ilovedoudou.com/aggbug.ashx?id=fd10fac5-0d6c-4788-8f80-63abf8470cb6" /&gt;</description>
      <comments>http://blog.ilovedoudou.com/CommentView,guid,fd10fac5-0d6c-4788-8f80-63abf8470cb6.aspx</comments>
      <category>Web</category>
    </item>
    <item>
      <trackback:ping>http://blog.ilovedoudou.com/Trackback.aspx?guid=d1402fc8-8535-40c1-afa9-584fa01f4005</trackback:ping>
      <pingback:server>http://blog.ilovedoudou.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.ilovedoudou.com/PermaLink,guid,d1402fc8-8535-40c1-afa9-584fa01f4005.aspx</pingback:target>
      <dc:creator>Kevin Mocha</dc:creator>
      <wfw:comment>http://blog.ilovedoudou.com/CommentView,guid,d1402fc8-8535-40c1-afa9-584fa01f4005.aspx</wfw:comment>
      <wfw:commentRss>http://blog.ilovedoudou.com/SyndicationService.asmx/GetEntryCommentsRss?guid=d1402fc8-8535-40c1-afa9-584fa01f4005</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://www.alexa.com/">http://www.alexa.com/</a>
        </p>
        <img width="0" height="0" src="http://blog.ilovedoudou.com/aggbug.ashx?id=d1402fc8-8535-40c1-afa9-584fa01f4005" />
      </body>
      <title>Web Traffic statistics</title>
      <guid isPermaLink="false">http://blog.ilovedoudou.com/PermaLink,guid,d1402fc8-8535-40c1-afa9-584fa01f4005.aspx</guid>
      <link>http://blog.ilovedoudou.com/PermaLink,guid,d1402fc8-8535-40c1-afa9-584fa01f4005.aspx</link>
      <pubDate>Thu, 29 Mar 2007 22:03:19 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://www.alexa.com/"&gt;http://www.alexa.com/&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.ilovedoudou.com/aggbug.ashx?id=d1402fc8-8535-40c1-afa9-584fa01f4005" /&gt;</description>
      <comments>http://blog.ilovedoudou.com/CommentView,guid,d1402fc8-8535-40c1-afa9-584fa01f4005.aspx</comments>
      <category>Web</category>
    </item>
    <item>
      <trackback:ping>http://blog.ilovedoudou.com/Trackback.aspx?guid=40485281-5d1e-44cb-bffc-77a1d7342b2d</trackback:ping>
      <pingback:server>http://blog.ilovedoudou.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.ilovedoudou.com/PermaLink,guid,40485281-5d1e-44cb-bffc-77a1d7342b2d.aspx</pingback:target>
      <dc:creator>Kevin Mocha</dc:creator>
      <wfw:comment>http://blog.ilovedoudou.com/CommentView,guid,40485281-5d1e-44cb-bffc-77a1d7342b2d.aspx</wfw:comment>
      <wfw:commentRss>http://blog.ilovedoudou.com/SyndicationService.asmx/GetEntryCommentsRss?guid=40485281-5d1e-44cb-bffc-77a1d7342b2d</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://www.problogger.net/archives/2007/02/08/how-i-make-money-from-blogs-my-top-earners/">http://www.problogger.net/archives/2007/02/08/how-i-make-money-from-blogs-my-top-earners/</a>
        </p>
        <img width="0" height="0" src="http://blog.ilovedoudou.com/aggbug.ashx?id=40485281-5d1e-44cb-bffc-77a1d7342b2d" />
      </body>
      <title>How to make money from your blog.</title>
      <guid isPermaLink="false">http://blog.ilovedoudou.com/PermaLink,guid,40485281-5d1e-44cb-bffc-77a1d7342b2d.aspx</guid>
      <link>http://blog.ilovedoudou.com/PermaLink,guid,40485281-5d1e-44cb-bffc-77a1d7342b2d.aspx</link>
      <pubDate>Thu, 08 Mar 2007 22:35:07 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://www.problogger.net/archives/2007/02/08/how-i-make-money-from-blogs-my-top-earners/"&gt;http://www.problogger.net/archives/2007/02/08/how-i-make-money-from-blogs-my-top-earners/&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.ilovedoudou.com/aggbug.ashx?id=40485281-5d1e-44cb-bffc-77a1d7342b2d" /&gt;</description>
      <comments>http://blog.ilovedoudou.com/CommentView,guid,40485281-5d1e-44cb-bffc-77a1d7342b2d.aspx</comments>
      <category>Web</category>
    </item>
  </channel>
</rss>