Tech Blog

Jay's Technical blog

WSS3, MOSS, Winfx (err... .Net 3.0) and fun...

28 October 2006
Jay Kimble

[WARNING! This is an archived post and as such there may be things broken/missing here.. you have been warned.]

I just spent a couple days in a class last week for Windows SharePoint Services 3.0 (WSS3) and Microsoft Office SharePoint Server (MOSS).  I went because my boss (Jon Goodyear — MS Regional Director) thought it would be good for some more of us (ASPSOFT consultants) to develop some SharePoint skills… especially in light of some of the changes in SharePoint.  The biggest change, in my mind, is that MS Content Management Server is no more.  Also, in case you’ve missed it… FrontPage is no more as well… Long live SharePoint! (well, until its replacement comes along)

So what’s the difference between the 2 similarly named products (Sahil had a rant about this awhile back… I can’t find the link… hopefully Sahil will see this and provide the link)?  This is what I understand… MOSS includes some advanced searching features, the Excel Calculation engine, the InfoPath forms engine (you no longer need InfoPath to use InfoPath created forms), and a bunch more templates for creating sites/subsites. 

WSS3 can host files and has some searching capabilites (just not as strong as MOSS’).  Basically it’s the “lite” version.

I believe (but don’t depend on me on this) that WSS3 is a windows-licensed product (which means that it’s license is tied to windows licensing), and MOSS will require a separate license.

For my purposes, MOSS is really cool, but the size of clients I usually work with will not necessarily require something like MOSS.  So I have been working on getting a WSS3 beta2 Technical Refresh instance up and running on VirtualPC 2007 (it’s all betas here, baby). 

As you read the Microsoft instructions for setting up a new instance Windows SharePoint Services 3.0 Beta 2 Technical Refresh (WSS3 B2 TR) you are told in step 2 to install Beta 2 of WSS3.  When you start searching on MS’ site you will find that you can’t find the bloody thing ANYWHERE!  You can get downloads for MOSS, but as mentioned above MOSS != WSS3 (or if you are a VB guy/gal MOSS <> WSS3).   So where do you get the install??

Well, I found this page — http://blogs.msdn.com/sharepoint/archive/2006/05/25/606800.aspx — which is from the SharePoint blog where they provide links to the WSS3 beta 2 bits, and promise that they will get it all linked up in the MS site (soon)… I’m guessing that in the busy-ness of building a product they forgot to do this (or there is some other holdup).  Not to worry though, I’m sure we’re near another release which will not have these instructions.

[Windows Sharepoint Services, Sharepoint, Sharepoint beta 2, Sharepoint Technical Refresh,wss3]


How To: Enable Microsoft ASP.NET Ajax Betas on an existing site

26 October 2006
Jay Kimble

[WARNING! This is an archived post and as such there may be things broken/missing here.. you have been warned.]

[Old article warning... you are probably looking for this.]

[I updated this today (11–17–2006) for the MS Ajax Beta 2/November CTP bits…

Here are the changes between Beta1 and Beta2 (and September CTP Beta 1 and November CTP Beta 2)
New HttpHandler – ScriptResource.axd — which is found in the httpHandlers section within the Web.Config section and looks like this:
<addverb="GET" path="ScriptResource.axd" type="Microsoft.Web.Handlers.ScriptResourceHandler" validate="false"/>

and in handlers section of within the Web.Server section and looks like this:
<addname="ScriptResource" verb="GET" path="ScriptResource.axd" type="Microsoft.Web.Handlers.ScriptResourceHandler" />

That’s all the changes for now]

With the advent of the new Microsoft ASP.NET Ajax Extensions v1.0 Beta, all the old ways of using the formerly Microsoft Atlas Library have changed.  My wildly popular “How to Add Atlas to an existing site (For Brendan)” is for the first time in a number of months out of date.  Atlas is no more… long live Microsoft ASP.NET Ajax Extensions v1.0, and uhm… Microsoft ASP.NET Ajax v1.0 CTP Beta (no comment)…

So on to what you want/need… a way to enable Microsoft ASP.NET Ajax Extensions and the CTP on an existing site.  Let’s start with enabling Microsoft ASP.NET Ajax Extensions.

Enabling Microsoft ASP.NET Ajax Extensions
As with the last time we need to make some edits to the Web.Config file.

Step 1
If you don’t already have a configSections section then add one right after the <configuration> tag; the top of your file should look like thisif you needed to add the configSections element:

<?xmlversion="1.0"?>
<configuration>
   <
configSections>
   </configSections>


Now right before the</configSections> tag add the following:

            <sectionGroupname="microsoft.web" type="Microsoft.Web.Configuration.MicrosoftWebSectionGroup, Microsoft.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
                  <
