<?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:georss="http://www.georss.org/georss" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">
  <channel>
    <title>Scott Klueppel's Blog</title>
    <link>http://scott.klueppel.net/</link>
    <description>.NET Discourse</description>
    <language>en-us</language>
    <copyright>Scott Klueppel</copyright>
    <lastBuildDate>Sun, 07 Sep 2008 03:33:25 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 2.1.8102.813</generator>
    <managingEditor>tech@gotjeep.net</managingEditor>
    <webMaster>tech@gotjeep.net</webMaster>
    <item>
      <trackback:ping>http://scott.klueppel.net/Trackback.aspx?guid=4118ae7f-25e1-4d3a-8256-a57596277005</trackback:ping>
      <pingback:server>http://scott.klueppel.net/pingback.aspx</pingback:server>
      <pingback:target>http://scott.klueppel.net/PermaLink,guid,4118ae7f-25e1-4d3a-8256-a57596277005.aspx</pingback:target>
      <dc:creator>Scott Klueppel</dc:creator>
      <georss:point>30.109017 -81.497099</georss:point>
      <wfw:comment>http://scott.klueppel.net/CommentView,guid,4118ae7f-25e1-4d3a-8256-a57596277005.aspx</wfw:comment>
      <wfw:commentRss>http://scott.klueppel.net/SyndicationService.asmx/GetEntryCommentsRss?guid=4118ae7f-25e1-4d3a-8256-a57596277005</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I really need to read up on new features when a major release comes out. Just a few
weeks ago I learned of a great "new" SQL 2005 function... ROW_NUMBER(). Just in time
since SQL 2008 is already out. 
</p>
        <p>
For me, this function means a lot less temp tables. I would typically create a temp
table with an <font color="#0000ff">ID INT IDENTITY(1,1)</font> column to create an
DisplayOrder, BatchID, etc. used to group or join on later. Books Online describes
the function as "Returns the sequential number of a row within a partition of a result
set, starting at 1 for the first row in each partition." The syntax is simple, and
looks like:
</p>
        <blockquote>
          <p>
            <font color="#ff00ff">ROW_NUMBER</font>() <font color="#0000ff">OVER</font> (<font color="#0000ff">ORDER
BY</font> ID <font color="#0000ff">DESC</font>)
</p>
        </blockquote>
        <p>
For this example, the data I want to bring back with a <em>DisplayOrder</em> column
looks like:
</p>
        <p>
          <a href="http://scott.klueppel.net/content/binary/ROW_NUMBER_147E9/pers_subs_data.png">
            <img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="148" alt="pers_subs_data" src="http://scott.klueppel.net/content/binary/ROW_NUMBER_147E9/pers_subs_data_thumb.png" width="506" border="0" />
          </a>
        </p>
        <p>
          <u>Without ROW_NUMBER(), using a table variable with an identity column:</u>
        </p>
        <blockquote>
          <p>
            <font color="#0000ff">DECLARE</font> @Subs <font color="#0000ff">TABLE</font> (DisplayOrder<font color="#0000ff"> INT
IDENTITY</font>(1,1), [Address] <font color="#0000ff">VARCHAR</font>(100), Operation <font color="#0000ff">VARCHAR</font>(50),
[Contract] <font color="#0000ff">VARCHAR</font>(50)) 
</p>
          <p>
            <font color="#0000ff">INSERT INTO</font> @Subs ([Address], Operation, [Contract])<br /><font color="#0000ff">SELECT</font> [Address]<br />
    , Operation<br />
    , [Contract]<br /><font color="#0000ff">FROM</font> PersistentSubscribers<br /><font color="#0000ff">WHERE</font> Operation = 'OnEvent2'<br /><font color="#0000ff">ORDER BY <font color="#000000">ID</font> DESC</font></p>
          <p>
            <font color="#0000ff">SELECT <font color="#000000">*</font> FROM</font> @Subs 
</p>
        </blockquote>
        <p>
          <u>With ROW_NUMBER(), look how beautiful:</u>
        </p>
        <blockquote>
          <p>
            <font color="blue">SELECT</font> DisplayOrder = <font color="#ff00ff">ROW_NUMBER</font>() <font color="#0000ff">OVER</font> (<font color="#0000ff">ORDER
BY</font> ID <font color="#0000ff">DESC</font>)<br />
    , [Address]<br />
    , Operation<br />
    , [Contract]<br /><font color="#0000ff">FROM</font> PersistentSubscribers<br /><font color="#0000ff">WHERE</font> Operation = 'OnEvent2'
</p>
        </blockquote>
        <p>
The results from both methods looks like: 
</p>
        <p>
  
</p>
        <p>
          <a href="http://scott.klueppel.net/content/binary/ROW_NUMBER_147E9/row_number_results.png">
            <img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="122" alt="row_number_results" src="http://scott.klueppel.net/content/binary/ROW_NUMBER_147E9/row_number_results_thumb.png" width="456" border="0" />
          </a>
        </p>
        <img width="0" height="0" src="http://scott.klueppel.net/aggbug.ashx?id=4118ae7f-25e1-4d3a-8256-a57596277005" />
      </body>
      <title>ROW_NUMBER()</title>
      <guid isPermaLink="false">http://scott.klueppel.net/PermaLink,guid,4118ae7f-25e1-4d3a-8256-a57596277005.aspx</guid>
      <link>http://scott.klueppel.net/2008/09/07/ROWNUMBER.aspx</link>
      <pubDate>Sun, 07 Sep 2008 03:33:25 GMT</pubDate>
      <description>&lt;p&gt;
I really need to read up on new features when a major release comes out. Just a few
weeks ago I learned of a great "new" SQL 2005 function... ROW_NUMBER(). Just in time
since SQL 2008 is already out. 
&lt;/p&gt;
&lt;p&gt;
For me, this function means a lot less temp tables. I would typically create a temp
table with an &lt;font color="#0000ff"&gt;ID INT IDENTITY(1,1)&lt;/font&gt; column to create an
DisplayOrder, BatchID, etc. used to group or join on later. Books Online describes
the function as "Returns the sequential number of a row within a partition of a result
set, starting at 1 for the first row in each partition." The syntax is simple, and
looks like:
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
&lt;font color="#ff00ff"&gt;ROW_NUMBER&lt;/font&gt;() &lt;font color="#0000ff"&gt;OVER&lt;/font&gt; (&lt;font color="#0000ff"&gt;ORDER
BY&lt;/font&gt; ID &lt;font color="#0000ff"&gt;DESC&lt;/font&gt;)
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
For this example, the data I want to bring back with a &lt;em&gt;DisplayOrder&lt;/em&gt; column
looks like:
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://scott.klueppel.net/content/binary/ROW_NUMBER_147E9/pers_subs_data.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="148" alt="pers_subs_data" src="http://scott.klueppel.net/content/binary/ROW_NUMBER_147E9/pers_subs_data_thumb.png" width="506" border="0"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;u&gt;Without ROW_NUMBER(), using a table variable with an identity column:&lt;/u&gt;
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
&lt;font color="#0000ff"&gt;DECLARE&lt;/font&gt; @Subs &lt;font color="#0000ff"&gt;TABLE&lt;/font&gt; (DisplayOrder&lt;font color="#0000ff"&gt; INT
IDENTITY&lt;/font&gt;(1,1), [Address] &lt;font color="#0000ff"&gt;VARCHAR&lt;/font&gt;(100), Operation &lt;font color="#0000ff"&gt;VARCHAR&lt;/font&gt;(50),
[Contract] &lt;font color="#0000ff"&gt;VARCHAR&lt;/font&gt;(50)) 
&lt;/p&gt;
&lt;p&gt;
&lt;font color="#0000ff"&gt;INSERT INTO&lt;/font&gt; @Subs ([Address], Operation, [Contract])&lt;br&gt;
&lt;font color="#0000ff"&gt;SELECT&lt;/font&gt; [Address]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; , Operation&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; , [Contract]&lt;br&gt;
&lt;font color="#0000ff"&gt;FROM&lt;/font&gt; PersistentSubscribers&lt;br&gt;
&lt;font color="#0000ff"&gt;WHERE&lt;/font&gt; Operation = 'OnEvent2'&lt;br&gt;
&lt;font color="#0000ff"&gt;ORDER BY &lt;font color="#000000"&gt;ID&lt;/font&gt; DESC&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font color="#0000ff"&gt;SELECT &lt;font color="#000000"&gt;*&lt;/font&gt; FROM&lt;/font&gt; @Subs 
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
&lt;u&gt;With ROW_NUMBER(), look how beautiful:&lt;/u&gt; &lt;blockquote&gt; 
&lt;p&gt;
&lt;font color="blue"&gt;SELECT&lt;/font&gt; DisplayOrder = &lt;font color="#ff00ff"&gt;ROW_NUMBER&lt;/font&gt;() &lt;font color="#0000ff"&gt;OVER&lt;/font&gt; (&lt;font color="#0000ff"&gt;ORDER
BY&lt;/font&gt; ID &lt;font color="#0000ff"&gt;DESC&lt;/font&gt;)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; , [Address]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; , Operation&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; , [Contract]&lt;br&gt;
&lt;font color="#0000ff"&gt;FROM&lt;/font&gt; PersistentSubscribers&lt;br&gt;
&lt;font color="#0000ff"&gt;WHERE&lt;/font&gt; Operation = 'OnEvent2'
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
The results from both methods looks like: 
&lt;p&gt;
&amp;nbsp; 
&lt;p&gt;
&lt;a href="http://scott.klueppel.net/content/binary/ROW_NUMBER_147E9/row_number_results.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="122" alt="row_number_results" src="http://scott.klueppel.net/content/binary/ROW_NUMBER_147E9/row_number_results_thumb.png" width="456" border="0"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://scott.klueppel.net/aggbug.ashx?id=4118ae7f-25e1-4d3a-8256-a57596277005" /&gt;</description>
      <comments>http://scott.klueppel.net/CommentView,guid,4118ae7f-25e1-4d3a-8256-a57596277005.aspx</comments>
      <category>SQL</category>
    </item>
    <item>
      <trackback:ping>http://scott.klueppel.net/Trackback.aspx?guid=81c4ce95-c3f1-4bda-97cf-f344afba5a2d</trackback:ping>
      <pingback:server>http://scott.klueppel.net/pingback.aspx</pingback:server>
      <pingback:target>http://scott.klueppel.net/PermaLink,guid,81c4ce95-c3f1-4bda-97cf-f344afba5a2d.aspx</pingback:target>
      <dc:creator>Scott Klueppel</dc:creator>
      <georss:point>30.109017 -81.497099</georss:point>
      <wfw:comment>http://scott.klueppel.net/CommentView,guid,81c4ce95-c3f1-4bda-97cf-f344afba5a2d.aspx</wfw:comment>
      <wfw:commentRss>http://scott.klueppel.net/SyndicationService.asmx/GetEntryCommentsRss?guid=81c4ce95-c3f1-4bda-97cf-f344afba5a2d</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Why clutter your inbox with error messages? Why make special code provisions for users
to receive error messages via email? Why not log your error messages and have users
subscribe to receive them in their favorite RSS aggregator?
</p>
        <p>
If you are logging your exceptions already, you may find it easier to provide a syndication
service. The process is ridiculously simple, and starts by creating a new project
using the "Syndication Service Library" template. This template creates everything
for you. All you need to do now is fill the <em>SyndicationFeed</em> with <em>SyndicationItem</em> objects.
</p>
        <p>
Add a new class file called Feeds.cs: 
</p>
        <p>
 
