<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" 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:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>.NET</title>
        <link>http://cadred.net/blog/category/2.aspx</link>
        <description>.NET</description>
        <language>en-US</language>
        <copyright>Michael Cook</copyright>
        <managingEditor>cadred@cadred.net</managingEditor>
        <generator>Subtext Version 2.0.0.0</generator>
        <item>
            <title>Dynamic Server Controls &amp; INamingContainer</title>
            <link>http://cadred.net/blog/archive/2005/03/16/260.aspx</link>
            <description>It turns out that creating a custom server control that uses dynamic
controls (controls added at runtime) is a huge pain in the ass. Add to
that INamingContainer, which is virtually a necessity when making a
composite control (it lets you have more than one copy of the server
control on the page by guaranteeing that the child controls have unique
id's) completely screws around with control's life-cycle, and you have
one frustrated developer..&lt;br&gt;
&lt;br&gt;
It's taken me entirely too long to create my data-paging server
control, which simply creates the buttons you need to page through data
(First, Prev, 1, 2, 3, Next, Last - etc) and provides an event for when
the user clicks a button. It doesn't do the actual data-paging, just
the controls so it should have been a simple control to write. Nope, I
had to try just about every trick and lame technique in the book to get
it to work the way I want. Along the way I tried such things as
serializing out the settings to a hidden field (essentially creating my
own custom viewstate), so that I could re-instantiate my controls
before the events are supposed to fire. Turns out that way doesn't work
so hot if you need to hide the control for whatever reason (hidden
panel, etc), since the hidden field won't get included in the page. I
also tried to tap into virtually every part of the control's
life-cycle, which ultimately useless, turned out to be good for learning
how things worked, inserting hidden fields, or creating and re-creating
controls at different points.&lt;br&gt;
&lt;br&gt;
Finally I have something that works, though it's not without it's share
of shortcuts. I ultimately borrowed some idea and code from Dennis
Bauer's DynamicControlsPlaceHolder, to re-create my dynamic controls
out of the viewstate on a postback. The downside to this technique is
that it doesn't re-wire the events properly, and even worse, you loose
command arguments (which is what I used to determine which page button
the user clicked on). So I had to work around that by storing some
extra info into the persistenceString (a string that is passed along
that tracks which controls to restore).&lt;br&gt;
&lt;br&gt;
So once the control is loaded, I override CreateChildControls to create
the final controls the user sees. I do this by calling
this.Controls.Clear() to wipe out the controls that were created by
from the viewstate (which could be different depending on which page
the user clicked on). It's not great, but it's much easier and probably
faster than comparing the new controls that will be generated to the
existing ones and adding or removing ones that don't match up. &lt;br&gt;
&lt;br&gt;
It would be nice if there was some way to detect which button was
clicked so I could only restore that control to capture the event, but
I don't know if that's possible. So it now works with only
instantiating the controls a maximum of twice
per page load, which is an improvement over earlier versions.&lt;br&gt;
&lt;br&gt;
All of the leaves my final workaround for INamingContainer. As
mentioned above using INamingContainer causes the control life-cycle
events to be called in a different order. This meant that my
CreateChildControls was being called after my event was firing, the
event which set the current page that the CreateChildControls relied
upon. That was a problem. I could have forced a call to re-create the
child controls after my event fired, but that would be adding a lot of
overhead to an already inefficient system by having to re-create the
controls 3 times instead of two.&lt;br&gt;
&lt;br&gt;
So I ended up manually setting all of the control id's so that they
used the parent control's ClientID. This was essentially what
INamingContainer did, sans the odd life-cycle changes. It wasn't as big
a deal as it could have been since I had to explicitly set the control
id's for the DynamicControlsPlaceHolder code to work anyway.&lt;br&gt;
&lt;br&gt;
It's not pretty, but it works. I can put as many pagingcontrols on a
page as I want (say at the top and bottom of a repeater), even hide
them and it all works.  I can't imagine having to do anything more
complex with dynamic controls in a server since this one was such a
pain. On the upside I learned many of the finer points of creating
server controls and the next one I write should go a little more
smoothly.&lt;br&gt;
&lt;img src="http://cadred.net/blog/aggbug/260.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Michael Cook</dc:creator>
            <guid>http://cadred.net/blog/archive/2005/03/16/260.aspx</guid>
            <pubDate>Thu, 17 Mar 2005 00:50:00 GMT</pubDate>
            <wfw:comment>http://cadred.net/blog/comments/260.aspx</wfw:comment>
            <comments>http://cadred.net/blog/archive/2005/03/16/260.aspx#feedback</comments>
            <slash:comments>21</slash:comments>
            <wfw:commentRss>http://cadred.net/blog/comments/commentRss/260.aspx</wfw:commentRss>
        </item>
        <item>
            <title>How to Integrate .Text and FreeTextBox 3.0</title>
            <link>http://cadred.net/blog/archive/2005/02/23/256.aspx</link>
            <description>&lt;a href="http://codebetter.com/blogs/brendan.tompkins/"&gt;Brendan Tompkins&lt;/a&gt; has written up some instructions on how to modify your .Text 0.95 to use &lt;a href="http://www.freetextbox.com/"&gt;FreeTextBox 3.0.&lt;/a&gt;&lt;br&gt;
I'll have to check it out and see how it differs from my implementation (which probably isn't the greatest).
&lt;img src="http://cadred.net/blog/aggbug/256.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Michael Cook</dc:creator>
            <guid>http://cadred.net/blog/archive/2005/02/23/256.aspx</guid>
            <pubDate>Wed, 23 Feb 2005 10:48:00 GMT</pubDate>
            <wfw:comment>http://cadred.net/blog/comments/256.aspx</wfw:comment>
            <comments>http://cadred.net/blog/archive/2005/02/23/256.aspx#feedback</comments>
            <slash:comments>23</slash:comments>
            <wfw:commentRss>http://cadred.net/blog/comments/commentRss/256.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Coding Guidelines</title>
            <link>http://cadred.net/blog/archive/2005/02/14/255.aspx</link>
            <description>&lt;p&gt;Brad Abrams has given us a taste of Microsoft by showing us their
