<?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 - AJAX</title>
    <link>http://offroadcoder.com/</link>
    <description>making the hard line look easy</description>
    <language>en-us</language>
    <copyright>Scott Klueppel</copyright>
    <lastBuildDate>Fri, 27 Nov 2009 04:44:24 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 2.1.8102.813</generator>
    <managingEditor>me@offroadcoder.com</managingEditor>
    <webMaster>me@offroadcoder.com</webMaster>
    <item>
      <trackback:ping>http://offroadcoder.com/Trackback.aspx?guid=3331f559-3440-430f-a4c0-f18f5e90346f</trackback:ping>
      <pingback:server>http://offroadcoder.com/pingback.aspx</pingback:server>
      <pingback:target>http://offroadcoder.com/PermaLink,guid,3331f559-3440-430f-a4c0-f18f5e90346f.aspx</pingback:target>
      <dc:creator>Scott Klueppel</dc:creator>
      <georss:point>30.109017 -81.497099</georss:point>
      <wfw:comment>http://offroadcoder.com/CommentView,guid,3331f559-3440-430f-a4c0-f18f5e90346f.aspx</wfw:comment>
      <wfw:commentRss>http://offroadcoder.com/SyndicationService.asmx/GetEntryCommentsRss?guid=3331f559-3440-430f-a4c0-f18f5e90346f</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I’ve been talking about Geneva for a long time. I got the basics down earlier in the
year. I tried to come up with my own set of sample apps, but failed to get anywhere.
With the official release, and renaming to <em>Windows Identity Foundation (WIF)</em>,
I have renewed inspiration.
</p>
        <p>
I read Michele Leroux Bustamante’s MSDN magazine article, <a href="http://msdn.microsoft.com/en-us/magazine/ee335707.aspx" target="_blank">Claim-Based
Authorization with WIF</a>, last night. After reading the article, I was confident
that I could get a claims-aware WCF service stood up with a custom STS in a matter
of hours. Today I downloaded and installed WIF. I also installed the WIF SDK and all
of the prerequisite hotfixes. I perused the readme files and looked through some of
the samples code. Everything is layed out sensibly, the samples are commented sufficiently,
and the samples include setup and cleanup batch scripts when necessary.
</p>
        <p>
The samples include:
</p>
        <blockquote>
          <p>
Quick Start
</p>
          <ol>
            <li>
Simple Claims Aware Web Application 
</li>
            <li>
Simple Claims Aware Web Service 
</li>
            <li>
Simple Web Application With Information Card SignIn 
</li>
            <li>
Simple Web Application With Managed STS 
</li>
            <li>
Claims Aware Web Application in a Web Farm 
</li>
            <li>
Using Claims In IsInRole 
</li>
          </ol>
          <p>
End-to-end Scenario
</p>
          <ol>
            <li>
Authentication Assurance 
</li>
            <li>
Federation For Web Services 
</li>
            <li>
Federation For Web Applications 
</li>
            <li>
Identity Delegation 
</li>
            <li>
Web Application With Multiple SignIn Methods 
</li>
            <li>
Federation Metadata</li>
          </ol>
          <p>
Extensibility
</p>
          <ol>
            <li>
Claims Aware AJAX Application 
</li>
            <li>
Convert Claims To NT Token 
</li>
            <li>
Customizing Request Security Token 
</li>
            <li>
Customizing Token 
</li>
            <li>
WSTrustChannel 
</li>
            <li>
Claims-based Authorization</li>
          </ol>
        </blockquote>
        <p>
All of the samples I’ve run through so far are great. The only thing that I’m not
in love with is all the XML required to wire this stuff up. Maybe some Juval-style
extensions would make it less painful.
</p>
        <p>
One more thing… it looks like all of the XP users will finally have to upgrade. WIF
only works with Vista, Win7, and Win2008. I heard that Win2003 compatibility will
arrive in December.
</p>
        <p>
          <a href="http://msdn.microsoft.com/en-us/evalcenter/dd440951.aspx" target="_blank">Download
Windows Identity Foundation</a>
        </p>
        <p>
          <a href="http://www.microsoft.com/downloads/info.aspx?na=47&amp;p=1&amp;SrcDisplayLang=en&amp;SrcCategoryId=&amp;SrcFamilyId=eb9c345f-e830-40b8-a5fe-ae7a864c4d76&amp;u=details.aspx%3ffamilyid%3dC148B2DF-C7AF-46BB-9162-2C9422208504%26displaylang%3den" target="_blank">Download
Windows Identity Foundation SDK</a>
        </p>
        <img width="0" height="0" src="http://offroadcoder.com/aggbug.ashx?id=3331f559-3440-430f-a4c0-f18f5e90346f" />
      </body>
      <title>WIF FTW</title>
      <guid isPermaLink="false">http://offroadcoder.com/PermaLink,guid,3331f559-3440-430f-a4c0-f18f5e90346f.aspx</guid>
      <link>http://offroadcoder.com/2009/11/27/WIFFTW.aspx</link>
      <pubDate>Fri, 27 Nov 2009 04:44:24 GMT</pubDate>
      <description>&lt;p&gt;
I’ve been talking about Geneva for a long time. I got the basics down earlier in the
year. I tried to come up with my own set of sample apps, but failed to get anywhere.
With the official release, and renaming to &lt;em&gt;Windows Identity Foundation (WIF)&lt;/em&gt;,
I have renewed inspiration.
&lt;/p&gt;
&lt;p&gt;
I read Michele Leroux Bustamante’s MSDN magazine article, &lt;a href="http://msdn.microsoft.com/en-us/magazine/ee335707.aspx" target="_blank"&gt;Claim-Based
Authorization with WIF&lt;/a&gt;, last night. After reading the article, I was confident
that I could get a claims-aware WCF service stood up with a custom STS in a matter
of hours. Today I downloaded and installed WIF. I also installed the WIF SDK and all
of the prerequisite hotfixes. I perused the readme files and looked through some of
the samples code. Everything is layed out sensibly, the samples are commented sufficiently,
and the samples include setup and cleanup batch scripts when necessary.
&lt;/p&gt;
&lt;p&gt;
The samples include:
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
Quick Start
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
Simple Claims Aware Web Application 
&lt;li&gt;
Simple Claims Aware Web Service 
&lt;li&gt;
Simple Web Application With Information Card SignIn 
&lt;li&gt;
Simple Web Application With Managed STS 
&lt;li&gt;
Claims Aware Web Application in a Web Farm 
&lt;li&gt;
Using Claims In IsInRole 
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
End-to-end Scenario
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
Authentication Assurance 
&lt;li&gt;
Federation For Web Services 
&lt;li&gt;
Federation For Web Applications 
&lt;li&gt;
Identity Delegation 
&lt;li&gt;
Web Application With Multiple SignIn Methods 
&lt;li&gt;
Federation Metadata&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
Extensibility
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
Claims Aware AJAX Application 
&lt;li&gt;
Convert Claims To NT Token 
&lt;li&gt;
Customizing Request Security Token 
&lt;li&gt;
Customizing Token 
&lt;li&gt;
WSTrustChannel 
&lt;li&gt;
Claims-based Authorization&lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
All of the samples I’ve run through so far are great. The only thing that I’m not
in love with is all the XML required to wire this stuff up. Maybe some Juval-style
extensions would make it less painful.
&lt;/p&gt;
&lt;p&gt;
One more thing… it looks like all of the XP users will finally have to upgrade. WIF
only works with Vista, Win7, and Win2008. I heard that Win2003 compatibility will
arrive in December.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://msdn.microsoft.com/en-us/evalcenter/dd440951.aspx" target="_blank"&gt;Download
Windows Identity Foundation&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.microsoft.com/downloads/info.aspx?na=47&amp;amp;p=1&amp;amp;SrcDisplayLang=en&amp;amp;SrcCategoryId=&amp;amp;SrcFamilyId=eb9c345f-e830-40b8-a5fe-ae7a864c4d76&amp;amp;u=details.aspx%3ffamilyid%3dC148B2DF-C7AF-46BB-9162-2C9422208504%26displaylang%3den" target="_blank"&gt;Download
Windows Identity Foundation SDK&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://offroadcoder.com/aggbug.ashx?id=3331f559-3440-430f-a4c0-f18f5e90346f" /&gt;</description>
      <comments>http://offroadcoder.com/CommentView,guid,3331f559-3440-430f-a4c0-f18f5e90346f.aspx</comments>
      <category>.NET Framework</category>
      <category>AJAX</category>
      <category>ASP.NET</category>
      <category>C#</category>
      <category>WCF</category>
      <category>WIF</category>
    </item>
    <item>
      <trackback:ping>http://offroadcoder.com/Trackback.aspx?guid=cfeeb9f7-2a9e-40a5-99ce-dea714e3284d</trackback:ping>
      <pingback:server>http://offroadcoder.com/pingback.aspx</pingback:server>
      <pingback:target>http://offroadcoder.com/PermaLink,guid,cfeeb9f7-2a9e-40a5-99ce-dea714e3284d.aspx</pingback:target>
      <dc:creator>Scott Klueppel</dc:creator>
      <georss:point>30.109017 -81.497099</georss:point>
      <wfw:comment>http://offroadcoder.com/CommentView,guid,cfeeb9f7-2a9e-40a5-99ce-dea714e3284d.aspx</wfw:comment>
      <wfw:commentRss>http://offroadcoder.com/SyndicationService.asmx/GetEntryCommentsRss?guid=cfeeb9f7-2a9e-40a5-99ce-dea714e3284d</wfw:commentRss>
      <slash:comments>9</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
WCF never ceases to amaze me. Around every corner is another fascinating use for WCF,
and much forethought on Microsoft's part to make it look and behave great. I wanted
to expose my services to my AJAX functions on my web site. I did not want to change
my class library because it is used by other clients. I could just add the service
classes to this web site, but why re-do when you can re-use.
</p>
        <p>
If you have an existing WCF Service Library, you will need to expose it with the <font color="#0000ff">AspNetCompatibilityRequirementsMode</font>.Allowed
attribute on the service class to make it visible to ASP.NET clients. To avoid changing
your service library in any way, the easiest thing to do is to add a new class to
your web site that inherits from your service class. In this example, my existing
service library uses the <em>JeepServices</em> namespace. Notice there is no implementation
in this class. It is simply a placeholder for the real service implementation with
the compatibility attribute attached.
</p>
        <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 Linq\cf3 ;\par ??\cf1 {\b using}\cf3  \cf4 System\cf3 .\cf4 Runtime\cf3 .\cf4 Serialization\cf3 ;\par ??\cf1 {\b using}\cf3  \cf4 System\cf3 .\cf4 ServiceModel\cf3 ;\par ??\cf1 {\b using}\cf3  \cf4 System\cf3 .\cf4 ServiceModel\cf3 .\cf4 Activation\cf3 ;\par ??\cf1 {\b using}\cf3  \cf4 System\cf3 .\cf4 ServiceModel\cf3 .\cf4 Web\cf3 ;\par ??\par ??[\cf5 ServiceBehavior\cf3 (\cf4 IncludeExceptionDetailInFaults\cf3  = \cf1 {\b true}\cf3 )]\par ??[\cf5 AspNetCompatibilityRequirements\cf3 (\cf4 RequirementsMode\cf3  = \cf5 AspNetCompatibilityRequirementsMode\cf3 .\cf4 Allowed\cf3 )]\par ??\cf1 {\b public}\cf3  \cf1 {\b class}\cf3  \cf5 WebHttpService\cf3  : \cf4 JeepServices\cf3 .\cf5 Service\par ??\cf3 \{\par ??\}}
-->
        </p>
        <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 .\cf4 ServiceModel\cf3 ;\par ??\cf1 {\b using}\cf3  \cf4 System\cf3 .\cf4 ServiceModel\cf3 .\cf4 Activation\cf3 ;\par ??\par ??[\cf5 ServiceBehavior\cf3 (\cf4 IncludeExceptionDetailInFaults\cf3  = \cf1 {\b true}\cf3 )]\par ??[\cf5 AspNetCompatibilityRequirements\cf3 (\cf4 RequirementsMode\cf3  = \cf5 AspNetCompatibilityRequirementsMode\cf3 .\cf4 Allowed\cf3 )]\par ??\cf1 {\b public}\cf3  \cf1 {\b class}\cf3  \cf5 WebHttpService\cf3  : \cf4 JeepServices\cf3 .\cf5 Service\par ??\cf3 \{\par ??\}}