</p>
        <div style="OVERFLOW-Y: auto; FONT-SIZE: 9pt; BACKGROUND: #3f3f3f; OVERFLOW-X: auto; WIDTH: 873px; COLOR: #dcdccc; FONT-FAMILY: consolas; HEIGHT: 200px">
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">    1</span> <span style="FONT-WEIGHT: bold; COLOR: #e1e18a">using</span><span style="COLOR: #dfdfbf">System</span>;</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">    2</span> <span style="FONT-WEIGHT: bold; COLOR: #e1e18a">using</span><span style="COLOR: #dfdfbf">System</span>.<span style="COLOR: #dfdfbf">Linq</span>;</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">    3</span> <span style="FONT-WEIGHT: bold; COLOR: #e1e18a">using</span><span style="COLOR: #dfdfbf">System</span>.<span style="COLOR: #dfdfbf">ServiceModel</span>;</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">    4</span> <span style="FONT-WEIGHT: bold; COLOR: #e1e18a">using</span><span style="COLOR: #dfdfbf">System</span>.<span style="COLOR: #dfdfbf">ServiceModel</span>.<span style="COLOR: #dfdfbf">Syndication</span>;</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">    5</span> <span style="FONT-WEIGHT: bold; COLOR: #e1e18a">using</span><span style="COLOR: #dfdfbf">System</span>.<span style="COLOR: #dfdfbf">ServiceModel</span>.<span style="COLOR: #dfdfbf">Web</span>;</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">    6</span> </strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">    7</span> <span style="FONT-WEIGHT: bold; COLOR: #e1e18a">namespace</span><span style="COLOR: #dfdfbf">SyndicationService</span></strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">    8</span> {</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">    9</span>    
[<span style="COLOR: #2b91af">ServiceContract</span>]</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   10</span>    
[<span style="COLOR: #2b91af">ServiceKnownType</span>(<span style="FONT-WEIGHT: bold; COLOR: #e1e18a">typeof</span>(<span style="COLOR: #2b91af">Atom10FeedFormatter</span>))]</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   11</span>    
[<span style="COLOR: #2b91af">ServiceKnownType</span>(<span style="FONT-WEIGHT: bold; COLOR: #e1e18a">typeof</span>(<span style="COLOR: #2b91af">Rss20FeedFormatter</span>))]</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   12</span>     <span style="FONT-WEIGHT: bold; COLOR: #e1e18a">public</span><span style="FONT-WEIGHT: bold; COLOR: #e1e18a">interface</span><span style="COLOR: #2b91af">IFeeds</span></strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   13</span>    
{</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   14</span>        
[<span style="COLOR: #2b91af">OperationContract</span>]</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   15</span>        
[<span style="COLOR: #2b91af">WebGet</span>(<span style="COLOR: #dfdfbf">UriTemplate</span> = <span style="COLOR: #c89191">"{type}?env={env}&amp;app={app}"</span>, <span style="COLOR: #dfdfbf">BodyStyle</span> = <span style="COLOR: #2b91af">WebMessageBodyStyle</span>.<span style="COLOR: #dfdfbf">Bare</span>)]</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   16</span>         <span style="COLOR: #2b91af">SyndicationFeedFormatter</span><span style="COLOR: #dfdfbf">CreateFeed</span>(<span style="FONT-WEIGHT: bold; COLOR: #e1e18a">string</span><span style="COLOR: #dfdfbf">type</span>, <span style="FONT-WEIGHT: bold; COLOR: #e1e18a">string</span><span style="COLOR: #dfdfbf">env</span>, <span style="FONT-WEIGHT: bold; COLOR: #e1e18a">string</span><span style="COLOR: #dfdfbf">app</span>);</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   17</span>    
}</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   18</span> </strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   19</span>     <span style="FONT-WEIGHT: bold; COLOR: #e1e18a">public</span><span style="FONT-WEIGHT: bold; COLOR: #e1e18a">class</span><span style="COLOR: #2b91af">Feeds</span> : <span style="COLOR: #2b91af">IFeeds</span></strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   20</span>    
{</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   21</span>         <span style="FONT-WEIGHT: bold; COLOR: #e1e18a">public</span><span style="COLOR: #2b91af">SyndicationFeedFormatter</span><span style="COLOR: #dfdfbf">CreateFeed</span>(<span style="FONT-WEIGHT: bold; COLOR: #e1e18a">string</span><span style="COLOR: #dfdfbf">type</span>, <span style="FONT-WEIGHT: bold; COLOR: #e1e18a">string</span><span style="COLOR: #dfdfbf">env</span>, <span style="FONT-WEIGHT: bold; COLOR: #e1e18a">string</span><span style="COLOR: #dfdfbf">app</span>)</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   22</span>        
{</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   23</span>             <span style="COLOR: #2b91af">SyndicationFeed</span><span style="COLOR: #dfdfbf">feed</span> = <span style="COLOR: #dfdfbf">CreateSyndicationFeed</span>(<span style="COLOR: #dfdfbf">type</span>, <span style="COLOR: #dfdfbf">env</span>, <span style="COLOR: #dfdfbf">app</span>);</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   24</span> </strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   25</span>             <span style="COLOR: #7f9f7f">//
Return ATOM or RSS based on query string</span></strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   26</span>             <span style="COLOR: #7f9f7f">//
rss -&gt; http://localhost:8000/Feeds/Errors?env=Production&amp;app=MyAppName</span></strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   27</span>             <span style="COLOR: #7f9f7f">//
atom -&gt; http://localhost:8000/Feeds/Errors?env=Production&amp;app=MyAppName&amp;format=atom</span></strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   28</span>             <span style="FONT-WEIGHT: bold; COLOR: #e1e18a">string</span><span style="COLOR: #dfdfbf">query</span> = <span style="COLOR: #2b91af">WebOperationContext</span>.<span style="COLOR: #dfdfbf">Current</span>.<span style="COLOR: #dfdfbf">IncomingRequest</span>.<span style="COLOR: #dfdfbf">UriTemplateMatch</span>.<span style="COLOR: #dfdfbf">QueryParameters</span>[<span style="COLOR: #c89191">"format"</span>];</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   29</span>             <span style="COLOR: #2b91af">SyndicationFeedFormatter</span><span style="COLOR: #dfdfbf">formatter</span> = <span style="FONT-WEIGHT: bold; COLOR: #e1e18a">null</span>;</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   30</span>             <span style="FONT-WEIGHT: bold; COLOR: #e1e18a">if</span> (<span style="COLOR: #dfdfbf">query</span> == <span style="COLOR: #c89191">"atom"</span>)</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   31</span>            
{</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   32</span>                 <span style="COLOR: #dfdfbf">formatter</span> = <span style="FONT-WEIGHT: bold; COLOR: #e1e18a">new</span><span style="COLOR: #2b91af">Atom10FeedFormatter</span>(<span style="COLOR: #dfdfbf">feed</span>);</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   33</span>            
}</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   34</span>             <span style="FONT-WEIGHT: bold; COLOR: #e1e18a">else</span></strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   35</span>            
{</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   36</span>                 <span style="COLOR: #dfdfbf">formatter</span> = <span style="FONT-WEIGHT: bold; COLOR: #e1e18a">new</span><span style="COLOR: #2b91af">Rss20FeedFormatter</span>(<span style="COLOR: #dfdfbf">feed</span>);</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   37</span>            
}</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   38</span> </strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   39</span>             <span style="FONT-WEIGHT: bold; COLOR: #e1e18a">return</span><span style="COLOR: #dfdfbf">formatter</span>;</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   40</span>        
}</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   41</span> </strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   42</span>         <span style="FONT-WEIGHT: bold; COLOR: #e1e18a">private</span><span style="FONT-WEIGHT: bold; COLOR: #e1e18a">static</span><span style="COLOR: #2b91af">SyndicationFeed</span><span style="COLOR: #dfdfbf">CreateSyndicationFeed</span>(<span style="FONT-WEIGHT: bold; COLOR: #e1e18a">string</span><span style="COLOR: #dfdfbf">type</span>, <span style="FONT-WEIGHT: bold; COLOR: #e1e18a">string</span><span style="COLOR: #dfdfbf">env</span>, <span style="FONT-WEIGHT: bold; COLOR: #e1e18a">string</span><span style="COLOR: #dfdfbf">app</span>)</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   43</span>        
{</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   44</span>             <span style="COLOR: #2b91af">SyndicationFeed</span><span style="COLOR: #dfdfbf">feed</span>;</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   45</span>             <span style="FONT-WEIGHT: bold; COLOR: #e1e18a">switch</span> (<span style="COLOR: #dfdfbf">type</span>.<span style="COLOR: #dfdfbf">ToLower</span>())</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   46</span>            
{</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   47</span>                 <span style="FONT-WEIGHT: bold; COLOR: #e1e18a">case</span><span style="COLOR: #c89191">"errors"</span>:</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   48</span>                     <span style="COLOR: #dfdfbf">feed</span> = <span style="COLOR: #dfdfbf">CreateErrorsFeed</span>(<span style="COLOR: #dfdfbf">type</span>, <span style="COLOR: #dfdfbf">env</span>, <span style="COLOR: #dfdfbf">app</span>);</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   49</span>                     <span style="FONT-WEIGHT: bold; COLOR: #e1e18a">break</span>;</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   50</span>                 <span style="FONT-WEIGHT: bold; COLOR: #e1e18a">default</span>:</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   51</span>                     <span style="COLOR: #dfdfbf">feed</span> = <span style="FONT-WEIGHT: bold; COLOR: #e1e18a">new</span><span style="COLOR: #2b91af">SyndicationFeed</span>(</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   52</span>                         <span style="COLOR: #2b91af">String</span>.<span style="COLOR: #dfdfbf">Format</span>(<span style="COLOR: #c89191">"Feed
is unavailable - Type: {0} / Environment: {1} / Application: {2}"</span>,</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   53</span>                         <span style="COLOR: #dfdfbf">type</span>, <span style="COLOR: #dfdfbf">env</span>, <span style="COLOR: #dfdfbf">app</span>), <span style="FONT-WEIGHT: bold; COLOR: #e1e18a">null</span>, <span style="FONT-WEIGHT: bold; COLOR: #e1e18a">null</span>);</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   54</span>                     <span style="FONT-WEIGHT: bold; COLOR: #e1e18a">break</span>;</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   55</span>            
}</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   56</span>             <span style="FONT-WEIGHT: bold; COLOR: #e1e18a">return</span><span style="COLOR: #dfdfbf">feed</span>;</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   57</span>        
}</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   58</span> </strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   59</span>         <span style="FONT-WEIGHT: bold; COLOR: #e1e18a">private</span><span style="FONT-WEIGHT: bold; COLOR: #e1e18a">static</span><span style="COLOR: #2b91af">SyndicationFeed</span><span style="COLOR: #dfdfbf">CreateErrorsFeed</span>(<span style="FONT-WEIGHT: bold; COLOR: #e1e18a">string</span><span style="COLOR: #dfdfbf">type</span>, <span style="FONT-WEIGHT: bold; COLOR: #e1e18a">string</span><span style="COLOR: #dfdfbf">env</span>, <span style="FONT-WEIGHT: bold; COLOR: #e1e18a">string</span><span style="COLOR: #dfdfbf">app</span>)</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   60</span>        
{</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   61</span>             <span style="COLOR: #2b91af">ApplicationLogDataContext</span><span style="COLOR: #dfdfbf">db</span> = <span style="FONT-WEIGHT: bold; COLOR: #e1e18a">new</span><span style="COLOR: #2b91af">ApplicationLogDataContext</span>();</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   62</span> </strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   63</span>             <span style="COLOR: #2b91af">SyndicationFeed</span><span style="COLOR: #dfdfbf">feed</span> = <span style="FONT-WEIGHT: bold; COLOR: #e1e18a">new</span><span style="COLOR: #2b91af">SyndicationFeed</span></strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   64</span>            
{</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   65</span>                 <span style="COLOR: #dfdfbf">Title</span> = <span style="FONT-WEIGHT: bold; COLOR: #e1e18a">new</span><span style="COLOR: #2b91af">TextSyndicationContent</span>(<span style="COLOR: #2b91af">String</span>.<span style="COLOR: #dfdfbf">Format</span>(<span style="COLOR: #c89191">"{0}
{1} {2}"</span>, <span style="COLOR: #dfdfbf">env</span>, <span style="COLOR: #dfdfbf">app</span>, <span style="COLOR: #dfdfbf">type</span>)),</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   66</span>                 <span style="COLOR: #dfdfbf">Description</span> = <span style="FONT-WEIGHT: bold; COLOR: #e1e18a">new</span><span style="COLOR: #2b91af">TextSyndicationContent</span>(</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   67</span>                     <span style="COLOR: #2b91af">String</span>.<span style="COLOR: #dfdfbf">Format</span>(<span style="COLOR: #c89191">"Application
error syndication for the {0} applicaiton ({1})."</span>, <span style="COLOR: #dfdfbf">app</span>, <span style="COLOR: #dfdfbf">env</span>)),</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   68</span>                 <span style="COLOR: #dfdfbf">Items</span> = <span style="FONT-WEIGHT: bold; COLOR: #e1e18a">from</span><span style="COLOR: #dfdfbf">e</span><span style="FONT-WEIGHT: bold; COLOR: #e1e18a">in</span><span style="COLOR: #dfdfbf">db</span>.<span style="COLOR: #dfdfbf">Exceptions</span></strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   69</span>                         <span style="FONT-WEIGHT: bold; COLOR: #e1e18a">where</span><span style="COLOR: #dfdfbf">e</span>.<span style="COLOR: #dfdfbf">Environment</span> == <span style="COLOR: #dfdfbf">env</span> &amp;&amp; <span style="COLOR: #dfdfbf">e</span>.<span style="COLOR: #dfdfbf">Application</span> == <span style="COLOR: #dfdfbf">app</span></strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   70</span>                         <span style="FONT-WEIGHT: bold; COLOR: #e1e18a">select</span><span style="FONT-WEIGHT: bold; COLOR: #e1e18a">new</span><span style="COLOR: #2b91af">SyndicationItem</span></strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   71</span>                        
{</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   72</span>                             <span style="COLOR: #dfdfbf">Title</span> = <span style="FONT-WEIGHT: bold; COLOR: #e1e18a">new</span><span style="COLOR: #2b91af">TextSyndicationContent</span>(<span style="COLOR: #dfdfbf">e</span>.<span style="COLOR: #dfdfbf">Message</span>),</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   73</span>                             <span style="COLOR: #dfdfbf">Content</span> = <span style="FONT-WEIGHT: bold; COLOR: #e1e18a">new</span><span style="COLOR: #2b91af">TextSyndicationContent</span>(<span style="COLOR: #dfdfbf">e</span>.<span style="COLOR: #dfdfbf">StackTrace</span>)</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   74</span>                        
}</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   75</span>            
};</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   76</span>             <span style="FONT-WEIGHT: bold; COLOR: #e1e18a">return</span><span style="COLOR: #dfdfbf">feed</span>;</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   77</span>        
}</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   78</span>    
}</strong>
          </p>
          <p style="MARGIN: 0px">
            <strong>
              <span style="COLOR: #85ac8d">   79</span> }</strong>
          </p>
        </div>
        <p>
        </p>
        <p>
Modify the App.config file: 
</p>
        <p>
 
</p>
        <div style="OVERFLOW-Y: auto; FONT-SIZE: 9pt; BACKGROUND: #3f3f3f; OVERFLOW-X: auto; WIDTH: 876px; COLOR: #dcdccc; FONT-FAMILY: consolas; HEIGHT: 200px">
          <p style="MARGIN: 0px">
            <span style="COLOR: #85ac8d">    1</span> <span style="COLOR: #efef8f">&lt;?</span><span style="COLOR: #e3c66a">xml</span><span style="COLOR: #efef8f"></span><span style="COLOR: white">version</span><span style="COLOR: #efef8f">="</span><span style="COLOR: #cc9393">1.0</span><span style="COLOR: #efef8f">" </span><span style="COLOR: white">encoding</span><span style="COLOR: #efef8f">="</span><span style="COLOR: #cc9393">utf-8</span><span style="COLOR: #efef8f">"
?&gt;</span></p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #85ac8d">    2</span> <span style="COLOR: #efef8f">&lt;</span><span style="COLOR: #e3c66a">configuration</span><span style="COLOR: #efef8f">&gt;</span></p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #85ac8d">    3</span> <span style="COLOR: #efef8f">   
&lt;</span><span style="COLOR: #e3c66a">configSections</span><span style="COLOR: #efef8f">&gt;</span></p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #85ac8d">    4</span> <span style="COLOR: #efef8f">   
&lt;/</span><span style="COLOR: #e3c66a">configSections</span><span style="COLOR: #efef8f">&gt;</span></p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #85ac8d">    5</span> <span style="COLOR: #efef8f">   
&lt;</span><span style="COLOR: #e3c66a">connectionStrings</span><span style="COLOR: #efef8f">&gt;</span></p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #85ac8d">    6</span> <span style="COLOR: #efef8f">       
&lt;</span><span style="COLOR: #e3c66a">add</span><span style="COLOR: #efef8f"></span><span style="COLOR: white">name</span><span style="COLOR: #efef8f">="</span><span style="COLOR: #cc9393">SyndicationService.Properties.Settings.ApplicationLogConnectionString</span><span style="COLOR: #efef8f">"</span></p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #85ac8d">    7</span> <span style="COLOR: #efef8f">            </span><span style="COLOR: white">connectionString</span><span style="COLOR: #efef8f">="</span><span style="COLOR: #cc9393">Data
Source=Scorpion;Initial Catalog=ApplicationLog;Integrated Security=True</span><span style="COLOR: #efef8f">"</span></p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #85ac8d">    8</span> <span style="COLOR: #efef8f">            </span><span style="COLOR: white">providerName</span><span style="COLOR: #efef8f">="</span><span style="COLOR: #cc9393">System.Data.SqlClient</span><span style="COLOR: #efef8f">"
/&gt;</span></p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #85ac8d">    9</span> <span style="COLOR: #efef8f">   
&lt;/</span><span style="COLOR: #e3c66a">connectionStrings</span><span style="COLOR: #efef8f">&gt;</span></p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #85ac8d">   10</span> <span style="COLOR: #efef8f">   
&lt;</span><span style="COLOR: #e3c66a">system.serviceModel</span><span style="COLOR: #efef8f">&gt;</span></p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #85ac8d">   11</span> <span style="COLOR: #efef8f">       
&lt;</span><span style="COLOR: #e3c66a">services</span><span style="COLOR: #efef8f">&gt;</span></p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #85ac8d">   12</span> <span style="COLOR: #efef8f">           
&lt;</span><span style="COLOR: #e3c66a">service</span><span style="COLOR: #efef8f"></span><span style="COLOR: white">name</span><span style="COLOR: #efef8f">="</span><span style="COLOR: #cc9393">SyndicationService.Feeds</span><span style="COLOR: #efef8f">"&gt;</span></p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #85ac8d">   13</span> <span style="COLOR: #efef8f">               
&lt;</span><span style="COLOR: #e3c66a">host</span><span style="COLOR: #efef8f">&gt;</span></p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #85ac8d">   14</span> <span style="COLOR: #efef8f">                   
&lt;</span><span style="COLOR: #e3c66a">baseAddresses</span><span style="COLOR: #efef8f">&gt;</span></p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #85ac8d">   15</span> <span style="COLOR: #efef8f">                       
&lt;</span><span style="COLOR: #e3c66a">add</span><span style="COLOR: #efef8f"></span><span style="COLOR: white">baseAddress</span><span style="COLOR: #efef8f">="</span><span style="COLOR: #cc9393">http://localhost:8000/</span><span style="COLOR: #efef8f">"
/&gt;</span></p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #85ac8d">   16</span> <span style="COLOR: #efef8f">                   
&lt;/</span><span style="COLOR: #e3c66a">baseAddresses</span><span style="COLOR: #efef8f">&gt;</span></p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #85ac8d">   17</span> <span style="COLOR: #efef8f">               
&lt;/</span><span style="COLOR: #e3c66a">host</span><span style="COLOR: #efef8f">&gt;</span></p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #85ac8d">   18</span> <span style="COLOR: #efef8f">               
&lt;</span><span style="COLOR: #e3c66a">endpoint</span><span style="COLOR: #efef8f"></span><span style="COLOR: white">contract</span><span style="COLOR: #efef8f">="</span><span style="COLOR: #cc9393">SyndicationService.IFeeds</span><span style="COLOR: #efef8f">"</span></p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #85ac8d">   19</span> <span style="COLOR: #efef8f">                          </span><span style="COLOR: white">address</span><span style="COLOR: #efef8f">="</span><span style="COLOR: #cc9393">Feeds</span><span style="COLOR: #efef8f">"</span></p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #85ac8d">   20</span> <span style="COLOR: #efef8f">                          </span><span style="COLOR: white">binding</span><span style="COLOR: #efef8f">="</span><span style="COLOR: #cc9393">webHttpBinding</span><span style="COLOR: #efef8f">"</span></p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #85ac8d">   21</span> <span style="COLOR: #efef8f">                          </span><span style="COLOR: white">behaviorConfiguration</span><span style="COLOR: #efef8f">="</span><span style="COLOR: #cc9393">WebHttpBinding_Common</span><span style="COLOR: #efef8f">"/&gt;</span></p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #85ac8d">   22</span> <span style="COLOR: #efef8f">           
&lt;/</span><span style="COLOR: #e3c66a">service</span><span style="COLOR: #efef8f">&gt;</span></p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #85ac8d">   23</span> <span style="COLOR: #efef8f">       
&lt;/</span><span style="COLOR: #e3c66a">services</span><span style="COLOR: #efef8f">&gt;</span></p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #85ac8d">   24</span> <span style="COLOR: #efef8f">       
&lt;</span><span style="COLOR: #e3c66a">behaviors</span><span style="COLOR: #efef8f">&gt;</span></p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #85ac8d">   25</span> <span style="COLOR: #efef8f">           
&lt;</span><span style="COLOR: #e3c66a">endpointBehaviors</span><span style="COLOR: #efef8f">&gt;</span></p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #85ac8d">   26</span> <span style="COLOR: #efef8f">               
&lt;</span><span style="COLOR: #e3c66a">behavior</span><span style="COLOR: #efef8f"></span><span style="COLOR: white">name</span><span style="COLOR: #efef8f">="</span><span style="COLOR: #cc9393">WebHttpBinding_Common</span><span style="COLOR: #efef8f">"&gt;</span></p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #85ac8d">   27</span> <span style="COLOR: #efef8f">                   
&lt;</span><span style="COLOR: #e3c66a">webHttp</span><span style="COLOR: #efef8f">/&gt;</span></p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #85ac8d">   28</span> <span style="COLOR: #efef8f">               
&lt;/</span><span style="COLOR: #e3c66a">behavior</span><span style="COLOR: #efef8f">&gt;</span></p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #85ac8d">   29</span> <span style="COLOR: #efef8f">           
&lt;/</span><span style="COLOR: #e3c66a">endpointBehaviors</span><span style="COLOR: #efef8f">&gt;</span></p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #85ac8d">   30</span> <span style="COLOR: #efef8f">       
&lt;/</span><span style="COLOR: #e3c66a">behaviors</span><span style="COLOR: #efef8f">&gt;</span></p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #85ac8d">   31</span> <span style="COLOR: #efef8f">   
&lt;/</span><span style="COLOR: #e3c66a">system.serviceModel</span><span style="COLOR: #efef8f">&gt;</span></p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #85ac8d">   32</span> <span style="COLOR: #efef8f">&lt;/</span><span style="COLOR: #e3c66a">configuration</span><span style="COLOR: #efef8f">&gt;</span></p>
        </div>
        <p>
        </p>
        <p>
You will need to adjust your project's Debug options to have command arguments that
look similar to the following to F5-debug your service.
</p>
        <blockquote>
          <p>
            <strong>"/client:iexplore.exe" "/clientArgs:http://localhost:8000/Feeds/Errors?env=Production&amp;app=GeoTracker"</strong>
          </p>
        </blockquote>
        <p>
Press F5 to test it out.
</p>
        <p>
Here is the IE7 RSS viewer:
</p>
        <p>
          <a href="http://scott.klueppel.net/content/binary/ErrorLogRSSFeed_1304B/IE7_RSS_Viewer.png">
            <img style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height="425" alt="IE7_RSS_Viewer" src="http://scott.klueppel.net/content/binary/ErrorLogRSSFeed_1304B/IE7_RSS_Viewer_thumb.png" width="602" border="0" />
          </a>
        </p>
        <p>
Here is your RSS aggregator viewing the same feed:
</p>
        <p>
          <a href="http://scott.klueppel.net/content/binary/ErrorLogRSSFeed_1304B/RSS_Aggregator.png">
            <img style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height="387" alt="RSS_Aggregator" src="http://scott.klueppel.net/content/binary/ErrorLogRSSFeed_1304B/RSS_Aggregator_thumb.png" width="602" border="0" />
          </a>
        </p>
        <p>
You will, of course, want to add some additional information to the content of your <em>SyndidationItem</em>,
a bogus phrase works for this example. 
</p>
        <p>
Also, it is unusual that you would care to keep your exception details around for
a long period of time. Since this is a syndicated feed of application errors, you
should make special arrangements to archive or delete your exception log on a regular
basis. This will not only keep your insert and select times low, but will also alleviate
the burden placed on a new subscriber when all of the exceptions from the database
appear at once. An alternative would also be to modify the LINQ in the code above
to only bring back exceptions from the last 7-60 days depending on your counts. I
already archive my exceptions to a master exception repository for all environments
by way of an ETL job. This way I can report on my errors without disturbing the live
environments too.
</p>
        <img width="0" height="0" src="http://scott.klueppel.net/aggbug.ashx?id=81c4ce95-c3f1-4bda-97cf-f344afba5a2d" />
      </body>
      <title>Error Log RSS Feed</title>
      <guid isPermaLink="false">http://scott.klueppel.net/PermaLink,guid,81c4ce95-c3f1-4bda-97cf-f344afba5a2d.aspx</guid>
      <link>http://scott.klueppel.net/2008/08/31/ErrorLogRSSFeed.aspx</link>
      <pubDate>Sun, 31 Aug 2008 08:37:38 GMT</pubDate>
      <description>&lt;p&gt;
Why clutter your inbox with error messages? Why make special code provisions for users
to receive error messages via email? Why not log your error messages and have users
subscribe to receive them in their favorite RSS aggregator?
&lt;/p&gt;
&lt;p&gt;
If you are logging your exceptions already, you may find it easier to provide a syndication
service. The process is ridiculously simple, and starts by creating a new project
using the "Syndication Service Library" template. This template creates everything
for you. All you need to do now is fill the &lt;em&gt;SyndicationFeed&lt;/em&gt; with &lt;em&gt;SyndicationItem&lt;/em&gt; objects.
&lt;/p&gt;
&lt;p&gt;
Add a new class file called Feeds.cs: 
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;div style="OVERFLOW-Y: auto; FONT-SIZE: 9pt; BACKGROUND: #3f3f3f; OVERFLOW-X: auto; WIDTH: 873px; COLOR: #dcdccc; FONT-FAMILY: consolas; HEIGHT: 200px"&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&lt;/span&gt;&amp;nbsp;&lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;using&lt;/span&gt; &lt;span style="COLOR: #dfdfbf"&gt;System&lt;/span&gt;;&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&lt;/span&gt;&amp;nbsp;&lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;using&lt;/span&gt; &lt;span style="COLOR: #dfdfbf"&gt;System&lt;/span&gt;.&lt;span style="COLOR: #dfdfbf"&gt;Linq&lt;/span&gt;;&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&lt;/span&gt;&amp;nbsp;&lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;using&lt;/span&gt; &lt;span style="COLOR: #dfdfbf"&gt;System&lt;/span&gt;.&lt;span style="COLOR: #dfdfbf"&gt;ServiceModel&lt;/span&gt;;&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&lt;/span&gt;&amp;nbsp;&lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;using&lt;/span&gt; &lt;span style="COLOR: #dfdfbf"&gt;System&lt;/span&gt;.&lt;span style="COLOR: #dfdfbf"&gt;ServiceModel&lt;/span&gt;.&lt;span style="COLOR: #dfdfbf"&gt;Syndication&lt;/span&gt;;&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5&lt;/span&gt;&amp;nbsp;&lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;using&lt;/span&gt; &lt;span style="COLOR: #dfdfbf"&gt;System&lt;/span&gt;.&lt;span style="COLOR: #dfdfbf"&gt;ServiceModel&lt;/span&gt;.&lt;span style="COLOR: #dfdfbf"&gt;Web&lt;/span&gt;;&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 6&lt;/span&gt;&amp;nbsp;&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 7&lt;/span&gt;&amp;nbsp;&lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;namespace&lt;/span&gt; &lt;span style="COLOR: #dfdfbf"&gt;SyndicationService&lt;/span&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 8&lt;/span&gt; {&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 9&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
[&lt;span style="COLOR: #2b91af"&gt;ServiceContract&lt;/span&gt;]&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 10&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
[&lt;span style="COLOR: #2b91af"&gt;ServiceKnownType&lt;/span&gt;(&lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;typeof&lt;/span&gt;(&lt;span style="COLOR: #2b91af"&gt;Atom10FeedFormatter&lt;/span&gt;))]&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 11&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
[&lt;span style="COLOR: #2b91af"&gt;ServiceKnownType&lt;/span&gt;(&lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;typeof&lt;/span&gt;(&lt;span style="COLOR: #2b91af"&gt;Rss20FeedFormatter&lt;/span&gt;))]&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 12&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;public&lt;/span&gt; &lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;interface&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;IFeeds&lt;/span&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 13&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
{&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 14&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
[&lt;span style="COLOR: #2b91af"&gt;OperationContract&lt;/span&gt;]&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 15&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
[&lt;span style="COLOR: #2b91af"&gt;WebGet&lt;/span&gt;(&lt;span style="COLOR: #dfdfbf"&gt;UriTemplate&lt;/span&gt; = &lt;span style="COLOR: #c89191"&gt;"{type}?env={env}&amp;amp;app={app}"&lt;/span&gt;, &lt;span style="COLOR: #dfdfbf"&gt;BodyStyle&lt;/span&gt; = &lt;span style="COLOR: #2b91af"&gt;WebMessageBodyStyle&lt;/span&gt;.&lt;span style="COLOR: #dfdfbf"&gt;Bare&lt;/span&gt;)]&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 16&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR: #2b91af"&gt;SyndicationFeedFormatter&lt;/span&gt; &lt;span style="COLOR: #dfdfbf"&gt;CreateFeed&lt;/span&gt;(&lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;string&lt;/span&gt; &lt;span style="COLOR: #dfdfbf"&gt;type&lt;/span&gt;, &lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;string&lt;/span&gt; &lt;span style="COLOR: #dfdfbf"&gt;env&lt;/span&gt;, &lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;string&lt;/span&gt; &lt;span style="COLOR: #dfdfbf"&gt;app&lt;/span&gt;);&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 17&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
}&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 18&lt;/span&gt;&amp;nbsp;&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 19&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;public&lt;/span&gt; &lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;class&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;Feeds&lt;/span&gt; : &lt;span style="COLOR: #2b91af"&gt;IFeeds&lt;/span&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 20&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
{&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 21&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;public&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;SyndicationFeedFormatter&lt;/span&gt; &lt;span style="COLOR: #dfdfbf"&gt;CreateFeed&lt;/span&gt;(&lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;string&lt;/span&gt; &lt;span style="COLOR: #dfdfbf"&gt;type&lt;/span&gt;, &lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;string&lt;/span&gt; &lt;span style="COLOR: #dfdfbf"&gt;env&lt;/span&gt;, &lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;string&lt;/span&gt; &lt;span style="COLOR: #dfdfbf"&gt;app&lt;/span&gt;)&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 22&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
{&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 23&lt;/span&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; &lt;span style="COLOR: #2b91af"&gt;SyndicationFeed&lt;/span&gt; &lt;span style="COLOR: #dfdfbf"&gt;feed&lt;/span&gt; = &lt;span style="COLOR: #dfdfbf"&gt;CreateSyndicationFeed&lt;/span&gt;(&lt;span style="COLOR: #dfdfbf"&gt;type&lt;/span&gt;, &lt;span style="COLOR: #dfdfbf"&gt;env&lt;/span&gt;, &lt;span style="COLOR: #dfdfbf"&gt;app&lt;/span&gt;);&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 24&lt;/span&gt;&amp;nbsp;&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 25&lt;/span&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; &lt;span style="COLOR: #7f9f7f"&gt;//
Return ATOM or RSS based on query string&lt;/span&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 26&lt;/span&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; &lt;span style="COLOR: #7f9f7f"&gt;//
rss -&amp;gt; http://localhost:8000/Feeds/Errors?env=Production&amp;amp;app=MyAppName&lt;/span&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 27&lt;/span&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; &lt;span style="COLOR: #7f9f7f"&gt;//
atom -&amp;gt; http://localhost:8000/Feeds/Errors?env=Production&amp;amp;app=MyAppName&amp;amp;format=atom&lt;/span&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 28&lt;/span&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; &lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;string&lt;/span&gt; &lt;span style="COLOR: #dfdfbf"&gt;query&lt;/span&gt; = &lt;span style="COLOR: #2b91af"&gt;WebOperationContext&lt;/span&gt;.&lt;span style="COLOR: #dfdfbf"&gt;Current&lt;/span&gt;.&lt;span style="COLOR: #dfdfbf"&gt;IncomingRequest&lt;/span&gt;.&lt;span style="COLOR: #dfdfbf"&gt;UriTemplateMatch&lt;/span&gt;.&lt;span style="COLOR: #dfdfbf"&gt;QueryParameters&lt;/span&gt;[&lt;span style="COLOR: #c89191"&gt;"format"&lt;/span&gt;];&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 29&lt;/span&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; &lt;span style="COLOR: #2b91af"&gt;SyndicationFeedFormatter&lt;/span&gt; &lt;span style="COLOR: #dfdfbf"&gt;formatter&lt;/span&gt; = &lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;null&lt;/span&gt;;&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 30&lt;/span&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; &lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;if&lt;/span&gt; (&lt;span style="COLOR: #dfdfbf"&gt;query&lt;/span&gt; == &lt;span style="COLOR: #c89191"&gt;"atom"&lt;/span&gt;)&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 31&lt;/span&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;
{&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 32&lt;/span&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; &lt;span style="COLOR: #dfdfbf"&gt;formatter&lt;/span&gt; = &lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;new&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;Atom10FeedFormatter&lt;/span&gt;(&lt;span style="COLOR: #dfdfbf"&gt;feed&lt;/span&gt;);&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 33&lt;/span&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;
}&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 34&lt;/span&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; &lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;else&lt;/span&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 35&lt;/span&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;
{&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 36&lt;/span&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; &lt;span style="COLOR: #dfdfbf"&gt;formatter&lt;/span&gt; = &lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;new&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;Rss20FeedFormatter&lt;/span&gt;(&lt;span style="COLOR: #dfdfbf"&gt;feed&lt;/span&gt;);&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 37&lt;/span&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;
}&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 38&lt;/span&gt;&amp;nbsp;&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 39&lt;/span&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; &lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;return&lt;/span&gt; &lt;span style="COLOR: #dfdfbf"&gt;formatter&lt;/span&gt;;&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 40&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
}&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 41&lt;/span&gt;&amp;nbsp;&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 42&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;private&lt;/span&gt; &lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;static&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;SyndicationFeed&lt;/span&gt; &lt;span style="COLOR: #dfdfbf"&gt;CreateSyndicationFeed&lt;/span&gt;(&lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;string&lt;/span&gt; &lt;span style="COLOR: #dfdfbf"&gt;type&lt;/span&gt;, &lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;string&lt;/span&gt; &lt;span style="COLOR: #dfdfbf"&gt;env&lt;/span&gt;, &lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;string&lt;/span&gt; &lt;span style="COLOR: #dfdfbf"&gt;app&lt;/span&gt;)&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 43&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
{&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 44&lt;/span&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; &lt;span style="COLOR: #2b91af"&gt;SyndicationFeed&lt;/span&gt; &lt;span style="COLOR: #dfdfbf"&gt;feed&lt;/span&gt;;&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 45&lt;/span&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; &lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;switch&lt;/span&gt; (&lt;span style="COLOR: #dfdfbf"&gt;type&lt;/span&gt;.&lt;span style="COLOR: #dfdfbf"&gt;ToLower&lt;/span&gt;())&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 46&lt;/span&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;
{&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 47&lt;/span&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; &lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;case&lt;/span&gt; &lt;span style="COLOR: #c89191"&gt;"errors"&lt;/span&gt;:&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 48&lt;/span&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; &lt;span style="COLOR: #dfdfbf"&gt;feed&lt;/span&gt; = &lt;span style="COLOR: #dfdfbf"&gt;CreateErrorsFeed&lt;/span&gt;(&lt;span style="COLOR: #dfdfbf"&gt;type&lt;/span&gt;, &lt;span style="COLOR: #dfdfbf"&gt;env&lt;/span&gt;, &lt;span style="COLOR: #dfdfbf"&gt;app&lt;/span&gt;);&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 49&lt;/span&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; &lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;break&lt;/span&gt;;&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 50&lt;/span&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; &lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;default&lt;/span&gt;:&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 51&lt;/span&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; &lt;span style="COLOR: #dfdfbf"&gt;feed&lt;/span&gt; = &lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;new&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;SyndicationFeed&lt;/span&gt;(&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 52&lt;/span&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; &lt;span style="COLOR: #2b91af"&gt;String&lt;/span&gt;.&lt;span style="COLOR: #dfdfbf"&gt;Format&lt;/span&gt;(&lt;span style="COLOR: #c89191"&gt;"Feed
is unavailable - Type: {0} / Environment: {1} / Application: {2}"&lt;/span&gt;,&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 53&lt;/span&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; &lt;span style="COLOR: #dfdfbf"&gt;type&lt;/span&gt;, &lt;span style="COLOR: #dfdfbf"&gt;env&lt;/span&gt;, &lt;span style="COLOR: #dfdfbf"&gt;app&lt;/span&gt;), &lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;null&lt;/span&gt;, &lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;null&lt;/span&gt;);&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 54&lt;/span&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; &lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;break&lt;/span&gt;;&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 55&lt;/span&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;
}&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 56&lt;/span&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; &lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;return&lt;/span&gt; &lt;span style="COLOR: #dfdfbf"&gt;feed&lt;/span&gt;;&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 57&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
}&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 58&lt;/span&gt;&amp;nbsp;&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 59&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;private&lt;/span&gt; &lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;static&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;SyndicationFeed&lt;/span&gt; &lt;span style="COLOR: #dfdfbf"&gt;CreateErrorsFeed&lt;/span&gt;(&lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;string&lt;/span&gt; &lt;span style="COLOR: #dfdfbf"&gt;type&lt;/span&gt;, &lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;string&lt;/span&gt; &lt;span style="COLOR: #dfdfbf"&gt;env&lt;/span&gt;, &lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;string&lt;/span&gt; &lt;span style="COLOR: #dfdfbf"&gt;app&lt;/span&gt;)&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 60&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
{&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 61&lt;/span&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; &lt;span style="COLOR: #2b91af"&gt;ApplicationLogDataContext&lt;/span&gt; &lt;span style="COLOR: #dfdfbf"&gt;db&lt;/span&gt; = &lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;new&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;ApplicationLogDataContext&lt;/span&gt;();&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 62&lt;/span&gt;&amp;nbsp;&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 63&lt;/span&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; &lt;span style="COLOR: #2b91af"&gt;SyndicationFeed&lt;/span&gt; &lt;span style="COLOR: #dfdfbf"&gt;feed&lt;/span&gt; = &lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;new&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;SyndicationFeed&lt;/span&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 64&lt;/span&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;
{&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 65&lt;/span&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; &lt;span style="COLOR: #dfdfbf"&gt;Title&lt;/span&gt; = &lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;new&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;TextSyndicationContent&lt;/span&gt;(&lt;span style="COLOR: #2b91af"&gt;String&lt;/span&gt;.&lt;span style="COLOR: #dfdfbf"&gt;Format&lt;/span&gt;(&lt;span style="COLOR: #c89191"&gt;"{0}
{1} {2}"&lt;/span&gt;, &lt;span style="COLOR: #dfdfbf"&gt;env&lt;/span&gt;, &lt;span style="COLOR: #dfdfbf"&gt;app&lt;/span&gt;, &lt;span style="COLOR: #dfdfbf"&gt;type&lt;/span&gt;)),&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 66&lt;/span&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; &lt;span style="COLOR: #dfdfbf"&gt;Description&lt;/span&gt; = &lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;new&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;TextSyndicationContent&lt;/span&gt;(&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 67&lt;/span&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; &lt;span style="COLOR: #2b91af"&gt;String&lt;/span&gt;.&lt;span style="COLOR: #dfdfbf"&gt;Format&lt;/span&gt;(&lt;span style="COLOR: #c89191"&gt;"Application
error syndication for the {0} applicaiton ({1})."&lt;/span&gt;, &lt;span style="COLOR: #dfdfbf"&gt;app&lt;/span&gt;, &lt;span style="COLOR: #dfdfbf"&gt;env&lt;/span&gt;)),&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 68&lt;/span&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; &lt;span style="COLOR: #dfdfbf"&gt;Items&lt;/span&gt; = &lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;from&lt;/span&gt; &lt;span style="COLOR: #dfdfbf"&gt;e&lt;/span&gt; &lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;in&lt;/span&gt; &lt;span style="COLOR: #dfdfbf"&gt;db&lt;/span&gt;.&lt;span style="COLOR: #dfdfbf"&gt;Exceptions&lt;/span&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 69&lt;/span&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; &lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;where&lt;/span&gt; &lt;span style="COLOR: #dfdfbf"&gt;e&lt;/span&gt;.&lt;span style="COLOR: #dfdfbf"&gt;Environment&lt;/span&gt; == &lt;span style="COLOR: #dfdfbf"&gt;env&lt;/span&gt; &amp;amp;&amp;amp; &lt;span style="COLOR: #dfdfbf"&gt;e&lt;/span&gt;.&lt;span style="COLOR: #dfdfbf"&gt;Application&lt;/span&gt; == &lt;span style="COLOR: #dfdfbf"&gt;app&lt;/span&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 70&lt;/span&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; &lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;select&lt;/span&gt; &lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;new&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;SyndicationItem&lt;/span&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 71&lt;/span&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;
{&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 72&lt;/span&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; &lt;span style="COLOR: #dfdfbf"&gt;Title&lt;/span&gt; = &lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;new&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;TextSyndicationContent&lt;/span&gt;(&lt;span style="COLOR: #dfdfbf"&gt;e&lt;/span&gt;.&lt;span style="COLOR: #dfdfbf"&gt;Message&lt;/span&gt;),&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 73&lt;/span&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; &lt;span style="COLOR: #dfdfbf"&gt;Content&lt;/span&gt; = &lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;new&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;TextSyndicationContent&lt;/span&gt;(&lt;span style="COLOR: #dfdfbf"&gt;e&lt;/span&gt;.&lt;span style="COLOR: #dfdfbf"&gt;StackTrace&lt;/span&gt;)&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 74&lt;/span&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;
}&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 75&lt;/span&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;
};&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 76&lt;/span&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; &lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;return&lt;/span&gt; &lt;span style="COLOR: #dfdfbf"&gt;feed&lt;/span&gt;;&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 77&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
}&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 78&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
}&lt;/strong&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;strong&gt;&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 79&lt;/span&gt; }&lt;/strong&gt;
&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
Modify the App.config file: 
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;div style="OVERFLOW-Y: auto; FONT-SIZE: 9pt; BACKGROUND: #3f3f3f; OVERFLOW-X: auto; WIDTH: 876px; COLOR: #dcdccc; FONT-FAMILY: consolas; HEIGHT: 200px"&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="COLOR: #e3c66a"&gt;xml&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt; &lt;/span&gt;&lt;span style="COLOR: white"&gt;version&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;="&lt;/span&gt;&lt;span style="COLOR: #cc9393"&gt;1.0&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;" &lt;/span&gt;&lt;span style="COLOR: white"&gt;encoding&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;="&lt;/span&gt;&lt;span style="COLOR: #cc9393"&gt;utf-8&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;"
?&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #e3c66a"&gt;configuration&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #e3c66a"&gt;configSections&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #e3c66a"&gt;configSections&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #e3c66a"&gt;connectionStrings&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 6&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #e3c66a"&gt;add&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt; &lt;/span&gt;&lt;span style="COLOR: white"&gt;name&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;="&lt;/span&gt;&lt;span style="COLOR: #cc9393"&gt;SyndicationService.Properties.Settings.ApplicationLogConnectionString&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;"&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 7&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: white"&gt;connectionString&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;="&lt;/span&gt;&lt;span style="COLOR: #cc9393"&gt;Data
Source=Scorpion;Initial Catalog=ApplicationLog;Integrated Security=True&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;"&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 8&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: white"&gt;providerName&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;="&lt;/span&gt;&lt;span style="COLOR: #cc9393"&gt;System.Data.SqlClient&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;"
/&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 9&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #e3c66a"&gt;connectionStrings&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 10&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #e3c66a"&gt;system.serviceModel&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 11&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #e3c66a"&gt;services&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 12&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #e3c66a"&gt;service&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt; &lt;/span&gt;&lt;span style="COLOR: white"&gt;name&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;="&lt;/span&gt;&lt;span style="COLOR: #cc9393"&gt;SyndicationService.Feeds&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;"&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 13&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #e3c66a"&gt;host&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 14&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #e3c66a"&gt;baseAddresses&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 15&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #e3c66a"&gt;add&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt; &lt;/span&gt;&lt;span style="COLOR: white"&gt;baseAddress&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;="&lt;/span&gt;&lt;span style="COLOR: #cc9393"&gt;http://localhost:8000/&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;"
/&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 16&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #e3c66a"&gt;baseAddresses&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 17&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #e3c66a"&gt;host&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 18&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #e3c66a"&gt;endpoint&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt; &lt;/span&gt;&lt;span style="COLOR: white"&gt;contract&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;="&lt;/span&gt;&lt;span style="COLOR: #cc9393"&gt;SyndicationService.IFeeds&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;"&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 19&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&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; &lt;/span&gt;&lt;span style="COLOR: white"&gt;address&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;="&lt;/span&gt;&lt;span style="COLOR: #cc9393"&gt;Feeds&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;"&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 20&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&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; &lt;/span&gt;&lt;span style="COLOR: white"&gt;binding&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;="&lt;/span&gt;&lt;span style="COLOR: #cc9393"&gt;webHttpBinding&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;"&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 21&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&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; &lt;/span&gt;&lt;span style="COLOR: white"&gt;behaviorConfiguration&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;="&lt;/span&gt;&lt;span style="COLOR: #cc9393"&gt;WebHttpBinding_Common&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;"/&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 22&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #e3c66a"&gt;service&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 23&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #e3c66a"&gt;services&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 24&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #e3c66a"&gt;behaviors&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 25&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #e3c66a"&gt;endpointBehaviors&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 26&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #e3c66a"&gt;behavior&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt; &lt;/span&gt;&lt;span style="COLOR: white"&gt;name&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;="&lt;/span&gt;&lt;span style="COLOR: #cc9393"&gt;WebHttpBinding_Common&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;"&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 27&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #e3c66a"&gt;webHttp&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;/&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 28&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #e3c66a"&gt;behavior&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 29&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #e3c66a"&gt;endpointBehaviors&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 30&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #e3c66a"&gt;behaviors&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 31&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #e3c66a"&gt;system.serviceModel&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 32&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #efef8f"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #e3c66a"&gt;configuration&lt;/span&gt;&lt;span style="COLOR: #efef8f"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
You will need to adjust your project's Debug options to have command arguments that
look similar to the following to F5-debug your service.
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
&lt;strong&gt;"/client:iexplore.exe" "/clientArgs:http://localhost:8000/Feeds/Errors?env=Production&amp;amp;app=GeoTracker"&lt;/strong&gt;
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
Press F5 to test it out.
&lt;/p&gt;
&lt;p&gt;
Here is the IE7 RSS viewer:
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://scott.klueppel.net/content/binary/ErrorLogRSSFeed_1304B/IE7_RSS_Viewer.png"&gt;&lt;img style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=425 alt=IE7_RSS_Viewer src="http://scott.klueppel.net/content/binary/ErrorLogRSSFeed_1304B/IE7_RSS_Viewer_thumb.png" width=602 border=0&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Here is your RSS aggregator viewing the same feed:
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://scott.klueppel.net/content/binary/ErrorLogRSSFeed_1304B/RSS_Aggregator.png"&gt;&lt;img style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=387 alt=RSS_Aggregator src="http://scott.klueppel.net/content/binary/ErrorLogRSSFeed_1304B/RSS_Aggregator_thumb.png" width=602 border=0&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
You will, of course, want to add some additional information to the content of your &lt;em&gt;SyndidationItem&lt;/em&gt;,
a bogus phrase works for this example. 
&lt;/p&gt;
&lt;p&gt;
Also, it is unusual that you would care to keep your exception details around for
a long period of time. Since this is a syndicated feed of application errors, you
should make special arrangements to archive or delete your exception log on a regular
basis. This will not only keep your insert and select times low, but will also alleviate
the burden placed on a new subscriber when all of the exceptions from the database
appear at once. An alternative would also be to modify the LINQ in the code above
to only bring back exceptions from the last 7-60 days depending on your counts. I
already archive my exceptions to a master exception repository for all environments
by way of an ETL job. This way I can report on my errors without disturbing the live
environments too.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://scott.klueppel.net/aggbug.ashx?id=81c4ce95-c3f1-4bda-97cf-f344afba5a2d" /&gt;</description>
      <comments>http://scott.klueppel.net/CommentView,guid,81c4ce95-c3f1-4bda-97cf-f344afba5a2d.aspx</comments>
      <category>.NET Framework</category>
      <category>C#</category>
      <category>LINQ</category>
      <category>WCF</category>
    </item>
    <item>
      <trackback:ping>http://scott.klueppel.net/Trackback.aspx?guid=08b6d0c7-0e40-4390-af14-a4f2f872ff1a</trackback:ping>
      <pingback:server>http://scott.klueppel.net/pingback.aspx</pingback:server>
      <pingback:target>http://scott.klueppel.net/PermaLink,guid,08b6d0c7-0e40-4390-af14-a4f2f872ff1a.aspx</pingback:target>
      <dc:creator>Scott Klueppel</dc:creator>
      <georss:point>30.109017 -81.497099</georss:point>
      <wfw:comment>http://scott.klueppel.net/CommentView,guid,08b6d0c7-0e40-4390-af14-a4f2f872ff1a.aspx</wfw:comment>
      <wfw:commentRss>http://scott.klueppel.net/SyndicationService.asmx/GetEntryCommentsRss?guid=08b6d0c7-0e40-4390-af14-a4f2f872ff1a</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I decided to come out of my cave and look around 3.5 a bit. I haven't read much about
extension methods, but find them quite useful. They are nothing more than a syntactically
superior static helper method. Let's look at a quick example so I can get back to
coming up with more excuses to use them everywhere.
</p>
        <p>
I like to batch my database calls as much as possible to avoid repeated opening/closing
of connections, etc. To do this, I pass a bunch of ID values into a stored procedure
as a comma-separated string. In the stored proc, I break the string apart with everyone's
favorite table-valued function fn_MakeTable() to make a table of IDs. Then I can JOIN,
UPDATE, or INSERT as needed.
</p>
        <p>
So let's say I have a collection of Orders which I can easily convert to an array
of OrderID integers with LINQ. My new best friend to create a comma-separated string
of OrderIDs is the following. 
</p>
        <!--
{\rtf1\ansi\ansicpg\lang1024\noproof65001\uc1 \deff0{\fonttbl{\f0\fnil\fcharset0\fprq1 Consolas;}}{\colortbl;??\red225\green225\blue138;\red63\green63\blue63;\red220\green220\blue204;\red223\green223\blue191;\red43\green145\blue175;}??\fs18 \cf1\cb2\highlight2 {\b using}\cf3  \cf4 System\cf3 ;\par ??\cf1 {\b using}\cf3  \cf4 System\cf3 .\cf4 Configuration\cf3 ;\par ??\par ??\cf1 {\b namespace}\cf3  \cf4 Common\par ??\cf3 \{\par ??\tab \cf1 {\b public}\cf3  \cf1 {\b static}\cf3  \cf1 {\b class}\cf3  \cf5 ArrayHelper\par ??\cf3 \tab \{\par ??\tab \tab \cf1 {\b public}\cf3  \cf1 {\b static}\cf3  \cf1 {\b string}\cf3  \cf4 ToCsv\cf3 &lt;\cf4 T\cf3 &gt;(\cf1 {\b this}\cf3  \cf4 T\cf3 [] \cf4 array\cf3 )\par ??\tab \tab \{\par ??\tab \tab \tab \cf5 Converter\cf3 &lt;\cf4 T\cf3 , \cf1 {\b string}\cf3 &gt; \cf4 converter\cf3  = (\cf4 t\cf3 ) =&gt;\par ??\tab \tab \tab \tab \{\par ??\tab \tab \tab \tab \tab \cf1 {\b return}\cf3  \cf4 t\cf3 .\cf4 ToString\cf3 ();\par ??\tab \tab \tab \tab \};\par ??\tab \tab \tab \cf1 {\b return}\cf3  \cf4 ToCsv\cf3 (\cf4 array\cf3 , \cf4 converter\cf3 );\par ??\tab \tab \}\par ??\par ??\tab \tab \cf1 {\b public}\cf3  \cf1 {\b static}\cf3  \cf1 {\b string}\cf3  \cf4 ToCsv\cf3 &lt;\cf4 T\cf3 &gt;(\cf1 {\b this}\cf3  \cf4 T\cf3 [] \cf4 array\cf3 , \cf5 Converter\cf3 &lt;\cf4 T\cf3 , \cf1 {\b string}\cf3 &gt; \cf4 converter\cf3 )\par ??\tab \tab \{\par ??\tab \tab \tab \cf5 CommaDelimitedStringCollection\cf3  \cf4 csv\cf3  = \cf1 {\b new}\cf3  \cf5 CommaDelimitedStringCollection\cf3 ();\par ??\tab \tab \tab \cf1 {\b foreach}\cf3  (\cf4 T\cf3  \cf4 t\cf3  \cf1 {\b in}\cf3  \cf4 array\cf3 )\par ??\tab \tab \tab \{\par ??\tab \tab \tab \tab \cf4 csv\cf3 .\cf4 Add\cf3 (\cf4 converter\cf3 (\cf4 t\cf3 ));\par ??\tab \tab \tab \}\par ??\tab \tab \tab \cf1 {\b return}\cf3  \cf4 csv\cf3 .\cf4 ToString\cf3 ();\par ??\tab \tab \}\par ??\tab \}\par ??\}}
-->
        <div style="OVERFLOW-Y: scroll; FONT-SIZE: 9pt; BACKGROUND: #3f3f3f; OVERFLOW-X: auto; WIDTH: 760px; COLOR: #dcdccc; FONT-FAMILY: consolas; HEIGHT: 200px">
          <p style="MARGIN: 0px">
            <span style="COLOR: #85ac8d">    1</span> <span style="FONT-WEIGHT: bold; COLOR: #e1e18a">using</span><span style="COLOR: #dfdfbf">System</span>;
</p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #85ac8d">    2</span> <span style="FONT-WEIGHT: bold; COLOR: #e1e18a">using</span><span style="COLOR: #dfdfbf">System</span>.<span style="COLOR: #dfdfbf">Configuration</span>;
</p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #85ac8d">    3</span> 
</p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #85ac8d">    4</span> <span style="FONT-WEIGHT: bold; COLOR: #e1e18a">namespace</span><span style="COLOR: #dfdfbf">Common</span></p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #85ac8d">    5</span> {
</p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #85ac8d">    6</span>     <span style="FONT-WEIGHT: bold; COLOR: #e1e18a">public</span><span style="FONT-WEIGHT: bold; COLOR: #e1e18a">static</span><span style="FONT-WEIGHT: bold; COLOR: #e1e18a">class</span><span style="COLOR: #2b91af">ArrayHelper</span></p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #85ac8d">    7</span>     {
</p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #85ac8d">    8</span>         <span style="FONT-WEIGHT: bold; COLOR: #e1e18a">public</span><span style="FONT-WEIGHT: bold; COLOR: #e1e18a">static</span><span style="FONT-WEIGHT: bold; COLOR: #e1e18a">string</span><span style="COLOR: #dfdfbf">ToCsv</span>&lt;<span style="COLOR: #dfdfbf">T</span>&gt;(<span style="FONT-WEIGHT: bold; COLOR: #e1e18a">this</span><span style="COLOR: #dfdfbf">T</span>[] <span style="COLOR: #dfdfbf">array</span>)
</p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #85ac8d">    9</span>        
{
</p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #85ac8d">   10</span>             <span style="COLOR: #2b91af">Converter</span>&lt;<span style="COLOR: #dfdfbf">T</span>, <span style="FONT-WEIGHT: bold; COLOR: #e1e18a">string</span>&gt; <span style="COLOR: #dfdfbf">converter</span> =
(<span style="COLOR: #dfdfbf">t</span>) =&gt;
</p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #85ac8d">   11</span>                
{
</p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #85ac8d">   12</span>                     <span style="FONT-WEIGHT: bold; COLOR: #e1e18a">return</span><span style="COLOR: #dfdfbf">t</span>.<span style="COLOR: #dfdfbf">ToString</span>();
</p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #85ac8d">   13</span>                
};
</p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #85ac8d">   14</span>             <span style="FONT-WEIGHT: bold; COLOR: #e1e18a">return</span><span style="COLOR: #dfdfbf">ToCsv</span>(<span style="COLOR: #dfdfbf">array</span>, <span style="COLOR: #dfdfbf">converter</span>);
</p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #85ac8d">   15</span>        
}
</p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #85ac8d">   16</span> 
</p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #85ac8d">   17</span>         <span style="FONT-WEIGHT: bold; COLOR: #e1e18a">public</span><span style="FONT-WEIGHT: bold; COLOR: #e1e18a">static</span><span style="FONT-WEIGHT: bold; COLOR: #e1e18a">string</span><span style="COLOR: #dfdfbf">ToCsv</span>&lt;<span style="COLOR: #dfdfbf">T</span>&gt;(<span style="FONT-WEIGHT: bold; COLOR: #e1e18a">this</span><span style="COLOR: #dfdfbf">T</span>[] <span style="COLOR: #dfdfbf">array</span>, <span style="COLOR: #2b91af">Converter</span>&lt;<span style="COLOR: #dfdfbf">T</span>, <span style="FONT-WEIGHT: bold; COLOR: #e1e18a">string</span>&gt; <span style="COLOR: #dfdfbf">converter</span>)
</p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #85ac8d">   18</span>        
{
</p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #85ac8d">   19</span>             <span style="COLOR: #2b91af">CommaDelimitedStringCollection</span><span style="COLOR: #dfdfbf">csv</span> = <span style="FONT-WEIGHT: bold; COLOR: #e1e18a">new</span><span style="COLOR: #2b91af">CommaDelimitedStringCollection</span>();
</p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #85ac8d">   20</span>             <span style="FONT-WEIGHT: bold; COLOR: #e1e18a">foreach</span> (<span style="COLOR: #dfdfbf">T</span><span style="COLOR: #dfdfbf">t</span><span style="FONT-WEIGHT: bold; COLOR: #e1e18a">in</span><span style="COLOR: #dfdfbf">array</span>)
</p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #85ac8d">   21</span>            
{
</p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #85ac8d">   22</span>                 <span style="COLOR: #dfdfbf">csv</span>.<span style="COLOR: #dfdfbf">Add</span>(<span style="COLOR: #dfdfbf">converter</span>(<span style="COLOR: #dfdfbf">t</span>));
</p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #85ac8d">   23</span>            
}
</p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #85ac8d">   24</span>             <span style="FONT-WEIGHT: bold; COLOR: #e1e18a">return</span><span style="COLOR: #dfdfbf">csv</span>.<span style="COLOR: #dfdfbf">ToString</span>();
</p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #85ac8d">   25</span>        
}
</p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #85ac8d">   26</span>     }
</p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #85ac8d">   27</span> }
</p>
        </div>
        <p>
 
</p>
        <p>
You'll see that I have two ToCsv() methods. The first takes a generic array using
the <strong>this</strong> keyword and uses .ToString() as a default converter to string.
The second method requires you to additionally pass in a converter to convert the
object of type T to a string. Take those converted strings, add them to a <em>CommaDelimitedStringCollection</em> and
.ToString() that collection to a full CSV string of integer values.
</p>
        <p>
There are two ways to call these extension methods. The first is the more familiar
way. Since they are really nothing more than static helper methods, call them just
like any other:
</p>
        <!--
{\rtf1\ansi\ansicpg\lang1024\noproof65001\uc1 \deff0{\fonttbl{\f0\fnil\fcharset0\fprq1 Consolas;}}{\colortbl;??\red220\green220\blue204;\red63\green63\blue63;\red225\green225\blue138;\red223\green223\blue191;\red138\green204\blue207;\red43\green145\blue175;}??\fs18 \cf1\cb2\highlight2 \tab \tab \tab \cf3 {\b int}\cf1 [] \cf4 array\cf1  = \{ \cf5 123\cf1 , \cf5 456\cf1  \};\par ??\tab \tab \tab \cf3 {\b string}\cf1  \cf4 csv\cf1  = \cf4 Common\cf1 .\cf6 ArrayHelper\cf1 .\cf4 ToCsv\cf1 (\cf4 array\cf1 );}
-->
        <div style="FONT-SIZE: 9pt; BACKGROUND: #3f3f3f; WIDTH: 469px; COLOR: #dcdccc; FONT-FAMILY: consolas; HEIGHT: 34px">
          <p style="MARGIN: 0px">
            <span style="COLOR: #85ac8d">   14</span>             <span style="FONT-WEIGHT: bold; COLOR: #e1e18a">int</span>[] <span style="COLOR: #dfdfbf">array</span> =
{ <span style="COLOR: #8acccf">123</span>, <span style="COLOR: #8acccf">456</span> };
</p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #85ac8d">   15</span>             <span style="FONT-WEIGHT: bold; COLOR: #e1e18a">string</span><span style="COLOR: #dfdfbf">csv</span> = <span style="COLOR: #dfdfbf">Common</span>.<span style="COLOR: #2b91af">ArrayHelper</span>.<span style="COLOR: #dfdfbf">ToCsv</span>(<span style="COLOR: #dfdfbf">array</span>);
</p>
        </div>
        <p>
 
</p>
        <p>
The second is the more elegant and more intuitive way. Call it as if it was built
into the Framework: 
</p>
        <!--
{\rtf1\ansi\ansicpg\lang1024\noproof65001\uc1 \deff0{\fonttbl{\f0\fnil\fcharset0\fprq1 Consolas;}}{\colortbl;??\red220\green220\blue204;\red63\green63\blue63;\red225\green225\blue138;\red223\green223\blue191;\red138\green204\blue207;}??\fs18 \cf1\cb2\highlight2 \tab \tab \tab \cf3 {\b int}\cf1 [] \cf4 array\cf1  = \{ \cf5 123\cf1 , \cf5 456\cf1  \};\par ??\tab \tab \tab \cf3 {\b string}\cf1  \cf4 csv\cf1  = \cf4 array\cf1 .\cf4 ToCsv\cf1 ();}
-->
        <div style="FONT-SIZE: 9pt; BACKGROUND: #3f3f3f; WIDTH: 467px; COLOR: #dcdccc; FONT-FAMILY: consolas; HEIGHT: 32px">
          <p style="MARGIN: 0px">
            <span style="COLOR: #85ac8d">   14</span>             <span style="FONT-WEIGHT: bold; COLOR: #e1e18a">int</span>[] <span style="COLOR: #dfdfbf">array</span> =
{ <span style="COLOR: #8acccf">123</span>, <span style="COLOR: #8acccf">456</span> };
</p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #85ac8d">   15</span>             <span style="FONT-WEIGHT: bold; COLOR: #e1e18a">string</span><span style="COLOR: #dfdfbf">csv</span> = <span style="COLOR: #dfdfbf">array</span>.<span style="COLOR: #dfdfbf">ToCsv</span>();
</p>
        </div>
        <p>
 
</p>
        <p>
You may be wondering, what if I write a method that matches the signature of a built-in
method like .ToString(). Well, the built-in methods take precedence over extension
methods, so <strong>array.ToString()</strong> will still appear as <strong>System.Int32[]</strong>.
To get your new meaning of .ToString(), you just have to call it in the static helper
method way detailed above.
</p>
        <p>
For a generic array of T, you will likely want to provide your own <em>Converter</em> if
T's .ToString() method does not display the information you want to show in the CSV
string. Below is a lame example of a converter. It takes the <em>int</em> value,
converts it to the <em>char</em> value.
</p>
        <!--
{\rtf1\ansi\ansicpg\lang1024\noproof65001\uc1 \deff0{\fonttbl{\f0\fnil\fcharset0\fprq1 Consolas;}}{\colortbl;??\red220\green220\blue204;\red63\green63\blue63;\red43\green145\blue175;\red225\green225\blue138;\red223\green223\blue191;}??\fs18 \cf1\cb2\highlight2 \tab \tab \tab \cf3 Converter\cf1 &lt;\cf4 {\b int}\cf1 , \cf4 {\b string}\cf1 &gt; \cf5 converter\cf1  = (\cf5 i\cf1 ) =&gt;\par ??\tab \tab \tab \{\par ??\tab \tab \tab \tab \cf4 {\b return}\cf1  ((\cf4 {\b char}\cf1 )\cf5 i\cf1 ).\cf5 ToString\cf1 ();\par ??\tab \tab \tab \};\par ??\tab \tab \tab \cf5 csv\cf1  = \cf5 array\cf1 .\cf5 ToCsv\cf1 (\cf5 converter\cf1 );}
-->
        <div style="FONT-SIZE: 9pt; BACKGROUND: #3f3f3f; WIDTH: 467px; COLOR: #dcdccc; FONT-FAMILY: consolas; HEIGHT: 72px">
          <p style="MARGIN: 0px">
            <span style="COLOR: #85ac8d">   21</span>             <span style="COLOR: #2b91af">Converter</span>&lt;<span style="FONT-WEIGHT: bold; COLOR: #e1e18a">int</span>, <span style="FONT-WEIGHT: bold; COLOR: #e1e18a">string</span>&gt; <span style="COLOR: #dfdfbf">converter</span> =
(<span style="COLOR: #dfdfbf">i</span>) =&gt;
</p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #85ac8d">   22</span>            
{
</p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #85ac8d">   23</span>                 <span style="FONT-WEIGHT: bold; COLOR: #e1e18a">return</span> ((<span style="FONT-WEIGHT: bold; COLOR: #e1e18a">char</span>)<span style="COLOR: #dfdfbf">i</span>).<span style="COLOR: #dfdfbf">ToString</span>();
</p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #85ac8d">   24</span>            
};
</p>
          <p style="MARGIN: 0px">
            <span style="COLOR: #85ac8d">   25</span>             <span style="FONT-WEIGHT: bold; COLOR: #e1e18a">string</span><span style="COLOR: #dfdfbf">csv</span> = <span style="COLOR: #dfdfbf">array</span>.<span style="COLOR: #dfdfbf">ToCsv</span>(<span style="COLOR: #dfdfbf">converter</span>);
</p>
        </div>
        <p>
 
</p>
        <p>
I think something so simple, and definitely re-usable, would benefit any developer.
</p>
        <img width="0" height="0" src="http://scott.klueppel.net/aggbug.ashx?id=08b6d0c7-0e40-4390-af14-a4f2f872ff1a" />
      </body>
      <title>C# 3.0 Extension Methods</title>
      <guid isPermaLink="false">http://scott.klueppel.net/PermaLink,guid,08b6d0c7-0e40-4390-af14-a4f2f872ff1a.aspx</guid>
      <link>http://scott.klueppel.net/2008/08/27/C30ExtensionMethods.aspx</link>
      <pubDate>Wed, 27 Aug 2008 02:07:12 GMT</pubDate>
      <description>&lt;p&gt;
I decided to come out of my cave and look around 3.5 a bit. I haven't read much about
extension methods, but find them quite useful. They are nothing more than a syntactically
superior static helper method. Let's look at a quick example so I can get back to
coming up with more excuses to use them everywhere.
&lt;/p&gt;
&lt;p&gt;
I like to batch my database calls as much as possible to avoid repeated opening/closing
of connections, etc. To do this, I pass a bunch of ID values into a stored procedure
as a comma-separated string. In the stored proc, I break the string apart with everyone's
favorite table-valued function fn_MakeTable() to make a table of IDs. Then I can JOIN,
UPDATE, or INSERT as needed.
&lt;/p&gt;
&lt;p&gt;
So let's say I have a collection of Orders which I can easily convert to an array
of OrderID integers with LINQ. My new best friend to create a comma-separated string
of OrderIDs is the following. 
&lt;/p&gt;
&lt;!--
{\rtf1\ansi\ansicpg\lang1024\noproof65001\uc1 \deff0{\fonttbl{\f0\fnil\fcharset0\fprq1 Consolas;}}{\colortbl;??\red225\green225\blue138;\red63\green63\blue63;\red220\green220\blue204;\red223\green223\blue191;\red43\green145\blue175;}??\fs18 \cf1\cb2\highlight2 {\b using}\cf3  \cf4 System\cf3 ;\par ??\cf1 {\b using}\cf3  \cf4 System\cf3 .\cf4 Configuration\cf3 ;\par ??\par ??\cf1 {\b namespace}\cf3  \cf4 Common\par ??\cf3 \{\par ??\tab \cf1 {\b public}\cf3  \cf1 {\b static}\cf3  \cf1 {\b class}\cf3  \cf5 ArrayHelper\par ??\cf3 \tab \{\par ??\tab \tab \cf1 {\b public}\cf3  \cf1 {\b static}\cf3  \cf1 {\b string}\cf3  \cf4 ToCsv\cf3 &amp;lt;\cf4 T\cf3 &amp;gt;(\cf1 {\b this}\cf3  \cf4 T\cf3 [] \cf4 array\cf3 )\par ??\tab \tab \{\par ??\tab \tab \tab \cf5 Converter\cf3 &amp;lt;\cf4 T\cf3 , \cf1 {\b string}\cf3 &amp;gt; \cf4 converter\cf3  = (\cf4 t\cf3 ) =&amp;gt;\par ??\tab \tab \tab \tab \{\par ??\tab \tab \tab \tab \tab \cf1 {\b return}\cf3  \cf4 t\cf3 .\cf4 ToString\cf3 ();\par ??\tab \tab \tab \tab \};\par ??\tab \tab \tab \cf1 {\b return}\cf3  \cf4 ToCsv\cf3 (\cf4 array\cf3 , \cf4 converter\cf3 );\par ??\tab \tab \}\par ??\par ??\tab \tab \cf1 {\b public}\cf3  \cf1 {\b static}\cf3  \cf1 {\b string}\cf3  \cf4 ToCsv\cf3 &amp;lt;\cf4 T\cf3 &amp;gt;(\cf1 {\b this}\cf3  \cf4 T\cf3 [] \cf4 array\cf3 , \cf5 Converter\cf3 &amp;lt;\cf4 T\cf3 , \cf1 {\b string}\cf3 &amp;gt; \cf4 converter\cf3 )\par ??\tab \tab \{\par ??\tab \tab \tab \cf5 CommaDelimitedStringCollection\cf3  \cf4 csv\cf3  = \cf1 {\b new}\cf3  \cf5 CommaDelimitedStringCollection\cf3 ();\par ??\tab \tab \tab \cf1 {\b foreach}\cf3  (\cf4 T\cf3  \cf4 t\cf3  \cf1 {\b in}\cf3  \cf4 array\cf3 )\par ??\tab \tab \tab \{\par ??\tab \tab \tab \tab \cf4 csv\cf3 .\cf4 Add\cf3 (\cf4 converter\cf3 (\cf4 t\cf3 ));\par ??\tab \tab \tab \}\par ??\tab \tab \tab \cf1 {\b return}\cf3  \cf4 csv\cf3 .\cf4 ToString\cf3 ();\par ??\tab \tab \}\par ??\tab \}\par ??\}}
--&gt;
&lt;div style="OVERFLOW-Y: scroll; FONT-SIZE: 9pt; BACKGROUND: #3f3f3f; OVERFLOW-X: auto; WIDTH: 760px; COLOR: #dcdccc; FONT-FAMILY: consolas; HEIGHT: 200px"&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&lt;/span&gt;&amp;nbsp;&lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;using&lt;/span&gt; &lt;span style="COLOR: #dfdfbf"&gt;System&lt;/span&gt;;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&lt;/span&gt;&amp;nbsp;&lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;using&lt;/span&gt; &lt;span style="COLOR: #dfdfbf"&gt;System&lt;/span&gt;.&lt;span style="COLOR: #dfdfbf"&gt;Configuration&lt;/span&gt;;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&lt;/span&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&lt;/span&gt;&amp;nbsp;&lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;namespace&lt;/span&gt; &lt;span style="COLOR: #dfdfbf"&gt;Common&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5&lt;/span&gt; {
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 6&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;public&lt;/span&gt; &lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;static&lt;/span&gt; &lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;class&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;ArrayHelper&lt;/span&gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 7&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 8&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;public&lt;/span&gt; &lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;static&lt;/span&gt; &lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;string&lt;/span&gt; &lt;span style="COLOR: #dfdfbf"&gt;ToCsv&lt;/span&gt;&amp;lt;&lt;span style="COLOR: #dfdfbf"&gt;T&lt;/span&gt;&amp;gt;(&lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;this&lt;/span&gt; &lt;span style="COLOR: #dfdfbf"&gt;T&lt;/span&gt;[] &lt;span style="COLOR: #dfdfbf"&gt;array&lt;/span&gt;)
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 9&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
{
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 10&lt;/span&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; &lt;span style="COLOR: #2b91af"&gt;Converter&lt;/span&gt;&amp;lt;&lt;span style="COLOR: #dfdfbf"&gt;T&lt;/span&gt;, &lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;string&lt;/span&gt;&amp;gt; &lt;span style="COLOR: #dfdfbf"&gt;converter&lt;/span&gt; =
(&lt;span style="COLOR: #dfdfbf"&gt;t&lt;/span&gt;) =&amp;gt;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 11&lt;/span&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;
{
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 12&lt;/span&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; &lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;return&lt;/span&gt; &lt;span style="COLOR: #dfdfbf"&gt;t&lt;/span&gt;.&lt;span style="COLOR: #dfdfbf"&gt;ToString&lt;/span&gt;();
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 13&lt;/span&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;
};
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 14&lt;/span&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; &lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;return&lt;/span&gt; &lt;span style="COLOR: #dfdfbf"&gt;ToCsv&lt;/span&gt;(&lt;span style="COLOR: #dfdfbf"&gt;array&lt;/span&gt;, &lt;span style="COLOR: #dfdfbf"&gt;converter&lt;/span&gt;);
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 15&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
}
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 16&lt;/span&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 17&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;public&lt;/span&gt; &lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;static&lt;/span&gt; &lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;string&lt;/span&gt; &lt;span style="COLOR: #dfdfbf"&gt;ToCsv&lt;/span&gt;&amp;lt;&lt;span style="COLOR: #dfdfbf"&gt;T&lt;/span&gt;&amp;gt;(&lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;this&lt;/span&gt; &lt;span style="COLOR: #dfdfbf"&gt;T&lt;/span&gt;[] &lt;span style="COLOR: #dfdfbf"&gt;array&lt;/span&gt;, &lt;span style="COLOR: #2b91af"&gt;Converter&lt;/span&gt;&amp;lt;&lt;span style="COLOR: #dfdfbf"&gt;T&lt;/span&gt;, &lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;string&lt;/span&gt;&amp;gt; &lt;span style="COLOR: #dfdfbf"&gt;converter&lt;/span&gt;)
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 18&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
{
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 19&lt;/span&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; &lt;span style="COLOR: #2b91af"&gt;CommaDelimitedStringCollection&lt;/span&gt; &lt;span style="COLOR: #dfdfbf"&gt;csv&lt;/span&gt; = &lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;new&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;CommaDelimitedStringCollection&lt;/span&gt;();
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 20&lt;/span&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; &lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;foreach&lt;/span&gt; (&lt;span style="COLOR: #dfdfbf"&gt;T&lt;/span&gt; &lt;span style="COLOR: #dfdfbf"&gt;t&lt;/span&gt; &lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;in&lt;/span&gt; &lt;span style="COLOR: #dfdfbf"&gt;array&lt;/span&gt;)
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 21&lt;/span&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;
{
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 22&lt;/span&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; &lt;span style="COLOR: #dfdfbf"&gt;csv&lt;/span&gt;.&lt;span style="COLOR: #dfdfbf"&gt;Add&lt;/span&gt;(&lt;span style="COLOR: #dfdfbf"&gt;converter&lt;/span&gt;(&lt;span style="COLOR: #dfdfbf"&gt;t&lt;/span&gt;));
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 23&lt;/span&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;
}
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 24&lt;/span&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; &lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;return&lt;/span&gt; &lt;span style="COLOR: #dfdfbf"&gt;csv&lt;/span&gt;.&lt;span style="COLOR: #dfdfbf"&gt;ToString&lt;/span&gt;();
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 25&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
}
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 26&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 27&lt;/span&gt; }
&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
You'll see that I have two ToCsv() methods. The first takes a generic array using
the &lt;strong&gt;this&lt;/strong&gt; keyword and uses .ToString() as a default converter to string.
The second method requires you to additionally pass in a converter to convert the
object of type T to a string. Take those converted strings, add them to a &lt;em&gt;CommaDelimitedStringCollection&lt;/em&gt; and
.ToString() that collection to a full CSV string of integer values.
&lt;/p&gt;
&lt;p&gt;
There are two ways to call these extension methods. The first is the more familiar
way. Since they are really nothing more than static helper methods, call them just
like any other:
&lt;/p&gt;
&lt;!--
{\rtf1\ansi\ansicpg\lang1024\noproof65001\uc1 \deff0{\fonttbl{\f0\fnil\fcharset0\fprq1 Consolas;}}{\colortbl;??\red220\green220\blue204;\red63\green63\blue63;\red225\green225\blue138;\red223\green223\blue191;\red138\green204\blue207;\red43\green145\blue175;}??\fs18 \cf1\cb2\highlight2 \tab \tab \tab \cf3 {\b int}\cf1 [] \cf4 array\cf1  = \{ \cf5 123\cf1 , \cf5 456\cf1  \};\par ??\tab \tab \tab \cf3 {\b string}\cf1  \cf4 csv\cf1  = \cf4 Common\cf1 .\cf6 ArrayHelper\cf1 .\cf4 ToCsv\cf1 (\cf4 array\cf1 );}
--&gt;
&lt;div style="FONT-SIZE: 9pt; BACKGROUND: #3f3f3f; WIDTH: 469px; COLOR: #dcdccc; FONT-FAMILY: consolas; HEIGHT: 34px"&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 14&lt;/span&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; &lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;int&lt;/span&gt;[] &lt;span style="COLOR: #dfdfbf"&gt;array&lt;/span&gt; =
{ &lt;span style="COLOR: #8acccf"&gt;123&lt;/span&gt;, &lt;span style="COLOR: #8acccf"&gt;456&lt;/span&gt; };
&lt;/p&gt;
&lt;p style="MARGIN: 0px"&gt;
&lt;span style="COLOR: #85ac8d"&gt;&amp;nbsp;&amp;nbsp; 15&lt;/span&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; &lt;span style="FONT-WEIGHT: bold; COLOR: #e1e18a"&gt;string&lt;/span&gt; &lt;span style="COLOR: #dfdfbf"&gt;csv&lt;/span&gt; = &lt;span style="COLOR: #dfdfbf"&gt;Common&lt;/span&gt;.&lt;span style="COLOR: #2b91af"&gt;ArrayHelper&lt;/span&gt;.&lt;span style="COLOR: #dfdfbf"&gt;ToCsv&lt;/span&gt;(&lt;span style="COLOR: #dfdfbf"&gt;array&lt;/span&gt;);
&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
The second is the more elegant and more intuitive way. Call it as if it was built
into the Framework: 
&lt;/p&gt;
&lt;!--
{\rtf1\ansi\ansicpg\lang1024\noproof65001\uc1 \deff0{\fonttbl{\f0\fnil\fcharset0\fprq1 Consolas;}}{\colortbl;??\red220\green220\blue204;\red63\green63\blue63;\red225\green225\blue138;\red223\green223\blue191;\red138\green204\blue207;}??\fs18 \cf1\cb2\highlight2 \tab \tab \tab \cf3 {\b int}\cf1 [] \cf4 array\cf1  = \{ \cf5 123\cf1 , \cf5 456\cf1  \};\par ??\tab \tab \tab \cf3 {\b string}\cf1  \cf4 csv\cf1  = \cf4 array\cf1 .\cf4 ToCsv\cf1 ();}
--&gt;
&