&lt;a target="_top" href="http://blogs.msdn.com/brada/articles/361363.aspx"&gt;internal coding guidelines&lt;/a&gt;. There are some interesting things, and
overall it answers a lot of questions that new developers my face. For
the record here are my personal coding habits, which by default are my
companies coding standards.&lt;br&gt;

&lt;/p&gt;
&lt;div class="code"&gt;
&lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: blue;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;br&gt;
namespace&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt; Company.Product.Component {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;class&lt;/span&gt; Test {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;private&lt;/span&gt; &lt;span style="color: blue;"&gt;int&lt;/span&gt; _myInt;&lt;o:p&gt;&lt;/o:p&gt;&lt;br&gt;
&lt;span style=""&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;private&lt;/span&gt; &lt;span style="color: blue;"&gt;string&lt;/span&gt; _myString;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;int&lt;/span&gt; MyInt {&lt;o:p&gt;&lt;/o:p&gt;&lt;span style=""&gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;get&lt;/span&gt; { &lt;span style="color: blue;"&gt;return&lt;/span&gt; _myInt; }&lt;o:p&gt;&lt;/o:p&gt;&lt;span style=""&gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;set&lt;/span&gt; {
_myInt = &lt;span style="color: blue;"&gt;value&lt;/span&gt;; }&lt;o:p&gt;&lt;/o:p&gt;&lt;br&gt;
&lt;span style=""&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;span style=""&gt; &amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;string&lt;/span&gt; MyString {&lt;o:p&gt;&lt;/o:p&gt;&lt;br&gt;
&lt;span style=""&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;get&lt;/span&gt; { &lt;span style="color: blue;"&gt;return&lt;/span&gt; _myString; }&lt;o:p&gt;&lt;/o:p&gt;&lt;br&gt;
&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;set&lt;/span&gt; {
_myString = &lt;span style="color: blue;"&gt;value&lt;/span&gt;; }&lt;o:p&gt;&lt;/o:p&gt;&lt;br&gt;
&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;public&lt;/span&gt;
Test() {&lt;o:p&gt;&lt;/o:p&gt;&lt;br&gt;
&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; MethodA(&lt;span style="color: blue;"&gt;string&lt;/span&gt;
myArgument) {&lt;o:p&gt;&lt;/o:p&gt;&lt;br&gt;
&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;_myString = myArgument;&lt;o:p&gt;&lt;/o:p&gt;&lt;br&gt;
&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style=""&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: green;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;private&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; MethodB() {&lt;o:p&gt;&lt;/o:p&gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Do Something Here&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br&gt;

&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;br&gt;
}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;


&lt;p&gt;I consider this style a work in progress, and I'm always tweaking
things
as I find better or new ways to do things but overall it works pretty
well. The code uses 2 spaces for an indent and no tabs, unless it's
html/xml.
Private members use the '_' prefix because 'm_' is just too much and
only using casing to distinguish between variables is a bad practice
that will get you in trouble if you ever work in a case insensitive
language like VB.net. &lt;br&gt;
&lt;/p&gt;
&lt;p&gt;Optional braces are always required, all if statements, no matter how
simple must have braces and this includes switch statements as well
(which I guess is pretty rare).&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;There are, however, a few things that I haven't quite nailed down
yet, the worst offender being asp.net control names. Right now I'm
using a quasi-post-fix-hungarian sort of thing by appending the control
type to the name ala nameTextBox, userRepeater, etc. This is very
clunky, but prevent naming collisions where you could have a control, a
private member, and a local variable all with the same or similar
names. Of course I &lt;a href="/blog/archive/2004/05/09/154.aspx"&gt;wrap
my asp.net controls in a nice member variable&lt;/a&gt; to make things
simpler. If anyone has a better naming scheme I'd love to here about it.&lt;br&gt;
&lt;/p&gt;&lt;/div&gt;&lt;img src="http://cadred.net/blog/aggbug/255.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Michael Cook</dc:creator>
            <guid>http://cadred.net/blog/archive/2005/02/14/255.aspx</guid>
            <pubDate>Tue, 15 Feb 2005 04:24:00 GMT</pubDate>
            <wfw:comment>http://cadred.net/blog/comments/255.aspx</wfw:comment>
            <comments>http://cadred.net/blog/archive/2005/02/14/255.aspx#feedback</comments>
            <slash:comments>22</slash:comments>
            <wfw:commentRss>http://cadred.net/blog/comments/commentRss/255.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Custom .Text 0.95 Build and Upgrading to 0.96</title>
            <link>http://cadred.net/blog/archive/2005/02/03/250.aspx</link>
            <description>Since I switched over to &lt;a target="_top" href="http://www.mozilla.org/products/firefox/"&gt;Firefox&lt;/a&gt; a couple of months ago, it's been more
and more painful to switch back to IE just to get the nice FreeTextBox
controls to update my blog. FreeTextBox (irononically not entirely free
anymore) has supported non-IE browsers for a while now, but .Text was
built against an early version. So I grabbed the &lt;a target="_top" href="http://workspaces.gotdotnet.com/dottext"&gt;source code for .Text 0.95&lt;/a&gt; from &lt;a target="_top" href="http://www.gotdotnet.com/"&gt;gotdotnet&lt;/a&gt;, which is the last version publically released from &lt;a target="_top" href="http://scottwater.com/"&gt;Scott Watermasysk&lt;/a&gt;, since he rolled .Text into &lt;a target="_top" href="http://www.telligentsystems.com/Solutions/OpenSource.aspx"&gt;Telligent Systems' Community Server&lt;/a&gt;
(which has a lot more features, but may or may not have a more restrictive liscense, which is
perhaps why so many people are interested in maintaining .Text). &lt;br&gt;
&lt;br&gt;
Except it isn't the last version. At some point in time before
Community Server, Scott
was working on .Text 0.96 and even got it to the point where several
sites
were using it in some form (&lt;a target=_top href="http://thomasfreudenberg.com/blog/archive/2004/02/05/337.aspx"&gt;apparently as long as a year ago&lt;/a&gt;). The problem is the source was never
officially released... or was it? If you follow the directions from &lt;a target="_top" href="http://dbvt.com/blog/archive/2005/01/25/788.aspx"&gt;Dave Burke&lt;/a&gt;
you
can get yourself a copy of .Text 0.96 from SourceGear's public vault.
Is this an official release? A silent release to appease frustrated developers? No one seems to know.&lt;br&gt;
&lt;br&gt;
If you do download the code, chances are it won't work right off the
bat. The code has some build errors in it, and so far I haven't been
able to get it to run. Which is why I am currently running 0.95 with
FreeTextBox 3.0 hacked into it, but it seems to work pretty well so
far. If you do get it running and want to migrate your existing 0.95 database, &lt;a target=_top href="http://chuacw.hn.org/chuacw/archive/2005/01/22/1108.aspx"&gt;Chee Wee has some 0.96 upgrade instructions for you&lt;/a&gt;.&lt;br&gt;&lt;img src="http://cadred.net/blog/aggbug/250.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Michael Cook</dc:creator>
            <guid>http://cadred.net/blog/archive/2005/02/03/250.aspx</guid>
            <pubDate>Thu, 03 Feb 2005 15:03:00 GMT</pubDate>
            <wfw:comment>http://cadred.net/blog/comments/250.aspx</wfw:comment>
            <comments>http://cadred.net/blog/archive/2005/02/03/250.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://cadred.net/blog/comments/commentRss/250.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Fix for the Broken VS Wizards</title>
            <link>http://cadred.net/blog/archive/2004/11/29/238.aspx</link>
            <description>&lt;p&gt;I posted &lt;a href="http://cadred.net/blog/archive/2004/11/24/236.aspx"&gt;this Visual Studio error&lt;/a&gt; the other day, which shows up when you uninstall a VS add-in that tries to take a few critical dll's with it (which seems to be about half of the add-ins I've tried). &lt;a href="http://www.petedavis.net/dotnet_articles/wizardfix.html"&gt;Pete Davis explains&lt;/a&gt; what to you can do to try to fix this problem, without reinstalling all of Visual Studio.&lt;/p&gt;
&lt;p&gt;I should point out one minor difference I noticed. In my copy of Visual Studio 2003, extensibility.dll and VSLangProj.dll were both located in C:\Program Files\Microsoft Visual Studio .NET 2003\Common7\IDE\PublicAssemblies rather than C:\Program Files\Microsoft Visual Studio .NET 2003\Common7\IDE\.&lt;/p&gt;
&lt;img src="http://cadred.net/blog/aggbug/238.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Michael Cook</dc:creator>
            <guid>http://cadred.net/blog/archive/2004/11/29/238.aspx</guid>
            <pubDate>Mon, 29 Nov 2004 14:53:00 GMT</pubDate>
            <wfw:comment>http://cadred.net/blog/comments/238.aspx</wfw:comment>
            <comments>http://cadred.net/blog/archive/2004/11/29/238.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://cadred.net/blog/comments/commentRss/238.aspx</wfw:commentRss>
        </item>
        <item>
            <title>If you suck at writing Visual Studio plugins...</title>
            <link>http://cadred.net/blog/archive/2004/11/24/236.aspx</link>
            <description>&lt;p&gt;...Please stop. Now. I'm really tired of dealing with&lt;p&gt;

&lt;div align="center"&gt;&lt;img src="images/cswiz_error.png"&gt;&lt;/div&gt;

&lt;p&gt;when I uninstall your crappy add-in.&lt;/p&gt;

&lt;p&gt;Thanks.&lt;/p&gt;&lt;img src="http://cadred.net/blog/aggbug/236.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Michael Cook</dc:creator>
            <guid>http://cadred.net/blog/archive/2004/11/24/236.aspx</guid>
            <pubDate>Wed, 24 Nov 2004 20:46:00 GMT</pubDate>
            <wfw:comment>http://cadred.net/blog/comments/236.aspx</wfw:comment>
            <comments>http://cadred.net/blog/archive/2004/11/24/236.aspx#feedback</comments>
            <slash:comments>19</slash:comments>
            <wfw:commentRss>http://cadred.net/blog/comments/commentRss/236.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Amazon Web Services and .NET</title>
            <link>http://cadred.net/blog/archive/2004/11/09/229.aspx</link>
            <description>&lt;P&gt;Thanks to my &lt;A href="http://cadred.net/blog/archive/2004/11/09/227.aspx" target=_top&gt;new phone&lt;/A&gt;&amp;nbsp;I am now a web surfing fool (or perhaps just a regular fool). However I've had one problem... I can't surf Amazon.com too well.&amp;nbsp;While I&amp;nbsp;occasionaly shop at&amp;nbsp;Amazon.com I usually perfer to&amp;nbsp;use it as a research tool too look up reviews of products I'm interested in, or just sometimes price compare.&amp;nbsp;But I've not had much luck so far on my phone. The main site is&amp;nbsp;too design heavy and&amp;nbsp;slow to be practical on a phone. &lt;A href="http://www.amazon.com/pocketpc" target=_top&gt;The PDA version&lt;/A&gt; doesn't render correctly on mobile explorer for some reason and the &lt;A href="http://www.amazon.com/phone" target=_top&gt;phone version&lt;/A&gt; is just way to limited and doesn't give me the information I want. &lt;/P&gt;
&lt;P&gt;So I thought I would make my own version with the help of &lt;A href="http://www.amazon.com/gp/browse.html/102-0619723-5247344?node=3434651" target=_top&gt;Amazon Web Services&lt;/A&gt; aka&amp;nbsp;&lt;!--StartFragment --&gt; &lt;SPAN class=small&gt;&lt;A href="http://www.amazon.com/gp/browse.html/ref=sc_fe_l_1/102-0619723-5247344?%5Fencoding=UTF8&amp;amp;node=12738641&amp;amp;no=13584171&amp;amp;me=A36L942TSJ2AJA"&gt;E-Commerce Service&lt;/A&gt;&lt;/SPAN&gt;&amp;nbsp; (ECS).&amp;nbsp;I fired up VS and grabbed the &lt;A href="http://www.amazon.com/gp/aws/sdk/102-0619723-5247344?" target=_top&gt;latest WDSL&lt;/A&gt;. I checked the docs and&amp;nbsp;built a simple wrapper for a basic search:&lt;/P&gt;
&lt;DIV class=code&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;static&lt;/SPAN&gt; Item[] Search( &lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt; keywords) {&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;AWSECommerceService service = &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; AWSECommerceService();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;ItemSearchRequest request = &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; ItemSearchRequest();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;request.Power = "title:" + keywords;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;request.SearchIndex = "Books";&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;request.ResponseGroup = &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt;[] { "Small" };&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;request.Sort = "salesrank";&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;ItemSearchRequest[] requests = &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; ItemSearchRequest[] { &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;request };&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;ItemSearch search = &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; ItemSearch();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;search.AssociateTag = "myassociatetag-20";&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;search.SubscriptionId = Globals.AWSID;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;search.Request = requests;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;try&lt;/SPAN&gt; {&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;ItemSearchResponse response = service.ItemSearch( search );&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Items info = response.Items[ 0 ];&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;return&lt;/SPAN&gt; info.Item;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;catch&lt;/SPAN&gt; (Exception ex) {&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Console.WriteLine( ex.ToString() );&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;return&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;null&lt;/SPAN&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;/DIV&gt;
&lt;P&gt;
&lt;P&gt;Btw, &lt;A href="http://www.sitepoint.com/article/amazon-web-services-asp-net" target=_top&gt;this article&lt;/A&gt; helped get me going. Everything looked great and I built a&amp;nbsp;demo app&amp;nbsp;to try it out. I immediately ran into a problem. It turns out that the WDSL&amp;nbsp;provided by Amazon or the code generated &amp;nbsp;but .NET has a few problems with it. These led me to some wonderful and cryptic error messages like:&lt;/P&gt;
&lt;BLOCKQUOTE class=error&gt;An unhandled exception of type 'System.InvalidOperationException' occurred in system.web.services.dll&lt;BR&gt;Additional information: Method AWSECommerceService.CustomerContentSearch can not be reflected. &lt;/BLOCKQUOTE&gt;
&lt;P&gt;and&lt;/P&gt;
&lt;BLOCKQUOTE class=error&gt;Types CustomerReviews1 and CustomerReviews both use the XML type name, CustomerReviews, from namespace http://webservices.amazon.com/AWSECommerceService/2004-10-19. Use XML attributes to specify a unique XML name and/or namespace for the type. &lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;or even&lt;/P&gt;
&lt;BLOCKQUOTE class=error&gt;File or assembly name s5plrkv5.dll, or one of its dependencies, was not found. &lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;After a bit of research I came across &lt;A href="http://forums.prospero.com/n/mb/message.asp?webtag=am-assocdevxml&amp;amp;msg=6777.1" target=_top&gt;this helpful post&lt;/A&gt; on the official &lt;A href="http://forums.prospero.com/am-assocdevxml" target=_top&gt;Amazon.com Web Services discussion board&lt;/A&gt;&amp;nbsp;which explains how to fix the issues I was having:&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Workaround:&lt;/STRONG&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;OL type=1&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l1 level1 lfo1; tab-stops: list .5in"&gt;Double click on "Web References" in your VS.NET solution. &lt;o:p&gt;&lt;/o:p&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l1 level1 lfo1; tab-stops: list .5in"&gt;Double click on the "WebReference" object and the Object Browser window should open up. &lt;o:p&gt;&lt;/o:p&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l1 level1 lfo1; tab-stops: list .5in"&gt;In the Object Browser window&amp;#8217;s left pane, double click on the object with the same name as your application. This should expand the list tree. Double click on the &lt;YOURAPPNAMEHERE&gt;.WebReference object and this should expand to a list of objects starting with "AccessoriesAccessory". &lt;o:p&gt;&lt;/o:p&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l1 level1 lfo1; tab-stops: list .5in"&gt;In this list of objects, double click on AWSECommerceService. This should open up the source code file that VS.NET generates when it parses the WSDL. Search for "public class CustomerReviews1". You should see the following lines of code.&lt;BR&gt;&lt;BR&gt;&lt;SPAN style="COLOR: maroon; FONT-FAMILY: Courier"&gt;[System.Xml.Serialization.XmlTypeAttribute(TypeName="CustomerReviews", Namespace="&lt;/SPAN&gt;&lt;A title=http://webservices.amazon.com/AWSECommerceService/2004-10-19 href="http://webservices.amazon.com/AWSECommerceService/2004-10-19" target=_blank txrget="_blank"&gt;&lt;SPAN style="COLOR: maroon; FONT-FAMILY: Courier"&gt;http://webservices.amazon.com/AWSECommerceService/2004-10-19&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN style="COLOR: maroon; FONT-FAMILY: Courier"&gt;")]&lt;BR&gt;&lt;BR&gt;public class CustomerReviews1 {&lt;/SPAN&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt; 
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l1 level1 lfo1; tab-stops: list .5in"&gt;Replace the TypeName="CustomerReviews" with TypeName="CustomerReviews1". &lt;o:p&gt;&lt;/o:p&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l1 level1 lfo1; tab-stops: list .5in"&gt;Save this file.&lt;o:p&gt;&lt;/o:p&gt;&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Dependencies not found issue:&lt;/STRONG&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P&gt;On running your application, Microsoft&amp;#8217;s runtime framework will display the following error.&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="COLOR: maroon"&gt;"Server Error in /XXX Application &lt;BR&gt;File or Assembly name yyy.dll, or one of its dependencies, was not found."&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="COLOR: black"&gt;(The name of the file (yyy) is not fixed and will vary for every execution run.)&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN style="COLOR: black"&gt;Workaround:&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;OL type=1&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo2; tab-stops: list .5in"&gt;&lt;SPAN style="COLOR: black"&gt;Follow the instructions above to open the AWSECommerceService class generated by VS.NET. &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo2; tab-stops: list .5in"&gt;&lt;SPAN style="COLOR: black"&gt;Search for "&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;public string[][] Request;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;". You should see the following lines of code.&lt;/SPAN&gt;&lt;SPAN style="COLOR: maroon"&gt;&lt;BR&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: maroon; FONT-FAMILY: Courier"&gt;[System.Xml.Serialization.XmlArrayItemAttribute("BrowseNodeId", typeof(string), IsNullable=false)]&lt;/SPAN&gt;&lt;SPAN style="COLOR: black; FONT-FAMILY: Courier"&gt; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: 'Courier New'"&gt;public string[][] Request;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt; &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo2; tab-stops: list .5in"&gt;&lt;SPAN style="COLOR: black"&gt;Modify these lines to&lt;BR&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: maroon; FONT-FAMILY: Courier"&gt;[System.Xml.Serialization.XmlArrayItemAttribute("BrowseNodeId", IsNullable=false)]&lt;BR&gt;public string[] Request;&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt; 
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo2; tab-stops: list .5in"&gt;&lt;SPAN style="COLOR: black"&gt;Save this file. &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/LI&gt;&lt;/OL&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;Thanks to those tips (I never would have figured it out myself) I was able to get the search tool for my app up and running.&lt;img src="http://cadred.net/blog/aggbug/229.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Michael Cook</dc:creator>
            <guid>http://cadred.net/blog/archive/2004/11/09/229.aspx</guid>
            <pubDate>Tue, 09 Nov 2004 15:26:00 GMT</pubDate>
            <wfw:comment>http://cadred.net/blog/comments/229.aspx</wfw:comment>
            <comments>http://cadred.net/blog/archive/2004/11/09/229.aspx#feedback</comments>
            <slash:comments>8</slash:comments>
            <wfw:commentRss>http://cadred.net/blog/comments/commentRss/229.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Microsoft .NET 1.1 Service Pack 1</title>
            <link>http://cadred.net/blog/archive/2004/09/01/219.aspx</link>
            <description>&lt;P&gt;Though it is available as part of Windows XP service Pack 2 Reail CD, you can &lt;A href="http://www.microsoft.com/downloads/details.aspx?familyid=a8f5654f-088e-40b2-bbdb-a83353618b38&amp;amp;displaylang=en"&gt;download the Microsoft Framework 1.1 Service Pack 1&lt;/A&gt; separately if you are so inclined.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.hanselman.com/blog/CommentView.aspx?guid=c4aefc44-b606-4e93-b007-6c78ca7e68e6" target=_top&gt;Thanks again&lt;/A&gt; &lt;A href="http://www.hanselman.com/blog/default.aspx" target=_top&gt;Scott&lt;/A&gt;.&lt;/P&gt;&lt;img src="http://cadred.net/blog/aggbug/219.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Michael Cook</dc:creator>
            <guid>http://cadred.net/blog/archive/2004/09/01/219.aspx</guid>
            <pubDate>Wed, 01 Sep 2004 12:13:00 GMT</pubDate>
            <wfw:comment>http://cadred.net/blog/comments/219.aspx</wfw:comment>
            <comments>http://cadred.net/blog/archive/2004/09/01/219.aspx#feedback</comments>
            <slash:comments>44</slash:comments>
            <wfw:commentRss>http://cadred.net/blog/comments/commentRss/219.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Avalon for Windows XP?</title>
            <link>http://cadred.net/blog/archive/2004/09/01/218.aspx</link>
            <description>&lt;P&gt;&lt;A href="http://www.interact-sw.co.uk/iangblog/" target=_top&gt;Ian Griffiths&lt;/A&gt; &lt;A href="http://www.interact-sw.co.uk/iangblog/2004/08/31/avalonxp" target=_top&gt;points out&lt;/A&gt; that &lt;A href="http://www.microsoft.com/presspass/press/2004/Aug04/08-27Target2006PR.asp" target=_top&gt;Microsoft is planning on releasing their new gui code-named Avalon&lt;/A&gt; along with the rest of WinFX to Windows XP and Windows 2003 users.&lt;/P&gt;
&lt;P&gt;I find it an odd strategy by Microsoft since those are the core elements of what makes Longhorn interesting to me as a user and a developer. But the faster these new technologies spread the sooner I can use and develop for them.&lt;/P&gt;&lt;img src="http://cadred.net/blog/aggbug/218.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Michael Cook</dc:creator>
            <guid>http://cadred.net/blog/archive/2004/09/01/218.aspx</guid>
            <pubDate>Wed, 01 Sep 2004 12:08:00 GMT</pubDate>
            <wfw:comment>http://cadred.net/blog/comments/218.aspx</wfw:comment>
            <comments>http://cadred.net/blog/archive/2004/09/01/218.aspx#feedback</comments>
            <slash:comments>26</slash:comments>
            <wfw:commentRss>http://cadred.net/blog/comments/commentRss/218.aspx</wfw:commentRss>
        </item>
        <item>
            <title>ASP.NET Default "Enter" Button</title>
            <link>http://cadred.net/blog/archive/2004/08/31/217.aspx</link>
            <description>&lt;P&gt;&lt;A href="http://www.hanselman.com/blog/default.aspx" target=_top&gt;Scott Hanselman&lt;/A&gt; &lt;A href="http://www.hanselman.com/blog/CommentView.aspx?guid=b2f63549-81fa-4895-b3af-c243d9d1fdd2" target=_top&gt;posted a tip&lt;/A&gt;&amp;nbsp;he found on &lt;A href="http://www.hanselman.com/blog/ct.ashx?id=b2f63549-81fa-4895-b3af-c243d9d1fdd2&amp;amp;url=http%3a%2f%2fwww.developer.com%2fnet%2fvb%2farticle.php%2f1594521"&gt;Developer.com&lt;/A&gt;&amp;nbsp;on how to set the default button to trigger when hitting the enter key on a web form:&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"&gt;
&lt;P&gt;&lt;EM&gt;Imagine you've created an ASP.NET Web page with a search button. The user taps a phrase into a text box and presses Enter. On most regular Web pages (think: Google), the form would be submitted and the results returned. In other words, the search button is automatically "clicked" for you.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;However on an ASP.NET Web page, pressing Enter resubmits the form to the server, but actually does nothing... which is pretty useless, really.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;So, how do you set a default button to be clicked when the user presses Enter? Simply add the following line to your page's &lt;U&gt;Load&lt;/U&gt; event, replacing "btnSearch" with the name of your button. It uses a hidden &lt;U&gt;Page&lt;/U&gt; method called &lt;U&gt;RegisterHiddenField&lt;/U&gt; and works splendidly:&lt;/EM&gt;&lt;/P&gt;&lt;PRE&gt;&lt;EM&gt;Page.RegisterHiddenField("__EVENTTARGET", "btnSearch")&lt;/EM&gt;&lt;/PRE&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;There are also some more good ideas and reccomendations in the comments section.&lt;/P&gt;
&lt;P&gt;Edit: Scott has posted a &lt;A href="http://www.hanselman.com/blog/CommentView.aspx?guid=3f96f2ee-331f-480a-81af-dd62c8f92c23"&gt;summary of the best suggestions&lt;/A&gt; and a new one from &lt;A href="http://weblogs.asp.net/despos/"&gt;Dino Esposito&lt;/A&gt;.&lt;/P&gt;&lt;img src="http://cadred.net/blog/aggbug/217.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Michael Cook</dc:creator>
            <guid>http://cadred.net/blog/archive/2004/08/31/217.aspx</guid>
            <pubDate>Tue, 31 Aug 2004 11:51:00 GMT</pubDate>
            <wfw:comment>http://cadred.net/blog/comments/217.aspx</wfw:comment>
            <comments>http://cadred.net/blog/archive/2004/08/31/217.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://cadred.net/blog/comments/commentRss/217.aspx</wfw:commentRss>
        </item>
    </channel>
</rss>