-->
        </p>
        <div style="font-size: 9pt; background: #3f3f3f; width: 817px; color: #dcdccc; font-family: consolas; height: 126px">
          <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>.<span style="color: #dfdfbf">ServiceModel</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">ServiceModel</span>.<span style="color: #dfdfbf">Activation</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="color: #2b91af">ServiceBehavior</span>]
</p>
          <p style="margin: 0px">
            <span style="color: #85ac8d">    5</span> [<span style="color: #2b91af">AspNetCompatibilityRequirements</span>(<span style="color: #dfdfbf">RequirementsMode</span> = <span style="color: #2b91af">AspNetCompatibilityRequirementsMode</span>.<span style="color: #dfdfbf">Allowed</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">class</span><span style="color: #2b91af">WebHttpService</span> : <span style="color: #dfdfbf">JeepServices</span>.<span style="color: #2b91af">Service</span></p>
          <p style="margin: 0px">
            <span style="color: #85ac8d">    7</span> {
</p>
          <p style="margin: 0px">
            <span style="color: #85ac8d">    8</span> }
</p>
        </div>
        <p>
        </p>
        <p>
Now that I have a ASP.NET compatible service, I need to expose it to the web site
clients. Create a service file (.svc), and change the <em>Service</em> and <em>CodeBehind</em> attributes
to point to the .svc file. The last thing you need is the <em>Factory</em> attribute.
This notifies WCF of this service, eliminating the need for a configuration file entry
for the service endpoint. In fact, you don't even need the &lt;system.servicemodel&gt;
in your configuration file at all. This is because it is only hosted as a web script,
and cannot be called outside of the web site.
</p>
        <p>
          <!--
{\rtf1\ansi\ansicpg\lang1024\noproof65001\uc1 \deff0{\fonttbl{\f0\fnil\fcharset0\fprq1 Consolas;}}{\colortbl;??\red0\green0\blue0;\red255\green238\blue98;\red239\green239\blue143;\red63\green63\blue63;\red220\green220\blue204;\red227\green206\blue171;\red223\green223\blue191;\red204\green147\blue147;}??\fs18 \cb2\highlight2 &lt;%\cf3\cb4\highlight4 @\cf5  \cf6 ServiceHost\cf5  \cf7 Language\cf3 =\cf8 "C#"\cf5  \cf7 Debug\cf3 =\cf8 "true"\cf5  \cf7 Service\cf3 =\cf8 "WebHttpService"\cf5  \cf7 CodeBehind\cf3 =\cf8 "~/App_Code/WebHttpService.cs"\par ??\cf5 \tab \cf7 Factory\cf3 =\cf8 "System.ServiceModel.Activation.WebScriptServiceHostFactory"\cf5  \cf0\cb2\highlight2 %&gt;}
-->
        </p>
        <div style="font-size: 9pt; background: #3f3f3f; width: 816px; color: #dcdccc; font-family: consolas; height: 43px">
          <p style="margin: 0px">
            <span style="color: #85ac8d">    1</span> <span style="background: #ffee62">&lt;%</span><span style="color: #efef8f">@</span><span style="color: #e3ceab">ServiceHost</span><span style="color: #dfdfbf">Language</span><span style="color: #efef8f">=</span><span style="color: #cc9393">"C#"</span><span style="color: #dfdfbf">Debug</span><span style="color: #efef8f">=</span><span style="color: #cc9393">"true"</span><span style="color: #dfdfbf">Service</span><span style="color: #efef8f">=</span><span style="color: #cc9393">"WebHttpService"</span><span style="color: #dfdfbf">CodeBehind</span><span style="color: #efef8f">=</span><span style="color: #cc9393">"~/App_Code/WebHttpService.cs"</span></p>
          <p style="margin: 0px">
            <span style="color: #85ac8d">    2</span>     <span style="color: #dfdfbf">Factory</span><span style="color: #efef8f">=</span><span style="color: #cc9393">"System.ServiceModel.Activation.WebScriptServiceHostFactory"</span><span style="background: #ffee62">%&gt;</span></p>
        </div>
        <p>
 
</p>
        <p>
In your web page you will need a few things. First your will need a <em>ScriptManager</em> with
a <em>ServiceReference</em> to the .svc file. You will then need the Javascript functions
to make the call (<em>DoJeepWork</em>), handle the success message (<em>OnJeepWorkSucceeded</em>),
and handle the failure message (<em>OnJeepWorkFailed</em>). Notice in <em>DoJeepWork</em> that
you don't call the service by it's service name <em>WebHttpService</em>, you call
it by the ServiceContract namespace and name. For this example, my interface has ServiceContract
attributes Namespace = "JeepServices", and Name = "JeepServiceContract". Now you just
wire up a ASP.NET control's OnClientClick or an input or anchor tag's onclick to <em>DoJeepWork()</em> and
you are good to go.
</p>
        <p>
          <!--
{\rtf1\ansi\ansicpg\lang1024\noproof65001\uc1 \deff0{\fonttbl{\f0\fnil\fcharset0\fprq1 Consolas;}}{\colortbl;??\red0\green0\blue0;\red255\green238\blue98;\red239\green239\blue143;\red63\green63\blue63;\red220\green220\blue204;\red227\green206\blue171;\red223\green223\blue191;\red204\green147\blue147;\red225\green225\blue138;\red200\green145\blue145;\red127\green159\blue127;}??\fs18 \cb2\highlight2 &lt;%\cf3\cb4\highlight4 @\cf5  \cf6 Page\cf5  \cf7 Language\cf3 =\cf8 "C#"\cf5  \cf7 AutoEventWireup\cf3 =\cf8 "true"\cf5  \cf7 CodeFile\cf3 =\cf8 "Default.aspx.cs"\cf5  \cf7 Inherits\cf3 =\cf8 "_Default"\cf5  \cf0\cb2\highlight2 %&gt;\par ??\par ??\cf3\cb4\highlight4 &lt;!\cf6 DOCTYPE\cf5  \cf7 html\cf5  \cf7 PUBLIC\cf5  \cf8 "-//W3C//DTD XHTML 1.0 Transitional//EN"\cf5  \cf8 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"\cf3 &gt;\par ??&lt;\cf6 html\cf5  \cf7 xmlns\cf3 =\cf8 "http://www.w3.org/1999/xhtml"\cf3 &gt;\par ??&lt;\cf6 head\cf5  \cf7 runat\cf3 =\cf8 "server"\cf3 &gt;\par ??\cf5 \tab \cf3 &lt;\cf6 title\cf3 &gt;\cf5 Test page\cf3 &lt;/\cf6 title\cf3 &gt;\par ??\par ??\cf5 \tab \cf3 &lt;\cf6 script\cf5  \cf7 type\cf3 =\cf8 "text/javascript"\cf3 &gt;\par ??\cf5 \tab \tab \cf9 {\b function}\cf5  \cf7 DoJeepWork\cf5 ()\par ??\tab \tab \{    \par ??\tab \tab \tab \cf7 JeepServices\cf5 .\cf7 JeepServiceContract\cf5 .\cf7 DoWork\cf5 (\cf7 OnJeepWorkSuccedeed\cf5 , \cf7 OnJeepWorkFailed\cf5 );\par ??\tab \tab \}\par ??\tab \tab \cf9 {\b function}\cf5  \cf7 OnJeepWorkSuccedeed\cf5 (\cf7 res\cf5 )\par ??\tab \tab \{\par ??\tab \tab \tab \cf7 document\cf5 .\cf7 getElementById\cf5 (\cf10 "&lt;%= this.lblMessage.ClientID %&gt;"\cf5 ).\cf7 innerText\cf5  = \cf7 res\cf5 ;\par ??\tab \tab \}\par ??\tab \tab \cf9 {\b function}\cf5  \cf7 OnJeepWorkFailed\cf5 (\cf7 error\cf5 )\par ??\tab \tab \{\par ??\tab \tab     \cf11 // Alert user to the error.    \par ??\cf5 \tab \tab     \cf7 alert\cf5 (\cf7 error\cf5 .\cf7 get_message\cf5 ());\par ??\tab \tab \}\par ??\tab \cf3 &lt;/\cf6 script\cf3 &gt;\par ??\par ??&lt;/\cf6 head\cf3 &gt;\par ??&lt;\cf6 body\cf3 &gt;\par ??\cf5 \tab \cf3 &lt;\cf6 form\cf5  \cf7 id\cf3 =\cf8 "form1"\cf5  \cf7 runat\cf3 =\cf8 "server"\cf3 &gt;\par ??\cf5 \tab \cf3 &lt;\cf6 div\cf3 &gt;\par ??\cf5 \tab \tab \cf3 &lt;\cf6 asp\cf3 :\cf6 ScriptManager\cf5  \cf7 runat\cf3 =\cf8 "server"\cf3 &gt;\par ??\cf5 \tab \tab \tab \cf3 &lt;\cf6 Services\cf3 &gt;\par ??\cf5 \tab \tab \tab \tab \cf3 &lt;\cf6 asp\cf3 :\cf6 ServiceReference\cf5  \cf7 Path\cf3 =\cf8 "~/Services/WebHttpService.svc"\cf5  \cf7 InlineScript\cf3 =\cf8 "false"\cf5  \cf3 /&gt;\par ??\cf5 \tab \tab \tab \cf3 &lt;/\cf6 Services\cf3 &gt;\par ??\cf5 \tab \tab \cf3 &lt;/\cf6 asp\cf3 :\cf6 ScriptManager\cf3 &gt;\par ??\cf5 \tab \tab \cf3 &lt;\cf6 asp\cf3 :\cf6 Label\cf5  \cf7 ID\cf3 =\cf8 "lblMessage"\cf5  \cf7 runat\cf3 =\cf8 "server"\cf5  \cf7 Text\cf3 =\cf8 "No work has been done"\cf5  \cf3 /&gt;\cf5  \cf3 &lt;\cf6 a\cf5  \cf7 href\cf3 =\cf8 "javascript:void(0); DoJeepWork()"\cf3 &gt;\cf5 Do Work\cf3 &lt;/\cf6 a\cf3 &gt;\par ??\cf5 \tab \cf3 &lt;/\cf6 div\cf3 &gt;\par ??\cf5 \tab \cf3 &lt;/\cf6 form\cf3 &gt;\par ??&lt;/\cf6 body\cf3 &gt;\par ??&lt;/\cf6 html\cf3 &gt;}
-->
        </p>
        <p>
        </p>
        <p>
          <!--
{\rtf1\ansi\ansicpg\lang1024\noproof65001\uc1 \deff0{\fonttbl{\f0\fnil\fcharset0\fprq1 Consolas;}}{\colortbl;??\red0\green0\blue0;\red255\green238\blue98;\red239\green239\blue143;\red63\green63\blue63;\red220\green220\blue204;\red227\green206\blue171;\red223\green223\blue191;\red204\green147\blue147;\red225\green225\blue138;\red200\green145\blue145;\red127\green159\blue127;}??\fs18 \cb2\highlight2 &lt;%\cf3\cb4\highlight4 @\cf5  \cf6 Page\cf5  \cf7 Language\cf3 =\cf8 "C#"\cf5  \cf7 AutoEventWireup\cf3 =\cf8 "true"\cf5  \cf7 CodeFile\cf3 =\cf8 "Default.aspx.cs"\cf5  \cf7 Inherits\cf3 =\cf8 "_Default"\cf5  \cf0\cb2\highlight2 %&gt;\par ??\par ??\cf3\cb4\highlight4 &lt;!\cf6 DOCTYPE\cf5  \cf7 html\cf5  \cf7 PUBLIC\cf5  \cf8 "-//W3C//DTD XHTML 1.0 Transitional//EN"\par ??"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"\cf3 &gt;\par ??&lt;\cf6 html\cf5  \cf7 xmlns\cf3 =\cf8 "http://www.w3.org/1999/xhtml"\cf3 &gt;\par ??&lt;\cf6 head\cf5  \cf7 runat\cf3 =\cf8 "server"\cf3 &gt;\par ??\cf5 \tab \cf3 &lt;\cf6 title\cf3 &gt;\cf5 Test page\cf3 &lt;/\cf6 title\cf3 &gt;\par ??\par ??\cf5 \tab \cf3 &lt;\cf6 script\cf5  \cf7 type\cf3 =\cf8 "text/javascript"\cf3 &gt;\par ??\cf5 \tab \tab \cf9 {\b function}\cf5  \cf7 DoJeepWork\cf5 () \{\par ??\tab \tab \tab \cf7 JeepServices\cf5 .\cf7 JeepServiceContract\cf5 .\cf7 DoWork\cf5 (\cf7 OnJeepWorkSuccedeed\cf5 , \cf7 OnJeepWorkFailed\cf5 );\par ??\tab \tab \}\par ??\tab \tab \cf9 {\b function}\cf5  \cf7 OnJeepWorkSuccedeed\cf5 (\cf7 res\cf5 ) \{\par ??\tab \tab \tab \cf7 document\cf5 .\cf7 getElementById\cf5 (\cf10 "&lt;%= this.lblMessage.ClientID %&gt;"\cf5 ).\cf7 innerText\cf5  = \cf7 res\cf5 ;\par ??\tab \tab \}\par ??\tab \tab \cf9 {\b function}\cf5  \cf7 OnJeepWorkFailed\cf5 (\cf7 error\cf5 ) \{\par ??\tab \tab \tab \cf11 // Alert user to the error.    \par ??\cf5 \tab \tab \tab \cf7 alert\cf5 (\cf7 error\cf5 .\cf7 get_message\cf5 ());\par ??\tab \tab \}\par ??\tab \cf3 &lt;/\cf6 script\cf3 &gt;\par ??\par ??&lt;/\cf6 head\cf3 &gt;\par ??&lt;\cf6 body\cf3 &gt;\par ??\cf5 \tab \cf3 &lt;\cf6 form\cf5  \cf7 id\cf3 =\cf8 "form1"\cf5  \cf7 runat\cf3 =\cf8 "server"\cf3 &gt;\par ??\cf5 \tab \cf3 &lt;\cf6 div\cf3 &gt;\par ??\cf5 \tab \tab \cf3 &lt;\cf6 asp\cf3 :\cf6 ScriptManager\cf5  \cf7 runat\cf3 =\cf8 "server"\cf3 &gt;\par ??\cf5 \tab \tab \tab \cf3 &lt;\cf6 Services\cf3 &gt;\par ??\cf5 \tab \tab \tab \tab \cf3 &lt;\cf6 asp\cf3 :\cf6 ServiceReference\cf5  \cf7 Path\cf3 =\cf8 "~/Services/WebHttpService.svc"\cf5  \cf7 InlineScript\cf3 =\cf8 "false"\cf5  \cf3 /&gt;\par ??\cf5 \tab \tab \tab \cf3 &lt;/\cf6 Services\cf3 &gt;\par ??\cf5 \tab \tab \cf3 &lt;/\cf6 asp\cf3 :\cf6 ScriptManager\cf3 &gt;\par ??\cf5 \tab \tab \cf3 &lt;\cf6 asp\cf3 :\cf6 Label\cf5  \cf7 ID\cf3 =\cf8 "lblMessage"\cf5  \cf7 runat\cf3 =\cf8 "server"\cf5  \cf7 Text\cf3 =\cf8 "No work has been done"\cf5  \cf3 /&gt;\par ??\cf5 \tab \tab \cf3 &lt;\cf6 a\cf5  \cf7 href\cf3 =\cf8 "javascript:void(0); DoJeepWork()"\cf3 &gt;\cf5 Do Work\cf3 &lt;/\cf6 a\cf3 &gt;\par ??\cf5 \tab \cf3 &lt;/\cf6 div\cf3 &gt;\par ??\cf5 \tab \cf3 &lt;/\cf6 form\cf3 &gt;\par ??&lt;/\cf6 body\cf3 &gt;\par ??&lt;/\cf6 html\cf3 &gt;\par ??}
-->
        </p>
        <div style="font-size: 9pt; background: #3f3f3f; width: 819px; color: #dcdccc; font-family: consolas; height: 519px">
          <p style="margin: 0px">
            <span style="color: #85ac8d">    1</span> <span style="background: #ffee62">&lt;%</span><span style="color: #efef8f">@</span><span style="color: #e3ceab">Page</span><span style="color: #dfdfbf">Language</span><span style="color: #efef8f">=</span><span style="color: #cc9393">"C#"</span><span style="color: #dfdfbf">AutoEventWireup</span><span style="color: #efef8f">=</span><span style="color: #cc9393">"true"</span><span style="color: #dfdfbf">CodeFile</span><span style="color: #efef8f">=</span><span style="color: #cc9393">"Default.aspx.cs"</span><span style="color: #dfdfbf">Inherits</span><span style="color: #efef8f">=</span><span style="color: #cc9393">"_Default"</span><span style="background: #ffee62">%&gt;</span></p>
          <p style="margin: 0px">
            <span style="color: #85ac8d">    2</span> 
</p>
          <p style="margin: 0px">
            <span style="color: #85ac8d">    3</span> <span style="color: #efef8f">&lt;!</span><span style="color: #e3ceab">DOCTYPE</span><span style="color: #dfdfbf">html</span><span style="color: #dfdfbf">PUBLIC</span><span style="color: #cc9393">"-//W3C//DTD
XHTML 1.0 Transitional//EN"</span></p>
          <p style="margin: 0px">
            <span style="color: #85ac8d">    4</span> <span style="color: #cc9393">"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"</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: #e3ceab">html</span><span style="color: #dfdfbf">xmlns</span><span style="color: #efef8f">=</span><span style="color: #cc9393">"http://www.w3.org/1999/xhtml"</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: #e3ceab">head</span><span style="color: #dfdfbf">runat</span><span style="color: #efef8f">=</span><span style="color: #cc9393">"server"</span><span style="color: #efef8f">&gt;</span></p>
          <p style="margin: 0px">
            <span style="color: #85ac8d">    7</span>     <span style="color: #efef8f">&lt;</span><span style="color: #e3ceab">title</span><span style="color: #efef8f">&gt;</span>Test
page<span style="color: #efef8f">&lt;/</span><span style="color: #e3ceab">title</span><span style="color: #efef8f">&gt;</span></p>
          <p style="margin: 0px">
            <span style="color: #85ac8d">    8</span> 
</p>
          <p style="margin: 0px">
            <span style="color: #85ac8d">    9</span>     <span style="color: #efef8f">&lt;</span><span style="color: #e3ceab">script</span><span style="color: #dfdfbf">type</span><span style="color: #efef8f">=</span><span style="color: #cc9393">"text/javascript"</span><span style="color: #efef8f">&gt;</span></p>
          <p style="margin: 0px">
            <span style="color: #85ac8d">   10</span>         <span style="font-weight: bold; color: #e1e18a">function</span><span style="color: #dfdfbf">DoJeepWork</span>()
{
</p>
          <p style="margin: 0px">
            <span style="color: #85ac8d">   11</span>             <span style="color: #dfdfbf">JeepServices</span>.<span style="color: #dfdfbf">JeepServiceContract</span>.<span style="color: #dfdfbf">DoWork</span>(<span style="color: #dfdfbf">OnJeepWorkSuccedeed</span>, <span style="color: #dfdfbf">OnJeepWorkFailed</span>);
</p>
          <p style="margin: 0px">
            <span style="color: #85ac8d">   12</span>        
}
</p>
          <p style="margin: 0px">
            <span style="color: #85ac8d">   13</span>         <span style="font-weight: bold; color: #e1e18a">function</span><span style="color: #dfdfbf">OnJeepWorkSuccedeed</span>(<span style="color: #dfdfbf">res</span>)
{
</p>
          <p style="margin: 0px">
            <span style="color: #85ac8d">   14</span>             <span style="color: #dfdfbf">document</span>.<span style="color: #dfdfbf">getElementById</span>(<span style="color: #c89191">"&lt;%=
this.lblMessage.ClientID %&gt;"</span>).<span style="color: #dfdfbf">innerText</span> = <span style="color: #dfdfbf">res</span>;
</p>
          <p style="margin: 0px">
            <span style="color: #85ac8d">   15</span>        
}
</p>
          <p style="margin: 0px">
            <span style="color: #85ac8d">   16</span>         <span style="font-weight: bold; color: #e1e18a">function</span><span style="color: #dfdfbf">OnJeepWorkFailed</span>(<span style="color: #dfdfbf">error</span>)
{
</p>
          <p style="margin: 0px">
            <span style="color: #85ac8d">   17</span>             <span style="color: #7f9f7f">//
Alert user to the error.    </span></p>
          <p style="margin: 0px">
            <span style="color: #85ac8d">   18</span>             <span style="color: #dfdfbf">alert</span>(<span style="color: #dfdfbf">error</span>.<span style="color: #dfdfbf">get_message</span>());
</p>
          <p style="margin: 0px">
            <span style="color: #85ac8d">   19</span>        
}
</p>
          <p style="margin: 0px">
            <span style="color: #85ac8d">   20</span>     <span style="color: #efef8f">&lt;/</span><span style="color: #e3ceab">script</span><span style="color: #efef8f">&gt;</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: #efef8f">&lt;/</span><span style="color: #e3ceab">head</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: #e3ceab">body</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: #e3ceab">form</span><span style="color: #dfdfbf">id</span><span style="color: #efef8f">=</span><span style="color: #cc9393">"form1"</span><span style="color: #dfdfbf">runat</span><span style="color: #efef8f">=</span><span style="color: #cc9393">"server"</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: #e3ceab">div</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: #e3ceab">asp</span><span style="color: #efef8f">:</span><span style="color: #e3ceab">ScriptManager</span><span style="color: #dfdfbf">runat</span><span style="color: #efef8f">=</span><span style="color: #cc9393">"server"</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: #e3ceab">Services</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: #e3ceab">asp</span><span style="color: #efef8f">:</span><span style="color: #e3ceab">ServiceReference</span><span style="color: #dfdfbf">Path</span><span style="color: #efef8f">=</span><span style="color: #cc9393">"~/Services/WebHttpService.svc"</span><span style="color: #dfdfbf">InlineScript</span><span style="color: #efef8f">=</span><span style="color: #cc9393">"false"</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: #e3ceab">Services</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: #e3ceab">asp</span><span style="color: #efef8f">:</span><span style="color: #e3ceab">ScriptManager</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: #e3ceab">asp</span><span style="color: #efef8f">:</span><span style="color: #e3ceab">Label</span><span style="color: #dfdfbf">ID</span><span style="color: #efef8f">=</span><span style="color: #cc9393">"lblMessage"</span><span style="color: #dfdfbf">runat</span><span style="color: #efef8f">=</span><span style="color: #cc9393">"server"</span><span style="color: #dfdfbf">Text</span><span style="color: #efef8f">=</span><span style="color: #cc9393">"No
work has been done"</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: #e3ceab">a</span><span style="color: #dfdfbf">href</span><span style="color: #efef8f">=</span><span style="color: #cc9393">"javascript:void(0);
DoJeepWork()"</span><span style="color: #efef8f">&gt;</span>Do Work<span style="color: #efef8f">&lt;/</span><span style="color: #e3ceab">a</span><span style="color: #efef8f">&gt;</span></p>
          <p style="margin: 0px">
            <span style="color: #85ac8d">   33</span>     <span style="color: #efef8f">&lt;/</span><span style="color: #e3ceab">div</span><span style="color: #efef8f">&gt;</span></p>
          <p style="margin: 0px">
            <span style="color: #85ac8d">   34</span>     <span style="color: #efef8f">&lt;/</span><span style="color: #e3ceab">form</span><span style="color: #efef8f">&gt;</span></p>
          <p style="margin: 0px">
            <span style="color: #85ac8d">   35</span> <span style="color: #efef8f">&lt;/</span><span style="color: #e3ceab">body</span><span style="color: #efef8f">&gt;</span></p>
          <p style="margin: 0px">
            <span style="color: #85ac8d">   36</span> <span style="color: #efef8f">&lt;/</span><span style="color: #e3ceab">html</span><span style="color: #efef8f">&gt;</span></p>
        </div>
        <p>
 
</p>
        <p>
Mission accomplished! Here you've seen how to expose an existing WCF service library
without changing any code in the library itself. Adding two files allowed the service
to be exposed to your AJAX clients. Best of all, there is no configuration file changes
to make.
</p>
        <p>
        </p>
        <p>
Useful Links:
</p>
        <ul>
          <li>
            <a href="http://msdn.microsoft.com/en-us/library/bb514961.aspx">Exposing WCF Services
to Client Script</a>
          </li>
        </ul>
        <img width="0" height="0" src="http://offroadcoder.com/aggbug.ashx?id=cfeeb9f7-2a9e-40a5-99ce-dea714e3284d" />
      </body>
      <title>Exposing existing WCF services to ASP.NET AJAX clients</title>
      <guid isPermaLink="false">http://offroadcoder.com/PermaLink,guid,cfeeb9f7-2a9e-40a5-99ce-dea714e3284d.aspx</guid>
      <link>http://offroadcoder.com/2008/09/21/ExposingExistingWCFServicesToASPNETAJAXClients.aspx</link>
      <pubDate>Sun, 21 Sep 2008 16:21:24 GMT</pubDate>
      <description>&lt;p&gt;
WCF never ceases to amaze me. Around every corner is another fascinating use for WCF,
and much forethought on Microsoft's part to make it look and behave great. I wanted
to expose my services to my AJAX functions on my web site. I did not want to change
my class library because it is used by other clients. I could just add the service
classes to this web site, but why re-do when you can re-use.
&lt;/p&gt;
&lt;p&gt;
If you have an existing WCF Service Library, you will need to expose it with the &lt;font color="#0000ff"&gt;AspNetCompatibilityRequirementsMode&lt;/font&gt;.Allowed
attribute on the service class to make it visible to ASP.NET clients. To avoid changing
your service library in any way, the easiest thing to do is to add a new class to
your web site that inherits from your service class. In this example, my existing
service library uses the &lt;em&gt;JeepServices&lt;/em&gt; namespace. Notice there is no implementation
in this class. It is simply a placeholder for the real service implementation with
the compatibility attribute attached.
&lt;/p&gt;
&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 Linq\cf3 ;\par ??\cf1 {\b using}\cf3  \cf4 System\cf3 .\cf4 Runtime\cf3 .\cf4 Serialization\cf3 ;\par ??\cf1 {\b using}\cf3  \cf4 System\cf3 .\cf4 ServiceModel\cf3 ;\par ??\cf1 {\b using}\cf3  \cf4 System\cf3 .\cf4 ServiceModel\cf3 .\cf4 Activation\cf3 ;\par ??\cf1 {\b using}\cf3  \cf4 System\cf3 .\cf4 ServiceModel\cf3 .\cf4 Web\cf3 ;\par ??\par ??[\cf5 ServiceBehavior\cf3 (\cf4 IncludeExceptionDetailInFaults\cf3  = \cf1 {\b true}\cf3 )]\par ??[\cf5 AspNetCompatibilityRequirements\cf3 (\cf4 RequirementsMode\cf3  = \cf5 AspNetCompatibilityRequirementsMode\cf3 .\cf4 Allowed\cf3 )]\par ??\cf1 {\b public}\cf3  \cf1 {\b class}\cf3  \cf5 WebHttpService\cf3  : \cf4 JeepServices\cf3 .\cf5 Service\par ??\cf3 \{\par ??\}}
--&gt;
&lt;/p&gt;
&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 .\cf4 ServiceModel\cf3 ;\par ??\cf1 {\b using}\cf3  \cf4 System\cf3 .\cf4 ServiceModel\cf3 .\cf4 Activation\cf3 ;\par ??\par ??[\cf5 ServiceBehavior\cf3 (\cf4 IncludeExceptionDetailInFaults\cf3  = \cf1 {\b true}\cf3 )]\par ??[\cf5 AspNetCompatibilityRequirements\cf3 (\cf4 RequirementsMode\cf3  = \cf5 AspNetCompatibilityRequirementsMode\cf3 .\cf4 Allowed\cf3 )]\par ??\cf1 {\b public}\cf3  \cf1 {\b class}\cf3  \cf5 WebHttpService\cf3  : \cf4 JeepServices\cf3 .\cf5 Service\par ??\cf3 \{\par ??\}}
--&gt;
&lt;/p&gt;
&lt;div style="font-size: 9pt; background: #3f3f3f; width: 817px; color: #dcdccc; font-family: consolas; height: 126px"&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;span style="color: #dfdfbf"&gt;ServiceModel&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;ServiceModel&lt;/span&gt;.&lt;span style="color: #dfdfbf"&gt;Activation&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; [&lt;span style="color: #2b91af"&gt;ServiceBehavior&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;span style="color: #2b91af"&gt;AspNetCompatibilityRequirements&lt;/span&gt;(&lt;span style="color: #dfdfbf"&gt;RequirementsMode&lt;/span&gt; = &lt;span style="color: #2b91af"&gt;AspNetCompatibilityRequirementsMode&lt;/span&gt;.&lt;span style="color: #dfdfbf"&gt;Allowed&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="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;WebHttpService&lt;/span&gt; : &lt;span style="color: #dfdfbf"&gt;JeepServices&lt;/span&gt;.&lt;span style="color: #2b91af"&gt;Service&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; {
&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; }
&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
Now that I have a ASP.NET compatible service, I need to expose it to the web site
clients. Create a service file (.svc), and change the &lt;em&gt;Service&lt;/em&gt; and &lt;em&gt;CodeBehind&lt;/em&gt; attributes
to point to the .svc file. The last thing you need is the &lt;em&gt;Factory&lt;/em&gt; attribute.
This notifies WCF of this service, eliminating the need for a configuration file entry
for the service endpoint. In fact, you don't even need the &amp;lt;system.servicemodel&amp;gt;
in your configuration file at all. This is because it is only hosted as a web script,
and cannot be called outside of the web site.
&lt;/p&gt;
&lt;p&gt;
&lt;!--
{\rtf1\ansi\ansicpg\lang1024\noproof65001\uc1 \deff0{\fonttbl{\f0\fnil\fcharset0\fprq1 Consolas;}}{\colortbl;??\red0\green0\blue0;\red255\green238\blue98;\red239\green239\blue143;\red63\green63\blue63;\red220\green220\blue204;\red227\green206\blue171;\red223\green223\blue191;\red204\green147\blue147;}??\fs18 \cb2\highlight2 &amp;lt;%\cf3\cb4\highlight4 @\cf5  \cf6 ServiceHost\cf5  \cf7 Language\cf3 =\cf8 "C#"\cf5  \cf7 Debug\cf3 =\cf8 "true"\cf5  \cf7 Service\cf3 =\cf8 "WebHttpService"\cf5  \cf7 CodeBehind\cf3 =\cf8 "~/App_Code/WebHttpService.cs"\par ??\cf5 \tab \cf7 Factory\cf3 =\cf8 "System.ServiceModel.Activation.WebScriptServiceHostFactory"\cf5  \cf0\cb2\highlight2 %&amp;gt;}
--&gt;
&lt;/p&gt;
&lt;div style="font-size: 9pt; background: #3f3f3f; width: 816px; color: #dcdccc; font-family: consolas; height: 43px"&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="background: #ffee62"&gt;&amp;lt;%&lt;/span&gt;&lt;span style="color: #efef8f"&gt;@&lt;/span&gt; &lt;span style="color: #e3ceab"&gt;ServiceHost&lt;/span&gt; &lt;span style="color: #dfdfbf"&gt;Language&lt;/span&gt;&lt;span style="color: #efef8f"&gt;=&lt;/span&gt;&lt;span style="color: #cc9393"&gt;"C#"&lt;/span&gt; &lt;span style="color: #dfdfbf"&gt;Debug&lt;/span&gt;&lt;span style="color: #efef8f"&gt;=&lt;/span&gt;&lt;span style="color: #cc9393"&gt;"true"&lt;/span&gt; &lt;span style="color: #dfdfbf"&gt;Service&lt;/span&gt;&lt;span style="color: #efef8f"&gt;=&lt;/span&gt;&lt;span style="color: #cc9393"&gt;"WebHttpService"&lt;/span&gt; &lt;span style="color: #dfdfbf"&gt;CodeBehind&lt;/span&gt;&lt;span style="color: #efef8f"&gt;=&lt;/span&gt;&lt;span style="color: #cc9393"&gt;"~/App_Code/WebHttpService.cs"&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #dfdfbf"&gt;Factory&lt;/span&gt;&lt;span style="color: #efef8f"&gt;=&lt;/span&gt;&lt;span style="color: #cc9393"&gt;"System.ServiceModel.Activation.WebScriptServiceHostFactory"&lt;/span&gt; &lt;span style="background: #ffee62"&gt;%&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
In your web page you will need a few things. First your will need a &lt;em&gt;ScriptManager&lt;/em&gt; with
a &lt;em&gt;ServiceReference&lt;/em&gt; to the .svc file. You will then need the Javascript functions
to make the call (&lt;em&gt;DoJeepWork&lt;/em&gt;), handle the success message (&lt;em&gt;OnJeepWorkSucceeded&lt;/em&gt;),
and handle the failure message (&lt;em&gt;OnJeepWorkFailed&lt;/em&gt;). Notice in &lt;em&gt;DoJeepWork&lt;/em&gt; that
you don't call the service by it's service name &lt;em&gt;WebHttpService&lt;/em&gt;, you call
it by the ServiceContract namespace and name. For this example, my interface has ServiceContract
attributes Namespace = "JeepServices", and Name = "JeepServiceContract". Now you just
wire up a ASP.NET control's OnClientClick or an input or anchor tag's onclick to &lt;em&gt;DoJeepWork()&lt;/em&gt; and
you are good to go.
&lt;/p&gt;
&lt;p&gt;
&lt;!--
{\rtf1\ansi\ansicpg\lang1024\noproof65001\uc1 \deff0{\fonttbl{\f0\fnil\fcharset0\fprq1 Consolas;}}{\colortbl;??\red0\green0\blue0;\red255\green238\blue98;\red239\green239\blue143;\red63\green63\blue63;\red220\green220\blue204;\red227\green206\blue171;\red223\green223\blue191;\red204\green147\blue147;\red225\green225\blue138;\red200\green145\blue145;\red127\green159\blue127;}??\fs18 \cb2\highlight2 &amp;lt;%\cf3\cb4\highlight4 @\cf5  \cf6 Page\cf5  \cf7 Language\cf3 =\cf8 "C#"\cf5  \cf7 AutoEventWireup\cf3 =\cf8 "true"\cf5  \cf7 CodeFile\cf3 =\cf8 "Default.aspx.cs"\cf5  \cf7 Inherits\cf3 =\cf8 "_Default"\cf5  \cf0\cb2\highlight2 %&amp;gt;\par ??\par ??\cf3\cb4\highlight4 &amp;lt;!\cf6 DOCTYPE\cf5  \cf7 html\cf5  \cf7 PUBLIC\cf5  \cf8 "-//W3C//DTD XHTML 1.0 Transitional//EN"\cf5  \cf8 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"\cf3 &amp;gt;\par ??&amp;lt;\cf6 html\cf5  \cf7 xmlns\cf3 =\cf8 "http://www.w3.org/1999/xhtml"\cf3 &amp;gt;\par ??&amp;lt;\cf6 head\cf5  \cf7 runat\cf3 =\cf8 "server"\cf3 &amp;gt;\par ??\cf5 \tab \cf3 &amp;lt;\cf6 title\cf3 &amp;gt;\cf5 Test page\cf3 &amp;lt;/\cf6 title\cf3 &amp;gt;\par ??\par ??\cf5 \tab \cf3 &amp;lt;\cf6 script\cf5  \cf7 type\cf3 =\cf8 "text/javascript"\cf3 &amp;gt;\par ??\cf5 \tab \tab \cf9 {\b function}\cf5  \cf7 DoJeepWork\cf5 ()\par ??\tab \tab \{    \par ??\tab \tab \tab \cf7 JeepServices\cf5 .\cf7 JeepServiceContract\cf5 .\cf7 DoWork\cf5 (\cf7 OnJeepWorkSuccedeed\cf5 , \cf7 OnJeepWorkFailed\cf5 );\par ??\tab \tab \}\par ??\tab \tab \cf9 {\b function}\cf5  \cf7 OnJeepWorkSuccedeed\cf5 (\cf7 res\cf5 )\par ??\tab \tab \{\par ??\tab \tab \tab \cf7 document\cf5 .\cf7 getElementById\cf5 (\cf10 "&amp;lt;%= this.lblMessage.ClientID %&amp;gt;"\cf5 ).\cf7 innerText\cf5  = \cf7 res\cf5 ;\par ??\tab \tab \}\par ??\tab \tab \cf9 {\b function}\cf5  \cf7 OnJeepWorkFailed\cf5 (\cf7 error\cf5 )\par ??\tab \tab \{\par ??\tab \tab     \cf11 // Alert user to the error.    \par ??\cf5 \tab \tab     \cf7 alert\cf5 (\cf7 error\cf5 .\cf7 get_message\cf5 ());\par ??\tab \tab \}\par ??\tab \cf3 &amp;lt;/\cf6 script\cf3 &amp;gt;\par ??\par ??&amp;lt;/\cf6 head\cf3 &amp;gt;\par ??&amp;lt;\cf6 body\cf3 &amp;gt;\par ??\cf5 \tab \cf3 &amp;lt;\cf6 form\cf5  \cf7 id\cf3 =\cf8 "form1"\cf5  \cf7 runat\cf3 =\cf8 "server"\cf3 &amp;gt;\par ??\cf5 \tab \cf3 &amp;lt;\cf6 div\cf3 &amp;gt;\par ??\cf5 \tab \tab \cf3 &amp;lt;\cf6 asp\cf3 :\cf6 ScriptManager\cf5  \cf7 runat\cf3 =\cf8 "server"\cf3 &amp;gt;\par ??\cf5 \tab \tab \tab \cf3 &amp;lt;\cf6 Services\cf3 &amp;gt;\par ??\cf5 \tab \tab \tab \tab \cf3 &amp;lt;\cf6 asp\cf3 :\cf6 ServiceReference\cf5  \cf7 Path\cf3 =\cf8 "~/Services/WebHttpService.svc"\cf5  \cf7 InlineScript\cf3 =\cf8 "false"\cf5  \cf3 /&amp;gt;\par ??\cf5 \tab \tab \tab \cf3 &amp;lt;/\cf6 Services\cf3 &amp;gt;\par ??\cf5 \tab \tab \cf3 &amp;lt;/\cf6 asp\cf3 :\cf6 ScriptManager\cf3 &amp;gt;\par ??\cf5 \tab \tab \cf3 &amp;lt;\cf6 asp\cf3 :\cf6 Label\cf5  \cf7 ID\cf3 =\cf8 "lblMessage"\cf5  \cf7 runat\cf3 =\cf8 "server"\cf5  \cf7 Text\cf3 =\cf8 "No work has been done"\cf5  \cf3 /&amp;gt;\cf5  \cf3 &amp;lt;\cf6 a\cf5  \cf7 href\cf3 =\cf8 "javascript:void(0); DoJeepWork()"\cf3 &amp;gt;\cf5 Do Work\cf3 &amp;lt;/\cf6 a\cf3 &amp;gt;\par ??\cf5 \tab \cf3 &amp;lt;/\cf6 div\cf3 &amp;gt;\par ??\cf5 \tab \cf3 &amp;lt;/\cf6 form\cf3 &amp;gt;\par ??&amp;lt;/\cf6 body\cf3 &amp;gt;\par ??&amp;lt;/\cf6 html\cf3 &amp;gt;}
--&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;!--
{\rtf1\ansi\ansicpg\lang1024\noproof65001\uc1 \deff0{\fonttbl{\f0\fnil\fcharset0\fprq1 Consolas;}}{\colortbl;??\red0\green0\blue0;\red255\green238\blue98;\red239\green239\blue143;\red63\green63\blue63;\red220\green220\blue204;\red227\green206\blue171;\red223\green223\blue191;\red204\green147\blue147;\red225\green225\blue138;\red200\green145\blue145;\red127\green159\blue127;}??\fs18 \cb2\highlight2 &amp;lt;%\cf3\cb4\highlight4 @\cf5  \cf6 Page\cf5  \cf7 Language\cf3 =\cf8 "C#"\cf5  \cf7 AutoEventWireup\cf3 =\cf8 "true"\cf5  \cf7 CodeFile\cf3 =\cf8 "Default.aspx.cs"\cf5  \cf7 Inherits\cf3 =\cf8 "_Default"\cf5  \cf0\cb2\highlight2 %&amp;gt;\par ??\par ??\cf3\cb4\highlight4 &amp;lt;!\cf6 DOCTYPE\cf5  \cf7 html\cf5  \cf7 PUBLIC\cf5  \cf8 "-//W3C//DTD XHTML 1.0 Transitional//EN"\par ??"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"\cf3 &amp;gt;\par ??&amp;lt;\cf6 html\cf5  \cf7 xmlns\cf3 =\cf8 "http://www.w3.org/1999/xhtml"\cf3 &amp;gt;\par ??&amp;lt;\cf6 head\cf5  \cf7 runat\cf3 =\cf8 "server"\cf3 &amp;gt;\par ??\cf5 \tab \cf3 &amp;lt;\cf6 title\cf3 &amp;gt;\cf5 Test page\cf3 &amp;lt;/\cf6 title\cf3 &amp;gt;\par ??\par ??\cf5 \tab \cf3 &amp;lt;\cf6 script\cf5  \cf7 type\cf3 =\cf8 "text/javascript"\cf3 &amp;gt;\par ??\cf5 \tab \tab \cf9 {\b function}\cf5  \cf7 DoJeepWork\cf5 () \{\par ??\tab \tab \tab \cf7 JeepServices\cf5 .\cf7 JeepServiceContract\cf5 .\cf7 DoWork\cf5 (\cf7 OnJeepWorkSuccedeed\cf5 , \cf7 OnJeepWorkFailed\cf5 );\par ??\tab \tab \}\par ??\tab \tab \cf9 {\b function}\cf5  \cf7 OnJeepWorkSuccedeed\cf5 (\cf7 res\cf5 ) \{\par ??\tab \tab \tab \cf7 document\cf5 .\cf7 getElementById\cf5 (\cf10 "&amp;lt;%= this.lblMessage.ClientID %&amp;gt;"\cf5 ).\cf7 innerText\cf5  = \cf7 res\cf5 ;\par ??\tab \tab \}\par ??\tab \tab \cf9 {\b function}\cf5  \cf7 OnJeepWorkFailed\cf5 (\cf7 error\cf5 ) \{\par ??\tab \tab \tab \cf11 // Alert user to the error.    \par ??\cf5 \tab \tab \tab \cf7 alert\cf5 (\cf7 error\cf5 .\cf7 get_message\cf5 ());\par ??\tab \tab \}\par ??\tab \cf3 &amp;lt;/\cf6 script\cf3 &amp;gt;\par ??\par ??&amp;lt;/\cf6 head\cf3 &amp;gt;\par ??&amp;lt;\cf6 body\cf3 &amp;gt;\par ??\cf5 \tab \cf3 &amp;lt;\cf6 form\cf5  \cf7 id\cf3 =\cf8 "form1"\cf5  \cf7 runat\cf3 =\cf8 "server"\cf3 &amp;gt;\par ??\cf5 \tab \cf3 &amp;lt;\cf6 div\cf3 &amp;gt;\par ??\cf5 \tab \tab \cf3 &amp;lt;\cf6 asp\cf3 :\cf6 ScriptManager\cf5  \cf7 runat\cf3 =\cf8 "server"\cf3 &amp;gt;\par ??\cf5 \tab \tab \tab \cf3 &amp;lt;\cf6 Services\cf3 &amp;gt;\par ??\cf5 \tab \tab \tab \tab \cf3 &amp;lt;\cf6 asp\cf3 :\cf6 ServiceReference\cf5  \cf7 Path\cf3 =\cf8 "~/Services/WebHttpService.svc"\cf5  \cf7 InlineScript\cf3 =\cf8 "false"\cf5  \cf3 /&amp;gt;\par ??\cf5 \tab \tab \tab \cf3 &amp;lt;/\cf6 Services\cf3 &amp;gt;\par ??\cf5 \tab \tab \cf3 &amp;lt;/\cf6 asp\cf3 :\cf6 ScriptManager\cf3 &amp;gt;\par ??\cf5 \tab \tab \cf3 &amp;lt;\cf6 asp\cf3 :\cf6 Label\cf5  \cf7 ID\cf3 =\cf8 "lblMessage"\cf5  \cf7 runat\cf3 =\cf8 "server"\cf5  \cf7 Text\cf3 =\cf8 "No work has been done"\cf5  \cf3 /&amp;gt;\par ??\cf5 \tab \tab \cf3 &amp;lt;\cf6 a\cf5  \cf7 href\cf3 =\cf8 "javascript:void(0); DoJeepWork()"\cf3 &amp;gt;\cf5 Do Work\cf3 &amp;lt;/\cf6 a\cf3 &amp;gt;\par ??\cf5 \tab \cf3 &amp;lt;/\cf6 div\cf3 &amp;gt;\par ??\cf5 \tab \cf3 &amp;lt;/\cf6 form\cf3 &amp;gt;\par ??&amp;lt;/\cf6 body\cf3 &amp;gt;\par ??&amp;lt;/\cf6 html\cf3 &amp;gt;\par ??}
--&gt;
&lt;/p&gt;
&lt;div style="font-size: 9pt; background: #3f3f3f; width: 819px; color: #dcdccc; font-family: consolas; height: 519px"&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="background: #ffee62"&gt;&amp;lt;%&lt;/span&gt;&lt;span style="color: #efef8f"&gt;@&lt;/span&gt; &lt;span style="color: #e3ceab"&gt;Page&lt;/span&gt; &lt;span style="color: #dfdfbf"&gt;Language&lt;/span&gt;&lt;span style="color: #efef8f"&gt;=&lt;/span&gt;&lt;span style="color: #cc9393"&gt;"C#"&lt;/span&gt; &lt;span style="color: #dfdfbf"&gt;AutoEventWireup&lt;/span&gt;&lt;span style="color: #efef8f"&gt;=&lt;/span&gt;&lt;span style="color: #cc9393"&gt;"true"&lt;/span&gt; &lt;span style="color: #dfdfbf"&gt;CodeFile&lt;/span&gt;&lt;span style="color: #efef8f"&gt;=&lt;/span&gt;&lt;span style="color: #cc9393"&gt;"Default.aspx.cs"&lt;/span&gt; &lt;span style="color: #dfdfbf"&gt;Inherits&lt;/span&gt;&lt;span style="color: #efef8f"&gt;=&lt;/span&gt;&lt;span style="color: #cc9393"&gt;"_Default"&lt;/span&gt; &lt;span style="background: #ffee62"&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;/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;lt;!&lt;/span&gt;&lt;span style="color: #e3ceab"&gt;DOCTYPE&lt;/span&gt; &lt;span style="color: #dfdfbf"&gt;html&lt;/span&gt; &lt;span style="color: #dfdfbf"&gt;PUBLIC&lt;/span&gt; &lt;span style="color: #cc9393"&gt;"-//W3C//DTD
XHTML 1.0 Transitional//EN"&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: #cc9393"&gt;"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&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;lt;&lt;/span&gt;&lt;span style="color: #e3ceab"&gt;html&lt;/span&gt; &lt;span style="color: #dfdfbf"&gt;xmlns&lt;/span&gt;&lt;span style="color: #efef8f"&gt;=&lt;/span&gt;&lt;span style="color: #cc9393"&gt;"http://www.w3.org/1999/xhtml"&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;lt;&lt;/span&gt;&lt;span style="color: #e3ceab"&gt;head&lt;/span&gt; &lt;span style="color: #dfdfbf"&gt;runat&lt;/span&gt;&lt;span style="color: #efef8f"&gt;=&lt;/span&gt;&lt;span style="color: #cc9393"&gt;"server"&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; 7&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #efef8f"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #e3ceab"&gt;title&lt;/span&gt;&lt;span style="color: #efef8f"&gt;&amp;gt;&lt;/span&gt;Test
page&lt;span style="color: #efef8f"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #e3ceab"&gt;title&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; 8&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; 9&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #efef8f"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #e3ceab"&gt;script&lt;/span&gt; &lt;span style="color: #dfdfbf"&gt;type&lt;/span&gt;&lt;span style="color: #efef8f"&gt;=&lt;/span&gt;&lt;span style="color: #cc9393"&gt;"text/javascript"&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="font-weight: bold; color: #e1e18a"&gt;function&lt;/span&gt; &lt;span style="color: #dfdfbf"&gt;DoJeepWork&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;&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;JeepServices&lt;/span&gt;.&lt;span style="color: #dfdfbf"&gt;JeepServiceContract&lt;/span&gt;.&lt;span style="color: #dfdfbf"&gt;DoWork&lt;/span&gt;(&lt;span style="color: #dfdfbf"&gt;OnJeepWorkSuccedeed&lt;/span&gt;, &lt;span style="color: #dfdfbf"&gt;OnJeepWorkFailed&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;&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; 13&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;function&lt;/span&gt; &lt;span style="color: #dfdfbf"&gt;OnJeepWorkSuccedeed&lt;/span&gt;(&lt;span style="color: #dfdfbf"&gt;res&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;&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;document&lt;/span&gt;.&lt;span style="color: #dfdfbf"&gt;getElementById&lt;/span&gt;(&lt;span style="color: #c89191"&gt;"&amp;lt;%=
this.lblMessage.ClientID %&amp;gt;"&lt;/span&gt;).&lt;span style="color: #dfdfbf"&gt;innerText&lt;/span&gt; = &lt;span style="color: #dfdfbf"&gt;res&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="font-weight: bold; color: #e1e18a"&gt;function&lt;/span&gt; &lt;span style="color: #dfdfbf"&gt;OnJeepWorkFailed&lt;/span&gt;(&lt;span style="color: #dfdfbf"&gt;error&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;&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;//
Alert user to the error.&amp;nbsp;&amp;nbsp;&amp;nbsp; &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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #dfdfbf"&gt;alert&lt;/span&gt;(&lt;span style="color: #dfdfbf"&gt;error&lt;/span&gt;.&lt;span style="color: #dfdfbf"&gt;get_message&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;&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; 20&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #efef8f"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #e3ceab"&gt;script&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; 21&lt;/span&gt;&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;&lt;span style="color: #efef8f"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #e3ceab"&gt;head&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;lt;&lt;/span&gt;&lt;span style="color: #e3ceab"&gt;body&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #efef8f"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #e3ceab"&gt;form&lt;/span&gt; &lt;span style="color: #dfdfbf"&gt;id&lt;/span&gt;&lt;span style="color: #efef8f"&gt;=&lt;/span&gt;&lt;span style="color: #cc9393"&gt;"form1"&lt;/span&gt; &lt;span style="color: #dfdfbf"&gt;runat&lt;/span&gt;&lt;span style="color: #efef8f"&gt;=&lt;/span&gt;&lt;span style="color: #cc9393"&gt;"server"&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #efef8f"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #e3ceab"&gt;div&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #efef8f"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #e3ceab"&gt;asp&lt;/span&gt;&lt;span style="color: #efef8f"&gt;:&lt;/span&gt;&lt;span style="color: #e3ceab"&gt;ScriptManager&lt;/span&gt; &lt;span style="color: #dfdfbf"&gt;runat&lt;/span&gt;&lt;span style="color: #efef8f"&gt;=&lt;/span&gt;&lt;span style="color: #cc9393"&gt;"server"&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;&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: #efef8f"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #e3ceab"&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; 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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #efef8f"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #e3ceab"&gt;asp&lt;/span&gt;&lt;span style="color: #efef8f"&gt;:&lt;/span&gt;&lt;span style="color: #e3ceab"&gt;ServiceReference&lt;/span&gt; &lt;span style="color: #dfdfbf"&gt;Path&lt;/span&gt;&lt;span style="color: #efef8f"&gt;=&lt;/span&gt;&lt;span style="color: #cc9393"&gt;"~/Services/WebHttpService.svc"&lt;/span&gt; &lt;span style="color: #dfdfbf"&gt;InlineScript&lt;/span&gt;&lt;span style="color: #efef8f"&gt;=&lt;/span&gt;&lt;span style="color: #cc9393"&gt;"false"&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;&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: #efef8f"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #e3ceab"&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; 30&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #efef8f"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #e3ceab"&gt;asp&lt;/span&gt;&lt;span style="color: #efef8f"&gt;:&lt;/span&gt;&lt;span style="color: #e3ceab"&gt;ScriptManager&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #efef8f"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #e3ceab"&gt;asp&lt;/span&gt;&lt;span style="color: #efef8f"&gt;:&lt;/span&gt;&lt;span style="color: #e3ceab"&gt;Label&lt;/span&gt; &lt;span style="color: #dfdfbf"&gt;ID&lt;/span&gt;&lt;span style="color: #efef8f"&gt;=&lt;/span&gt;&lt;span style="color: #cc9393"&gt;"lblMessage"&lt;/span&gt; &lt;span style="color: #dfdfbf"&gt;runat&lt;/span&gt;&lt;span style="color: #efef8f"&gt;=&lt;/span&gt;&lt;span style="color: #cc9393"&gt;"server"&lt;/span&gt; &lt;span style="color: #dfdfbf"&gt;Text&lt;/span&gt;&lt;span style="color: #efef8f"&gt;=&lt;/span&gt;&lt;span style="color: #cc9393"&gt;"No
work has been done"&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #efef8f"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #e3ceab"&gt;a&lt;/span&gt; &lt;span style="color: #dfdfbf"&gt;href&lt;/span&gt;&lt;span style="color: #efef8f"&gt;=&lt;/span&gt;&lt;span style="color: #cc9393"&gt;"javascript:void(0);
DoJeepWork()"&lt;/span&gt;&lt;span style="color: #efef8f"&gt;&amp;gt;&lt;/span&gt;Do Work&lt;span style="color: #efef8f"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #e3ceab"&gt;a&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; 33&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #efef8f"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #e3ceab"&gt;div&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; 34&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #efef8f"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #e3ceab"&gt;form&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; 35&lt;/span&gt;&amp;nbsp;&lt;span style="color: #efef8f"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #e3ceab"&gt;body&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; 36&lt;/span&gt;&amp;nbsp;&lt;span style="color: #efef8f"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #e3ceab"&gt;html&lt;/span&gt;&lt;span style="color: #efef8f"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
Mission accomplished! Here you've seen how to expose an existing WCF service library
without changing any code in the library itself. Adding two files allowed the service
to be exposed to your AJAX clients. Best of all, there is no configuration file changes
to make.
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
Useful Links:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href="http://msdn.microsoft.com/en-us/library/bb514961.aspx"&gt;Exposing WCF Services
to Client Script&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;img width="0" height="0" src="http://offroadcoder.com/aggbug.ashx?id=cfeeb9f7-2a9e-40a5-99ce-dea714e3284d" /&gt;</description>
      <comments>http://offroadcoder.com/CommentView,guid,cfeeb9f7-2a9e-40a5-99ce-dea714e3284d.aspx</comments>
      <category>.NET Framework</category>
      <category>AJAX</category>
      <category>ASP.NET</category>
      <category>C#</category>
      <category>Javascript</category>
      <category>WCF</category>
    </item>
    <item>
      <trackback:ping>http://offroadcoder.com/Trackback.aspx?guid=a1477bfd-e498-42d3-b190-b84f7d27c259</trackback:ping>
      <pingback:server>http://offroadcoder.com/pingback.aspx</pingback:server>
      <pingback:target>http://offroadcoder.com/PermaLink,guid,a1477bfd-e498-42d3-b190-b84f7d27c259.aspx</pingback:target>
      <dc:creator>Scott Klueppel</dc:creator>
      <georss:point>30.109017 -81.497099</georss:point>
      <wfw:comment>http://offroadcoder.com/CommentView,guid,a1477bfd-e498-42d3-b190-b84f7d27c259.aspx</wfw:comment>
      <wfw:commentRss>http://offroadcoder.com/SyndicationService.asmx/GetEntryCommentsRss?guid=a1477bfd-e498-42d3-b190-b84f7d27c259</wfw:commentRss>
      <slash:comments>3</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
A great series of blog posts by Scott Guthrie about the ASP.NET <a href="http://en.wikipedia.org/wiki/Model-view-controller">MVC</a> Framework
coming soon as part of the <a href="http://weblogs.asp.net/scottgu/archive/2007/11/29/net-web-product-roadmap-asp-net-silverlight-iis7.aspx">ASP.NET
3.5 Extensions release</a>. 
</p>
        <p>
Upon hearing the news, a few friends started questioning its intent, usefulness, and
longevity. Many of us have been using or contemplating conversion to the <a href="http://msdn.microsoft.com/msdnmag/issues/06/08/DesignPatterns/">MVP
pattern</a>, most recently using <a href="http://www.codeplex.com/websf">WCSF</a>.
The recent split of the MVP pattern by Fowler has caused many believers to question
their faith. While many are still "proving" MVP, MVC has been around for nearly 30
years. <a href="http://www.polymorphicpodcast.com/shows/aspnetmvc/">Some believe</a> that
MVP and MVC can co-exist. <a href="http://www.pnpguidance.net/Category/WebClientSoftwareFactory.aspx">Here</a> is
a comparison of MVP and MVC that concludes by painting an optimistic picture
of MVP and MVC contributing to each other.
</p>
        <p>
ASP.NET MVC appears to be the answer to my unit testing, REST, and code separation
prayers. Thank you ScottGu and team!
</p>
        <p>
          <a href="http://weblogs.asp.net/scottgu/archive/2007/12/09/asp-net-3-5-extensions-ctp-preview-released.aspx">Check
it out!</a>
        </p>
        <img width="0" height="0" src="http://offroadcoder.com/aggbug.ashx?id=a1477bfd-e498-42d3-b190-b84f7d27c259" />
      </body>
      <title>ASP.NET MVC</title>
      <guid isPermaLink="false">http://offroadcoder.com/PermaLink,guid,a1477bfd-e498-42d3-b190-b84f7d27c259.aspx</guid>
      <link>http://offroadcoder.com/2007/12/19/ASPNETMVC.aspx</link>
      <pubDate>Wed, 19 Dec 2007 02:06:20 GMT</pubDate>
      <description>&lt;p&gt;
A great series of blog posts by Scott Guthrie about the ASP.NET &lt;a href="http://en.wikipedia.org/wiki/Model-view-controller"&gt;MVC&lt;/a&gt; Framework
coming soon as part of the &lt;a href="http://weblogs.asp.net/scottgu/archive/2007/11/29/net-web-product-roadmap-asp-net-silverlight-iis7.aspx"&gt;ASP.NET
3.5 Extensions release&lt;/a&gt;. 
&lt;/p&gt;
&lt;p&gt;
Upon hearing the news, a few friends started questioning its intent, usefulness, and
longevity. Many of us have been using or contemplating conversion to the &lt;a href="http://msdn.microsoft.com/msdnmag/issues/06/08/DesignPatterns/"&gt;MVP
pattern&lt;/a&gt;, most recently using &lt;a href="http://www.codeplex.com/websf"&gt;WCSF&lt;/a&gt;.
The recent split of the MVP pattern by Fowler has caused many believers to question
their faith. While many are still "proving" MVP, MVC has been around for nearly 30
years. &lt;a href="http://www.polymorphicpodcast.com/shows/aspnetmvc/"&gt;Some believe&lt;/a&gt; that
MVP and MVC can co-exist. &lt;a href="http://www.pnpguidance.net/Category/WebClientSoftwareFactory.aspx"&gt;Here&lt;/a&gt; is
a comparison of MVP and MVC that concludes by painting&amp;nbsp;an optimistic picture
of MVP and MVC contributing to each other.
&lt;/p&gt;
&lt;p&gt;
ASP.NET MVC appears to be the answer to my unit testing, REST, and code separation
prayers. Thank you ScottGu and team!
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://weblogs.asp.net/scottgu/archive/2007/12/09/asp-net-3-5-extensions-ctp-preview-released.aspx"&gt;Check
it out!&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://offroadcoder.com/aggbug.ashx?id=a1477bfd-e498-42d3-b190-b84f7d27c259" /&gt;</description>
      <comments>http://offroadcoder.com/CommentView,guid,a1477bfd-e498-42d3-b190-b84f7d27c259.aspx</comments>
      <category>.NET Framework</category>
      <category>AJAX</category>
      <category>ASP.NET</category>
      <category>ASP.NET MVC</category>
      <category>C#</category>
      <category>Javascript</category>
    </item>
    <item>
      <trackback:ping>http://offroadcoder.com/Trackback.aspx?guid=00fc7c82-6dbd-4def-99ea-28a1eb7303b4</trackback:ping>
      <pingback:server>http://offroadcoder.com/pingback.aspx</pingback:server>
      <pingback:target>http://offroadcoder.com/PermaLink,guid,00fc7c82-6dbd-4def-99ea-28a1eb7303b4.aspx</pingback:target>
      <dc:creator>Scott Klueppel</dc:creator>
      <georss:point>30.109017 -81.497099</georss:point>
      <wfw:commentRss>http://offroadcoder.com/SyndicationService.asmx/GetEntryCommentsRss?guid=00fc7c82-6dbd-4def-99ea-28a1eb7303b4</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
It's only a week away, and there are still spaces left.
</p>
        <p>
          <a href="http://codecamp07.jaxdug.com/">Information</a>   <a href="http://www.clicktoattend.com/?id=119680">Register</a>    <a href="http://codecamp07.jaxdug.com/Sessions/tabid/72/Default.aspx">Sessions</a></p>
        <img width="0" height="0" src="http://offroadcoder.com/aggbug.ashx?id=00fc7c82-6dbd-4def-99ea-28a1eb7303b4" />
      </body>
      <title>2007 Jacksonville Code Camp</title>
      <guid isPermaLink="false">http://offroadcoder.com/PermaLink,guid,00fc7c82-6dbd-4def-99ea-28a1eb7303b4.aspx</guid>
      <link>http://offroadcoder.com/2007/08/17/2007JacksonvilleCodeCamp.aspx</link>
      <pubDate>Fri, 17 Aug 2007 03:42:12 GMT</pubDate>
      <description>&lt;p&gt;
It's only a week away, and there are still spaces left.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://codecamp07.jaxdug.com/"&gt;Information&lt;/a&gt;&amp;nbsp;&amp;nbsp; &lt;a href="http://www.clicktoattend.com/?id=119680"&gt;Register&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;a href="http://codecamp07.jaxdug.com/Sessions/tabid/72/Default.aspx"&gt;Sessions&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://offroadcoder.com/aggbug.ashx?id=00fc7c82-6dbd-4def-99ea-28a1eb7303b4" /&gt;</description>
      <comments>http://offroadcoder.com/CommentView,guid,00fc7c82-6dbd-4def-99ea-28a1eb7303b4.aspx</comments>
      <category>.NET Framework</category>
      <category>AJAX</category>
      <category>ASP.NET</category>
      <category>C#</category>
      <category>Database</category>
      <category>General</category>
      <category>Javascript</category>
    </item>
    <item>
      <trackback:ping>http://offroadcoder.com/Trackback.aspx?guid=e29199af-6868-44d5-bd16-873aa770d39a</trackback:ping>
      <pingback:server>http://offroadcoder.com/pingback.aspx</pingback:server>
      <pingback:target>http://offroadcoder.com/PermaLink,guid,e29199af-6868-44d5-bd16-873aa770d39a.aspx</pingback:target>
      <dc:creator>Scott Klueppel</dc:creator>
      <georss:point>30.109017 -81.497099</georss:point>
      <wfw:comment>http://offroadcoder.com/CommentView,guid,e29199af-6868-44d5-bd16-873aa770d39a.aspx</wfw:comment>
      <wfw:commentRss>http://offroadcoder.com/SyndicationService.asmx/GetEntryCommentsRss?guid=e29199af-6868-44d5-bd16-873aa770d39a</wfw:commentRss>
      <slash:comments>4</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Many hosting companies, like mine, won't have the AJAX Extensions installed in the
GAC for quite a while, if ever.   No worries, you can just put the DLLs
in your Bin folder.   Since MS hasn't graced us with the DLLs, so you'll
have to get them out of your GAC.  I haven't found a way to copy DLLs using Windows
Explorer, but command-line never fails.
</p>
        <p>
          <font color="#000080">copy "C:\WINDOWS\assembly\GAC_MSIL\System.Web.Extensions\1.0.61025.0__31bf3856ad364e35"
C:\dev\MyApp\Bin\<br />
copy "C:\WINDOWS\assembly\GAC_MSIL\System.Web.Extensions.Design\1.0.61025.0__31bf3856ad364e35"
C:\dev\MyApp\Bin\</font>
        </p>
        <img width="0" height="0" src="http://offroadcoder.com/aggbug.ashx?id=e29199af-6868-44d5-bd16-873aa770d39a" />
      </body>
      <title>Get the AJAX DLLs out of the GAC</title>
      <guid isPermaLink="false">http://offroadcoder.com/PermaLink,guid,e29199af-6868-44d5-bd16-873aa770d39a.aspx</guid>
      <link>http://offroadcoder.com/2007/02/10/GetTheAJAXDLLsOutOfTheGAC.aspx</link>
      <pubDate>Sat, 10 Feb 2007 19:50:00 GMT</pubDate>
      <description>&lt;p&gt;
Many hosting companies, like mine, won't have the AJAX Extensions installed in the
GAC for quite a while, if ever.&amp;nbsp;&amp;nbsp; No worries, you can just put the DLLs
in your Bin folder.&amp;nbsp;&amp;nbsp; Since MS hasn't graced us with the DLLs, so you'll
have to get them out of your GAC.&amp;nbsp; I haven't found a way to copy DLLs using Windows
Explorer, but command-line never fails.
&lt;/p&gt;
&lt;p&gt;
&lt;font color=#000080&gt;copy "C:\WINDOWS\assembly\GAC_MSIL\System.Web.Extensions\1.0.61025.0__31bf3856ad364e35"
C:\dev\MyApp\Bin\&lt;br&gt;
copy "C:\WINDOWS\assembly\GAC_MSIL\System.Web.Extensions.Design\1.0.61025.0__31bf3856ad364e35"
C:\dev\MyApp\Bin\&lt;/font&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://offroadcoder.com/aggbug.ashx?id=e29199af-6868-44d5-bd16-873aa770d39a" /&gt;</description>
      <comments>http://offroadcoder.com/CommentView,guid,e29199af-6868-44d5-bd16-873aa770d39a.aspx</comments>
      <category>.NET Framework</category>
      <category>AJAX</category>
      <category>ASP.NET</category>
    </item>
    <item>
      <trackback:ping>http://offroadcoder.com/Trackback.aspx?guid=4be2f278-12e4-40d5-b154-0e8ecaf18fac</trackback:ping>
      <pingback:server>http://offroadcoder.com/pingback.aspx</pingback:server>
      <pingback:target>http://offroadcoder.com/PermaLink,guid,4be2f278-12e4-40d5-b154-0e8ecaf18fac.aspx</pingback:target>
      <dc:creator>Scott Klueppel</dc:creator>
      <georss:point>30.109017 -81.497099</georss:point>
      <wfw:comment>http://offroadcoder.com/CommentView,guid,4be2f278-12e4-40d5-b154-0e8ecaf18fac.aspx</wfw:comment>
      <wfw:commentRss>http://offroadcoder.com/SyndicationService.asmx/GetEntryCommentsRss?guid=4be2f278-12e4-40d5-b154-0e8ecaf18fac</wfw:commentRss>
      <slash:comments>31</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I frequently place an UpdatePanel around a paged GridView with inline editing.  
During OnRowUpdating, the object is saved.   If the save was not successful,
I like to show an alert box with the error message.   
</p>
        <p>
I recently migrated from the Atlas May CTP to ASP.NET 2.0 AJAX.   The following
code worked with the May CTP, but, from my research, has not worked since July CTP:
</p>
        <blockquote dir="ltr" style="MARGIN-RIGHT: 0px">
          <p>
Page.ClientScript.RegisterStartupScript(<font color="#0000ff">typeof</font>(<font color="#0000ff">string</font>), <font color="#a52a2a">"alertScript"</font>, <font color="#a52a2a">"alert('Error
Message');"</font>, <font color="#0000ff">true</font>);
</p>
        </blockquote>
        <p>
However, our pals at Microsoft have given us something just as good.   I
found it by mistake while trying to put in a hack involving checking the value of <font color="#008080">ScriptManager</font><font color="#000000">.GetCurrent(Page).IsInAsyncPostBack</font>. 
Here is the AJAX-friendly equivalent:
</p>
        <blockquote dir="ltr" style="MARGIN-RIGHT: 0px">
          <font color="#008080">
            <p>
ScriptManager
</p>
          </font>
          <font color="#000000">.RegisterStartupScript(<font color="#0000ff">this</font>.updatePanel, </font>
          <font color="#0000ff">typeof</font>
          <font color="#000000">(</font>
          <font color="#0000ff">string</font>
          <font color="#000000">), <font color="#a52a2a">"alertScript"</font>, <font color="#a52a2a">"alert('Error
Message');"</font>, </font>
          <font color="#0000ff">true</font>
          <font color="#000000">);</font>
        </blockquote>
        <p>
Hope this helps someone.  There are many blog posts, with many more comments, with
people compaining about this.
</p>
        <img width="0" height="0" src="http://offroadcoder.com/aggbug.ashx?id=4be2f278-12e4-40d5-b154-0e8ecaf18fac" />
      </body>
      <title>ClientScript.RegisterStartupScript doesn't work with ASP.NET AJAX</title>
      <guid isPermaLink="false">http://offroadcoder.com/PermaLink,guid,4be2f278-12e4-40d5-b154-0e8ecaf18fac.aspx</guid>
      <link>http://offroadcoder.com/2007/02/10/ClientScriptRegisterStartupScriptDoesntWorkWithASPNETAJAX.aspx</link>
      <pubDate>Sat, 10 Feb 2007 13:21:42 GMT</pubDate>
      <description>&lt;p&gt;
I frequently place an UpdatePanel around a paged GridView with inline editing.&amp;nbsp;&amp;nbsp;
During OnRowUpdating, the object is saved.&amp;nbsp;&amp;nbsp; If the save was not successful,
I like to show an alert box with the error message.&amp;nbsp;&amp;nbsp; 
&lt;/p&gt;
&lt;p&gt;
I recently migrated from the Atlas May CTP to ASP.NET 2.0 AJAX.&amp;nbsp;&amp;nbsp; The following
code worked with the May CTP, but, from my research, has not worked since July CTP:
&lt;/p&gt;
&lt;blockquote dir=ltr style="MARGIN-RIGHT: 0px"&gt; 
&lt;p&gt;
Page.ClientScript.RegisterStartupScript(&lt;font color=#0000ff&gt;typeof&lt;/font&gt;(&lt;font color=#0000ff&gt;string&lt;/font&gt;), &lt;font color=#a52a2a&gt;"alertScript"&lt;/font&gt;, &lt;font color=#a52a2a&gt;"alert('Error
Message');"&lt;/font&gt;, &lt;font color=#0000ff&gt;true&lt;/font&gt;);
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
However, our pals at Microsoft have given us something just as good.&amp;nbsp;&amp;nbsp; I
found it by mistake while trying to put in a hack involving checking the value of &lt;font color=#008080&gt;ScriptManager&lt;/font&gt;&lt;font color=#000000&gt;.GetCurrent(Page).IsInAsyncPostBack&lt;/font&gt;.&amp;nbsp;
Here is the AJAX-friendly equivalent:
&lt;/p&gt;
&lt;blockquote dir=ltr style="MARGIN-RIGHT: 0px"&gt;&lt;font color=#008080&gt; 
&lt;p&gt;
ScriptManager
&lt;/font&gt;&lt;font color=#000000&gt;.RegisterStartupScript(&lt;font color=#0000ff&gt;this&lt;/font&gt;.updatePanel, &lt;/font&gt;&lt;font color=#0000ff&gt;typeof&lt;/font&gt;&lt;font color=#000000&gt;(&lt;/font&gt;&lt;font color=#0000ff&gt;string&lt;/font&gt;&lt;font color=#000000&gt;), &lt;font color=#a52a2a&gt;"alertScript"&lt;/font&gt;, &lt;font color=#a52a2a&gt;"alert('Error
Message');"&lt;/font&gt;, &lt;/font&gt;&lt;font color=#0000ff&gt;true&lt;/font&gt;&lt;font color=#000000&gt;);&lt;/font&gt;&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
Hope this helps someone.&amp;nbsp; There are many blog posts, with many more comments,&amp;nbsp;with
people compaining about this.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://offroadcoder.com/aggbug.ashx?id=4be2f278-12e4-40d5-b154-0e8ecaf18fac" /&gt;</description>
      <comments>http://offroadcoder.com/CommentView,guid,4be2f278-12e4-40d5-b154-0e8ecaf18fac.aspx</comments>
      <category>AJAX</category>
      <category>ASP.NET</category>
    </item>
    <item>
      <trackback:ping>http://offroadcoder.com/Trackback.aspx?guid=6744a626-3e6b-4a2d-8ad7-bc72af3ec83f</trackback:ping>
      <pingback:server>http://offroadcoder.com/pingback.aspx</pingback:server>
      <pingback:target>http://offroadcoder.com/PermaLink,guid,6744a626-3e6b-4a2d-8ad7-bc72af3ec83f.aspx</pingback:target>
      <dc:creator>Scott Klueppel</dc:creator>
      <georss:point>30.109017 -81.497099</georss:point>
      <wfw:commentRss>http://offroadcoder.com/SyndicationService.asmx/GetEntryCommentsRss?guid=6744a626-3e6b-4a2d-8ad7-bc72af3ec83f</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I just migrated from the Atlas July CTP to ASP.NET 2.0 AJAX Extensions 1.0. 
After following all of the instructions on the AJAX site, my web site still showed
tons of errors.  I'm using a Web Site, not Web Application, with a ScriptManager
in a WebForm that uses a MasterPage.   Every page shows errors on AJAX tags.  
</p>
        <p>
Yes, I removed the Atlas DLL.  No, my web.config is not messed up.  Something
else is wrong here.   I <a href="http://mcosier.blogspot.com/2006/12/element-scriptmanager-is-not-known.html">found
a "fix"</a>.   The sequence of steps seems a little odd to me, but I did't
care, it worked.  However, the problem resurfaced when I closed my MasterPage.
</p>
        <p>
More searching led me to a great alternative to a true solution.   <a href="http://forums.asp.net/thread/1533306.aspx">An
ASP.NET Forums post</a> had some back-and-forth on the topic.  Ultimately, the
best solution at this point is to change the tagprefix to "ajax".   This
works great, and, in fact, I like it better because it separates the ajax controls
from the standard asp controls.
</p>
        <p>
          <font color="#0000ff" size="2">&lt;</font>
          <font color="#800000" size="2">add</font>
          <font color="#0000ff" size="2">
          </font>
          <font color="#ff0000" size="2">tagPrefix</font>
          <font color="#0000ff" size="2">=</font>
          <font color="#000000" size="2">"</font>
          <font color="#0000ff" size="2">ajax</font>
          <font color="#000000" size="2">"</font>
          <font color="#0000ff" size="2">
          </font>
          <font color="#ff0000" size="2">namespace</font>
          <font color="#0000ff" size="2">=</font>
          <font color="#000000" size="2">"</font>
          <font color="#0000ff" size="2">System.Web.UI</font>
          <font color="#000000" size="2">"</font>
          <font color="#0000ff" size="2">
          </font>
          <font color="#ff0000" size="2">assembly</font>
          <font color="#0000ff" size="2">=</font>
          <font color="#000000" size="2">"</font>
          <font color="#0000ff" size="2">System.Web.Extensions,
Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35</font>
          <font color="#000000" size="2">"</font>
          <font color="#0000ff" size="2">/&gt;
</font>
        </p>
        <p>
        </p>
        <p>
          <a href="http://mcosier.blogspot.com/2006/12/element-scriptmanager-is-not-known.html">
          </a>
        </p>
        <p>
        </p>
        <img width="0" height="0" src="http://offroadcoder.com/aggbug.ashx?id=6744a626-3e6b-4a2d-8ad7-bc72af3ec83f" />
      </body>
      <title>'ScriptManager' is not a known element</title>
      <guid isPermaLink="false">http://offroadcoder.com/PermaLink,guid,6744a626-3e6b-4a2d-8ad7-bc72af3ec83f.aspx</guid>
      <link>http://offroadcoder.com/2007/02/08/ScriptManagerIsNotAKnownElement.aspx</link>
      <pubDate>Thu, 08 Feb 2007 02:34:09 GMT</pubDate>
      <description>&lt;p&gt;
I just migrated from the Atlas July CTP to ASP.NET 2.0 AJAX Extensions 1.0.&amp;nbsp;
After following all of the instructions on the AJAX site, my web site still showed
tons of errors.&amp;nbsp; I'm using a Web Site, not Web Application, with a ScriptManager
in a WebForm that uses a MasterPage.&amp;nbsp;&amp;nbsp; Every page shows errors on AJAX tags.&amp;nbsp; 
&lt;/p&gt;
&lt;p&gt;
Yes, I removed the Atlas DLL.&amp;nbsp; No, my web.config is not messed up.&amp;nbsp; Something
else is wrong here.&amp;nbsp;&amp;nbsp; I &lt;a href="http://mcosier.blogspot.com/2006/12/element-scriptmanager-is-not-known.html"&gt;found
a "fix"&lt;/a&gt;.&amp;nbsp;&amp;nbsp; The sequence of steps seems a little odd to me, but I did't
care, it worked.&amp;nbsp; However, the problem resurfaced when I closed my MasterPage.
&lt;/p&gt;
&lt;p&gt;
More searching led me to a great alternative to a true solution.&amp;nbsp;&amp;nbsp; &lt;a href="http://forums.asp.net/thread/1533306.aspx"&gt;An
ASP.NET Forums post&lt;/a&gt; had some back-and-forth on the topic.&amp;nbsp; Ultimately, the
best solution at this point is to change the tagprefix to "ajax".&amp;nbsp;&amp;nbsp; This
works great, and, in fact, I like it better because it separates the ajax controls
from the standard asp controls.
&lt;/p&gt;
&lt;p&gt;
&lt;font color=#0000ff size=2&gt;&amp;lt;&lt;/font&gt;&lt;font color=#800000 size=2&gt;add&lt;/font&gt;&lt;font color=#0000ff size=2&gt; &lt;/font&gt;&lt;font color=#ff0000 size=2&gt;tagPrefix&lt;/font&gt;&lt;font color=#0000ff size=2&gt;=&lt;/font&gt;&lt;font color=#000000 size=2&gt;"&lt;/font&gt;&lt;font color=#0000ff size=2&gt;ajax&lt;/font&gt;&lt;font color=#000000 size=2&gt;"&lt;/font&gt;&lt;font color=#0000ff size=2&gt; &lt;/font&gt;&lt;font color=#ff0000 size=2&gt;namespace&lt;/font&gt;&lt;font color=#0000ff size=2&gt;=&lt;/font&gt;&lt;font color=#000000 size=2&gt;"&lt;/font&gt;&lt;font color=#0000ff size=2&gt;System.Web.UI&lt;/font&gt;&lt;font color=#000000 size=2&gt;"&lt;/font&gt;&lt;font color=#0000ff size=2&gt; &lt;/font&gt;&lt;font color=#ff0000 size=2&gt;assembly&lt;/font&gt;&lt;font color=#0000ff size=2&gt;=&lt;/font&gt;&lt;font color=#000000 size=2&gt;"&lt;/font&gt;&lt;font color=#0000ff size=2&gt;System.Web.Extensions,
Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35&lt;/font&gt;&lt;font color=#000000 size=2&gt;"&lt;/font&gt;&lt;font color=#0000ff size=2&gt;/&amp;gt;
&lt;/p&gt;
&gt; 
&lt;p&gt;
&lt;p&gt;
&lt;a href="http://mcosier.blogspot.com/2006/12/element-scriptmanager-is-not-known.html"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://offroadcoder.com/aggbug.ashx?id=6744a626-3e6b-4a2d-8ad7-bc72af3ec83f" /&gt;</description>
      <comments>http://offroadcoder.com/CommentView,guid,6744a626-3e6b-4a2d-8ad7-bc72af3ec83f.aspx</comments>
      <category>AJAX</category>
      <category>ASP.NET</category>
    </item>
    <item>
      <trackback:ping>http://offroadcoder.com/Trackback.aspx?guid=97de7191-5c32-42c4-b846-5dd71623937a</trackback:ping>
      <pingback:server>http://offroadcoder.com/pingback.aspx</pingback:server>
      <pingback:target>http://offroadcoder.com/PermaLink,guid,97de7191-5c32-42c4-b846-5dd71623937a.aspx</pingback:target>
      <dc:creator>Scott Klueppel</dc:creator>
      <georss:point>30.109017 -81.497099</georss:point>
      <wfw:commentRss>http://offroadcoder.com/SyndicationService.asmx/GetEntryCommentsRss?guid=97de7191-5c32-42c4-b846-5dd71623937a</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Rick Strahl delivered another excellent white paper. In addition to his white papers,
he has one of the most readable and intelligent blogs on the web. 
</p>
        <p>
White paper: <a href="http://west-wind.com/weblog/posts/2725.aspx">Past the AJAX Hype
- some things to think about</a></p>
        <img width="0" height="0" src="http://offroadcoder.com/aggbug.ashx?id=97de7191-5c32-42c4-b846-5dd71623937a" />
      </body>
      <title>Great AJAX article</title>
      <guid isPermaLink="false">http://offroadcoder.com/PermaLink,guid,97de7191-5c32-42c4-b846-5dd71623937a.aspx</guid>
      <link>http://offroadcoder.com/2005/08/31/GreatAJAXArticle.aspx</link>
      <pubDate>Wed, 31 Aug 2005 01:57:57 GMT</pubDate>
      <description>&lt;p&gt;
Rick Strahl delivered another excellent white paper. In addition to his white papers,
he has one of the most readable and intelligent blogs on the web. 
&lt;/p&gt;
&lt;p&gt;
White paper: &lt;a href="http://west-wind.com/weblog/posts/2725.aspx"&gt;Past the AJAX Hype
- some things to think about&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://offroadcoder.com/aggbug.ashx?id=97de7191-5c32-42c4-b846-5dd71623937a" /&gt;</description>
      <comments>http://offroadcoder.com/CommentView,guid,97de7191-5c32-42c4-b846-5dd71623937a.aspx</comments>
      <category>AJAX</category>
      <category>ASP.NET</category>
      <category>Javascript</category>
    </item>
    <item>
      <trackback:ping>http://offroadcoder.com/Trackback.aspx?guid=2d93ecd8-b0da-48d3-a703-72b06d1d7511</trackback:ping>
      <pingback:server>http://offroadcoder.com/pingback.aspx</pingback:server>
      <pingback:target>http://offroadcoder.com/PermaLink,guid,2d93ecd8-b0da-48d3-a703-72b06d1d7511.aspx</pingback:target>
      <dc:creator>Scott Klueppel</dc:creator>
      <georss:point>30.109017 -81.497099</georss:point>
      <wfw:commentRss>http://offroadcoder.com/SyndicationService.asmx/GetEntryCommentsRss?guid=2d93ecd8-b0da-48d3-a703-72b06d1d7511</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Dmitri Khanine and Phil Carrillo author this fine article on Javascript RPC. Finally,
an article that mentions separation of business and presentation logic, and implementing
MVC in ASP.NET. We need more patterns and practices discussions, and a lot less "look
what I can do" articles.
</p>
        <p>
MSDN Article: <a href="http://msdn.microsoft.com/asp.net/default.aspx?pull=/library/en-us/dnaspp/html/lifewithoutrefresh.asp">Life
without Refresh</a></p>
        <img width="0" height="0" src="http://offroadcoder.com/aggbug.ashx?id=2d93ecd8-b0da-48d3-a703-72b06d1d7511" />
      </body>
      <title>Javascript RPC</title>
      <guid isPermaLink="false">http://offroadcoder.com/PermaLink,guid,2d93ecd8-b0da-48d3-a703-72b06d1d7511.aspx</guid>
      <link>http://offroadcoder.com/2005/07/24/JavascriptRPC.aspx</link>
      <pubDate>Sun, 24 Jul 2005 02:01:30 GMT</pubDate>
      <description>&lt;p&gt;
Dmitri Khanine and Phil Carrillo author this fine article on Javascript RPC. Finally,
an article that mentions separation of business and presentation logic, and implementing
MVC in ASP.NET. We need more patterns and practices discussions, and a lot less "look
what I can do" articles.
&lt;/p&gt;
&lt;p&gt;
MSDN Article: &lt;a href="http://msdn.microsoft.com/asp.net/default.aspx?pull=/library/en-us/dnaspp/html/lifewithoutrefresh.asp"&gt;Life
without Refresh&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://offroadcoder.com/aggbug.ashx?id=2d93ecd8-b0da-48d3-a703-72b06d1d7511" /&gt;</description>
      <comments>http://offroadcoder.com/CommentView,guid,2d93ecd8-b0da-48d3-a703-72b06d1d7511.aspx</comments>
      <category>AJAX</category>
      <category>ASP.NET</category>
      <category>Javascript</category>
    </item>
  </channel>
</rss>