sectionGroupname="scripting" type="Microsoft.Web.Configuration.ScriptingSectionGroup, Microsoft.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
                        <
sectionGroupname="webServices" type="Microsoft.Web.Configuration.ScriptingWebServicesSectionGroup, Microsoft.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
                              <
sectionname="jsonSerialization" type="Microsoft.Web.Configuration.ScriptingJsonSerializationSection, Microsoft.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false"/>
                              <
sectionname="profileService" type="Microsoft.Web.Configuration.ScriptingProfileServiceSection, Microsoft.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false"/>
                              <
sectionname="authenticationService" type="Microsoft.Web.Configuration.ScriptingAuthenticationServiceSection, Microsoft.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false"/>
                        </
sectionGroup>
                  </
sectionGroup>
            </
sectionGroup>



 

Step 2
Add the following lines inside the system.web section (this lets you use MS ASP.NET Ajax tags in pages without referencing the assembly in the page… I have given you the complete pages section, pay attention some third party tools also use this section… I would suggest adding this code and then re-adding the items from the third party tool back to the appropriate places):

<pages>
   <
controls>
      <
addtagPrefix="asp"namespace="Microsoft.Web.UI"assembly="Microsoft.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
      <
addtagPrefix="asp"namespace="Microsoft.Web.UI.Controls"assembly="Microsoft.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
   </controls>
   <
tagMapping>
      <
addtagType="System.Web.UI.WebControls.CompareValidator"mappedTagType="Microsoft.Web.UI.Compatibility.CompareValidator, Microsoft.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
      <
addtagType="System.Web.UI.WebControls.CustomValidator"mappedTagType="Microsoft.Web.UI.Compatibility.CustomValidator, Microsoft.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
      <
addtagType="System.Web.UI.WebControls.RangeValidator"mappedTagType="Microsoft.Web.UI.Compatibility.RangeValidator, Microsoft.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
      <
addtagType="System.Web.UI.WebControls.RegularExpressionValidator"mappedTagType="Microsoft.Web.UI.Compatibility.RegularExpressionValidator, Microsoft.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
      <
addtagType="System.Web.UI.WebControls.RequiredFieldValidator"mappedTagType="Microsoft.Web.UI.Compatibility.RequiredFieldValidator, Microsoft.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
      <
addtagType="System.Web.UI.WebControls.ValidationSummary"mappedTagType="Microsoft.Web.UI.Compatibility.ValidationSummary, Microsoft.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
   </
tagMapping>
</
pages>

Step 3
In the assemblies section of the the compilation section within the system.web section (you may need to create close tags for compilation element as it usually doesn’t have any child tags).  Add the following lines (I’m giving you the complete compilation section… look closely at what you are overwriting… if you have child tags of compilation you may need to add them back in... Also if you are using something other than C# then remove the defaultLanguage="C#" from the compilation tag):

<compilationdebug="true"defaultLanguage="C#">
  
<assemblies>
      <
addassembly="Microsoft.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
  </assemblies>
</
compilation>



 

Step 4
Also in the system.web section, you also need to add some handlers to the httpHandlers section (I’ve shown you the complete httpHandlers section in case you don’t have one — you may only need the additional stuff between the httpHandlers tags.nodes):

<httpHandlers>
   <
removeverb="*"path="*.asmx"/>
   <
addverb="*"path="*.asmx"validate="false"type="Microsoft.Web.Script.Services.ScriptHandlerFactory, Microsoft.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
   <addverb="GET"path="ScriptResource.axd"type="Microsoft.Web.Handlers.ScriptResourceHandler"validate="false"/>
</
httpHandlers>

Step 5
Also in the system.web section, you also need to add some modules to the httpModules section (I’ve shown you the complete httpModules section just like I did with the httpHandlers):

<httpModules>
   <
addname="WebResourceCompression" type="Microsoft.Web.Handlers.WebResourceCompressionModule, Microsoft.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
   <
addname="ScriptModule" type="Microsoft.Web.UI.ScriptModule, Microsoft.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
</
httpModules>

Step 6
Finally after the</system.web> element and before the last </configuration> element, add the following ASP.NET AJAX (only) code:

<microsoft.web>
   <
scripting>
      <
webServices>
      <!--
Uncomment this line to customize maxJsonLength and add a custom converter-->
      <!--
            
<jsonSerialization maxJsonLength="500">
                <converters>
                   <add name="ConvertMe" type="Acme.SubAcme.ConvertMeTypeConverter"/>
                </converters>
             </jsonSerialization>
      -->

<!--Uncomment this line to enable the authentication service. Include requireSSL="true" if appropriate.-->
      <!--
 
             <authenticationService enabled="true" requireSSL = "true|false"/>
      -->

<!--Uncomment these lines to enable the profile service. To allow profile properties to be retrieved 
and modified in ASP.NET AJAX applications, you need to add each property name to the setProperties and 
getProperties attributes.
-->

<!-- 
         <profileService enabled="true" 
            setProperties="propertyname1,propertyname2" 
            getProperties="propertyname1,propertyname2" />
-->
      </
webServices>
   </
scripting>
</
microsoft.web>



 

<system.webServer>
   <
validationvalidateIntegratedModeConfiguration="false"/>

   <
modules>
      <
addname="ScriptModule" preCondition="integratedMode" type="Microsoft.Web.UI.ScriptModule, Microsoft.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
   </
modules>

   <
handlers>
      <
removename="WebServiceHandlerFactory-ISAPI-2.0"/>
      <
addname="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode" type="Microsoft.Web.Script.Services.ScriptHandlerFactory, Microsoft.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
      <addname="ScriptResource"verb="GET"path="ScriptResource.axd"type="Microsoft.Web.Handlers.ScriptResourceHandler"/>
   </
handlers>
</
system.webServer>

Since the Microsoft.Web.Extensions.dll is installed in the GAC you won’t need to reference any DLLs and you are all set to use the ASP.NET Ajax Extensions…

[begin Shameless Blogger plug of his employer]

 ASPSOFt Logo
ASPSOFT
Your ASP.NET Ajax experts

[end Shameless Blogger plug of his employer]

One of the first things you will notice is if you used Atlas at all is that there are a number of missing components.  Where did they all go? Simple, there was too much work to get it all done soon, so they split Atlas into 2 projects.  One that delivers the most popular components (the ScriptManager and the UpdatePanel, mainly), and one that delivers everything else.  So how do we enable the rest of the components.

Enabling Microsoft ASP.NET Ajax v1.0 CTP Beta on an existing site
The first step is to go through all the steps in enabling the ASP.NET Ajax Extensions.

Now in the controls section withinthe pages section inthe system.web section (see step 2 above) add the following lines:

<addtagPrefix="asp"namespace="Microsoft.Web.Preview.UI"assembly="Microsoft.Web.Preview"/>
<addtagPrefix="asp"namespace="Microsoft.Web.Preview.UI.Controls"assembly="Microsoft.Web.Preview"/>

The complete pages section will look like this (if you didn’t need to customize it as a result of some other tool/library):

 <pages>
   <
controls>
      <
addtagPrefix="asp"namespace="Microsoft.Web.UI"assembly="Microsoft.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
      <
addtagPrefix="asp"namespace="Microsoft.Web.UI.Controls"assembly="Microsoft.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
      <addtagPrefix="asp"namespace="Microsoft.Web.Preview.UI"assembly="Microsoft.Web.Preview"/>
      <
addtagPrefix="asp"namespace="Microsoft.Web.Preview.UI.Controls"assembly="Microsoft.Web.Preview"/>
   </controls>
   <
tagMapping>
      <
addtagType="System.Web.UI.WebControls.CompareValidator"mappedTagType="Microsoft.Web.UI.Compatibility.CompareValidator, Microsoft.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
      <
addtagType="System.Web.UI.WebControls.CustomValidator"mappedTagType="Microsoft.Web.UI.Compatibility.CustomValidator, Microsoft.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
      <
addtagType="System.Web.UI.WebControls.RangeValidator"mappedTagType="Microsoft.Web.UI.Compatibility.RangeValidator, Microsoft.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
      <
addtagType="System.Web.UI.WebControls.RegularExpressionValidator"mappedTagType="Microsoft.Web.UI.Compatibility.RegularExpressionValidator, Microsoft.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
      <
addtagType="System.Web.UI.WebControls.RequiredFieldValidator"mappedTagType="Microsoft.Web.UI.Compatibility.RequiredFieldValidator, Microsoft.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
      <
addtagType="System.Web.UI.WebControls.ValidationSummary"mappedTagType="Microsoft.Web.UI.Compatibility.ValidationSummary, Microsoft.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
   </
tagMapping>
</
pages>

The final step here is to add a reference to the Microsoft.Web.Preview.dll assembly. 

kick it on DotNetKicks.com

[I'm not sure which online rich editor Teligent uses with Community Server, but whichever one it is should be replaced... I went in to add the kick counter and have to keep re-editing the post because the editor keeps duplicating lines of my text... very annoying]

[Microsoft ASP.NET Ajax Beta, Ajax, ASP.NET , Atlas]