Sunday, February 6, 2011

SharePoint 2010 Certification

Yesterday I passed the 70-576 certification for SharePoint 2010.

Tuesday, August 31, 2010

SharePoint 2010 - Part 2- PerformancePoint, BCS and Branding

Here are few problems I expereinced during my first SharePoint 2010 engagement:

Like I mentioned in my earlier post this project consisted of dashboards, SQL Server reporting, branding etc. The follwing lists the various issues I encountered and their resolutions:

  • While trying to install and configure Reporting services on SQL box I faced some challenges. Error: "SharepointIntegrated mode is set to true but could not find the microsoft.sharepoint.dll". Resolution to it was to not install Reporting Services on the SQL box but instead on the WFE and create new db on the SQL box. That way we do not need to worry about the sharepoint dll.

  • While configuring BCS (business connectivity services) I was faced with an error: "Access denied". Resolution: Add a new application ID in secure service store application in CA. Edit the database connection in external content type to use "windows impersonation" and enter the application ID created earlier. Go to "Business Connectivity Service" in CA --> Application management and set permissions for "All authenticated users" and others.

  • SharePoint 2010 now displays errors in the form of correlation ID. This way it is able to group related errors in one ID. Use this correlation ID from the error page and search for it in the 14 hive logs. (remember its now 14 hive instead of 12 hive)

  • As I had to extensively use PerformancePoint (PP) in this project I was required to generate a new key for PP service application. Without a key you will be shown an error: "The unattended service account cannot be set for the service application. The secure store service key might not have been generate or properly refreshed after the service was provisioned."

  • My client wanted to have a better looking page than the default report viewer page (RSViewerPage.aspx). As this page does not inherit from any master page and contains no placeholders you are better off creating your own masterpage and linking to it.

  • While creating a SSAS KPI from Sharepoint KPI list the conenction timed out with an error :"The connection either timed out or was lost. This data connection does not use encryption for the communication with the SSAS to help prevent unauthorized users from viewing this information". Resolutions was to got to IIS manager, go to IIS authentication for the site and enable ASP.NET impoersonation --> edit --> change settings (identity to impersonate) and give a domain user account there instead of Windows Authentication.

  • Now I am new to reporting services but most of you with exposure to SSRS will find this as a trivial task. While trying to run a query in the query designer I was blown with an error : "the query contains the parameter which is not declared". Resolution: even though the report designer had these parameters defined the query designer expects them to be defined in its interface.

  • I encountered an issue for which I could not find a permanent cause. I was required to create a custom masterpage with some ribbon UI changes. I changed the default home page to one of my custom pages inheriting from the custom masterpage. While trying to do so the ribbon UI failed to load with a javascript error below in the taskbar "undefined is null or not an object" in scriptresource.axd. It worked fine if I set default.aspx as the home page. Never could understand why this problem occurred. The important thing for me at that time was to get this working for the client.

These were some of the issues I remember while working on my first SharePoint 2010 implementation.

To follow more on SharePoint 2010 check out my next post of the two part series.

SharePoint 2010 - Introduction

I've been long silent, well lets put it lazy ! Since my last post I have worked on multiple engagements involving the new SharePoint 2010. Its been a good experience figuring out the new features, look n feel, especially the business aspect SharePoint 2010 gets to the community. Before I dig in to the new feature sets lets give you a short background of what I have experienced.

My first engagement of the 2010 version was with a publishing company. It primarily involved BI and branding. Performance Point 2010 played an integral part here, although I was completely new to it. Charts, Graphs, Dashboards, Scorecards, MasterPage, Stylesheets were the elements reuired for this project. My second engagement was with a natural resource gas company primarily involving WSS 3.0 to SharePoint 2010 migration. It also included a thorough assessment of their existing site collection and recommendations for the new 2010 version. That gave it a really big scope encapsulating entire SharePoint 2010 stack from branding, UI, list to Ribbon UI, BCS, and Social networking. It helped me gain some good perspective of the new features.

Following this article will be a two part series on SharePoint 2010 features.
It will contain my experiences and pain points throughout these engagements. But before I go, you MUST get your hands dirty on the new SharePoint 2010 ... it's simply awesome!

Friday, August 7, 2009

70-541 WSS 3.0 Application Development

Today I passed the WSS 3.0 application development exam. Stay tuned I will blog some nice tips and pointers.

Tuesday, June 9, 2009

Custom Calculated List Column













No I'm not talking about creating a regular calculated column here. Recently I was asked whether we can have a custom column in our list which displays a icon image and hyperlinks to a web part page with querystring.
Calculated column seemed to be the best choice. Below are the steps I followed:
  • Create a calculated column in the list.
  • In the formula section add
    ="http://servername/site/doclib/mywebpartpage.aspx?item=/site/doclib/"&[ColumnName]&".docx"

** Url and querystring should be modified according to your needs**

  • Select Single line of text for section "The data type returned from this formula is"
  • Open FldTypes.xml located in \Template\XML\ .
  • Navigate to the node <field name="TypeName">Calculated</field>
  • Navigate to <renderpattern name="DisplayPattern">node
  • Now either add a new case statement or add this code to Default node.Refer to the first image above. Add the html in the default node.
  • Save and Close the file.
  • RESET IIS
  • Refer to the second image above of how the output displays. "View in SharePoint" column has a icon which contains the hyperlink

Friday, April 10, 2009

Workflow Errors - Contd

1)
"The security validation for this page is invalid. Click Back in your Web browser, refresh the page, and try your operation again"

Set

SPWebObject.AllowUnsafeUpdates = true;

This should work as a breeze


2)
"New instances of this workflow template are currently disallowed"

This is probably the easiest one:

Go to Doc library settings --> workflow settings--> Remove workflows --> select "Allow New Instances"

Workflow Errors

Although you can get lot of wierd errors but I am here describing the ones I got and spent almosta day figuring out:

"Operation is not valid due to the current state of the object"
and
"Exception from HRESULT: 0x8102009B"

The funny part is that these are really not errors which halt your progress. These
errors can occur when you try to start a workflow that is

--------------------------------------------------------------
a) already running

or

b) errored

and therefore cannot be started again.
The stack trace will look something like:
Microsoft.SharePoint.SPException: Exception from HRESULT: 0x8102009B ---> System.Runtime.InteropServices.COMException (0x8102009B): Exception from HRESULT: 0x8102009B
at Microsoft.SharePoint.Library.SPRequestInternalClass.AddWorkflowToListItem(String bstrUrl, String bstrListName, Int32 .....


-----------------------------------------------------------------

So I would suggest you to check the item or wait for few mins before workflow shows up in the "View Workflow history" pane. For some reason when you kick start the workflow through the code it takes few mins to actually start.

Fixes for SharePoint Timer Service

If you are looking for options to speed up the response time of the SharePoint Timer Service so that you can get your emails out faster or for anything else, try the following (at your own risk)

The following steps can improve the accuracy of the delay action:

* Ensure Windows 2003 SP 2 is installed
* Install hotfix available here http://support.microsoft.com/default.aspx?scid=kb;en-us;932394
* Run the following stsadm command, replacing server with your servername.

PLEASE NOTE: the full impact of increasing the frequency of the workflow timer job is not known.

stsadm -o setproperty -propertyname "job-workflow" -propertyvalue "every 1 minutes between 0 and 59" -url http://server

Also, some additions have been made and incorporated in the Windows SharePoint Services 3.0 post-Service Pack 1 hotfix package that could help the Timer Service work a bit better.

Tuesday, March 17, 2009

MOSS : Enable Incoming Emails

The procedure for incoming emails is very similar to the outgoing emails i.e. changing settings in the central administration. But to enable incoming emails to be delivered to document libraries I had to take the following steps described on msdn:
Especially if you see your incoming mails sitting in the Queue folder

--------------------------------------------------------------------------
Practical experience in setting this up in a Windows Enterprise Server 2008/IIS 7.0/Exchange Server 2007 farm environment showed that there is one more step required to get Incoming e-mails delivered to the actual Drop folder on the SharePoint SMTP server so that SharePoint can then pick them up from there. This applies if you choose Automatic mode under Configure incoming e-mail settings>Step 4. and can even apply if you choose Advanced mode as well (if you are still using the SMTP server in IIS).

The step is that you need to tell the SMTP Service that it is the destination for the domain specified in the e-mail address that you configure in Central Administration. E.g. if you set the e-mail address domain for recieving SharePoint e-mail destined for Lists and Libraries to say sharepoint.somecompany.com (which would result in an e-mail address that could look like
somelist@sharepoint.somecompany.com for a list), then you will need to set the SMTP Service up to recognise that it is the endpoint for mail destined for this domain so that it moves the received mail into the Drop folder for SharePoint to pick up. Otherwise mail will sit in the Queue folder on the SMTP Service machine forever, as it won't know where to send it next. When SharePoint is in Automatic mode, it gets the folder to pick mail up from, from the SMTP Service, which by default tells it to look in C:\inetpub\mailroot\Drop.

To do this, on the Web Front End Server running the SMTP Service under IIS

* Go to Administrative Tools>Internet Information Services (IIS) 6.0 Manager (NOT the IIS 7.0 Manager which is listed as Internet Information services (IIS) Manager).
* Once the IIS 6.0 manager dialogue has opened, expand your server, and
then expand the SMTP Virtual Server node.
* You should see a node called Domains. right click on it and select New Domain...
* In the New SMTP Domain Wizard select Alias as the domain type and click the Next button.
* Enter the domain name exactly as entered in Step 4. of Configure DNS Manager (and as in Step 5 b. of Configure incoming e-mail settings)
* Click Finish.
If you have e-mails sitting in the Queue folder from previous tests, restart the SMTP Service and it will process them and park them in the Drop folder, ready for SharePoint's timer service to pick them up on it's next run.Assuming that you have got everything else set up properly, you should see messages landing in the Drop folder, and then being picked up by SharePoint for loading into the appropriate List or Library

Tuesday, March 10, 2009

MOSS : Outgoing Emails

To enable outgoing emails from MOSS in the workflows:
All the articles or msdn will tell you to setup your smtp server name in the central administration site and setup in the workflow section
BUT we also need to make sure port 25 is open and NOT blocked by any antivirus software for eg McAfee.
Once you follow the steps described above the emails will start flowing out from your server.

Friday, February 20, 2009

Ajax SPGridview

So here I am after building and deploying the custom web services in WSS 3.0 looking to build ajax web parts to display data from the external system.

So I create a new SPGridview web part and ready to deploy to the web application, but what I get is an error Woo!!

Unable to add selected web part(s):

Site News: The web part you attempted to add no longer exists in the Closed Web Parts Gallery . Refresh your browser to update the web part page and the Gallery.






DO NOT trust error messages coming from SharePoint ! Not a surprise as you must have seen multiple times messages like "Error" while working on sharepoint.
The resolution was to install ASP.NET Ajax on the machine... wooo! How is it that sharepoint could'nt explain it clearly?

Anyways I installed asp.net ajax and went ahead and readded the web parts to the zone, and I see another error

Request for the permission of type Microsoft.SharePoint.Security.SharePointPermission


Now this is telling you to change the access level in the web.config file of the web application. So open the config file from root\wss\virtualdirectories\application port\
and change the following line:
<trust level="WSS_Minimal" originUrl="" />
to
<trust level="WSS_Medium" originUrl="" />

and bang your'e done !!

Hurray I was able to load the web parts and display as expected. Kudos to the SharePoint team for great explanatory error messages

Wednesday, February 18, 2009

MOSS Custom Web Services

Alright, MOSS Web services is the least talked about topic.

So here I am blogging about getting custom web services work in the sharepoint environment. That means writing your own web services and deploying the the MOSS environment so its accessible like other WSS and MOSS services e.g. lists, Usergroup etc

1. The first step is to create an ASP.NET web service project in Visual Studio 2005. If you don't find a web service project template in visual studio, that means that you are still running an old version of Visual Studio 2005, the one without the service pack. You will have to download and install the Visual Studio 2005 Service Pack 1 Beta from Microsoft here.

2. In the Project Types box, select Visual C#.

3. In the Templates box, select ASP.NET Web Service Application.

4. In the Name box, type UploadService. In the Location box, type the following path: Local File System Folder:\WebService.

5. Click OK.

6. In the Solution Explorer, right-click Service1.asmx and rename the file CustomWS.asmx and then right click CustomWS.asmx and click View Code.

7. Add a reference to the assembly for Microsoft Office SharePoint Server 2007 (Microsoft.SharePoint.dll). This assembly is located in the following directory: C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\ISAPI. Please note that if you are developing on a machine that does not have SharePoint installed then you can copy the required files from the SharePoint machine to your development machine.

8. Make sure following using directives are included at the top:

using Microsoft.SharePoint;
using Microsoft.SharePoint.WebControls;
using System.Net;


9. Change your class name from Service1 to CustomWS.

public class CustomWS: System.Web.Services.WebService


10. Comment out the web method definition. The commented out web method code will look like as follows:

//[WebMethod]
//public string HelloWorld()
//{
//return "Hello World";
//}


11. Add following code (web method) in the class:
/// Code here

12. Open CustomWS.asmx markup page. In Solution Explorer, right-click CustomWS.asmx and select View Markup. You will notice that the markup page has following line:

<%@ WebService Language="C#" CodeBehind="CustomWS.asmx.cs" Class="CustomService.CustomWS" %>


Change it to the following line:

<%@ WebService Language="C#" Class="CustomService.CustomWS" %>


13. Create a strong name for the class library. In Solution Explorer, right-click the web service project, and in the Properties dialog box, click Signing, select Sign the assembly, and select in the box for choosing a strong name key file.

14. In the Create Strong Name Key dialog box, provide a file name for the key, deselect Protect my key file with a password, and click OK.
15. Compile the web service project.

16. Now once you have signed and installed assembly in the GAC , open asmx file and change the markup to the following line:

<%@ WebService Language="C#" Class="Namespace.ClassName, AssemblyName, Version=1.0.0.0, Culture=neutral, PublicKeyToken=8cee0c73157976c7" %>

This is the line I forgot to modify(including the publickeytoken and version number) and it bothered me for days.... duh!

17. As we are developing this web service on a machine that does not host SharePoint, therefore, we need to create a virtual directory in IIS. Click Start, point to Administrative Tools (You may have to go to the Control Panel first to select Administrative Tools), and then click Internet Information Services (IIS) Manager.
a. Expand the branch for the server computer to which you want to add a virtual directory. Under the server computer branch, expand the Web Sites folder, and right-click the Default Web Site and select New and then Virtual Directory.... If you don't want to use Default Web Site, you can create a new web site.

b. Click Next and enter an alias in the text box, for example, for this service you can enter UploadService.

c. Click Next and then click Browse... button to browse to the project folder (containing the .asmx file) and click Next.

d. Click Next again and then click Finish.


Note: In case you are developing the service on a SharePoint server,use following instructions:

18. Copy the Files.asmx to the following folder: C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\LAYOUTS

19. Run disco.exe at the command prompt from the LAYOUTS directory to generate .disco and .wsdl files.

Run a command in the following format to generate the files in LAYOUTS:

disco http://Site:port/_layouts/Files.asmx

Make sure you have entered the correct path in the command above otherwise you will get an error. If you created a virtual directory on a port other than the port 80, then you must mention the port number in the path (For example, http://localhost:8080/uploadservice/Files.asmx). This will generate the .disco and .wsdl files.

20. To register namespaces of the Windows SharePoint Services object model, open both the .disco and .wsdl files and replace the opening XML processing instruction -- -- with instructions such as the following:

<%@ Page Language="C#" Inherits="System.Web.UI.Page" %>
<%@ Assembly Name="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Import Namespace="Microsoft.SharePoint.Utilities" %>
<%@ Import Namespace="Microsoft.SharePoint" %>
<% Response.ContentType = "text/xml"; %>

21. In the .disco file, modify the contract reference and SOAP address tags to be like the following example, which replaces literal paths with code generated paths through use of the Microsoft.SharePoint.Utilities.SPHttpUtility class, and which replaces the method name that is specified in the binding attribute:

<contractRef ref=<% SPHttpUtility.AddQuote(SPHttpUtility.HtmlEncode(SPWeb.OriginalBaseUrl(Request) + "?wsdl"),Response.Output); %> docRef=<% SPHttpUtility.AddQuote(SPHttpUtility.HtmlEncode(SPWeb.OriginalBaseUrl(Request)),Response.Output); %>xmlns="http://schemas.xmlsoap.org/disco/scl/" /><soap address=<% SPHttpUtility.AddQuote(SPHttpUtility.HtmlEncode(SPWeb.OriginalBaseUrl(Request)),Response.Output); %> xmlns:q1="http://tempuri.org/" binding="q1:HelloWorld" xmlns="http://schemas.xmlsoap.org/disco/soap/" /><soap address=<% SPHttpUtility.AddQuote(SPHttpUtility.HtmlEncode(SPWeb.OriginalBaseUrl(Request)),Response.Output); %> xmlns:q2="http://tempuri.org/" binding="q2:ServiceSoap12" xmlns="http://schemas.xmlsoap.org/disco/soap/" />

23. In the .wsdl file, make the following similar substitution for the SOAP address that is specified:

<soap:address location=<% SPHttpUtility.AddQuote(SPHttpUtility.HtmlEncode(SPWeb.OriginalBaseUrl(Request)),Response.Output); %> />

24. Rename both files in the respective formats CustomWSdisco.aspx and CustomWSwsdl.aspx so that your service is discoverable through Windows SharePoint Services.

Now let's copy the files to _vit_bin directory
25. The _vti_bin virtual directory maps physically to the Local_Drive:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\12\ISAPI directory, which contains the default Web service files used in Windows SharePoint Services. Copy the new CustomWSwsdl.aspx and CustomWSdisco.aspx files, and also the CustomWS.asmx file, to the ISAPI folder.
From the _vti_bin directory, a Web service offers its functionality to the site that is specified when adding a Web reference for the service.
To verify that your custom Web service is discoverable, navigate to http://Server/_vti_bin/CustomWS.asmx

Now we need to list our web service files in the spdisco.aspx file for it to be available to applications:
26. To make your Web service discoverable in Visual Studio as a Web service alongside the default Windows SharePoint Services Web services, open the spdisco.aspx file located in \Program Files\Common Files\Microsoft Shared\Web Server Extensions\12\ISAPI and add the following code, specifying the .asmx file for your Web service.

<contractRef ref=<% SPHttpUtility.AddQuote(SPHttpUtility.HtmlEncode(spWeb.Url + "/_vti_bin/MyCustomWebService.asmx?wsdl"), Response.Output); %>>
docRef=<% SPHttpUtility.AddQuote(SPHttpUtility.HtmlEncode(spWeb.Url + "/_vti_bin/MyCustomWebService.asmx"), Response.Output); %>
xmlns=" http://schemas.xmlsoap.org/disco/scl/ " />
<discoveryRef ref=<% SPHttpUtility.AddQuote(SPHttpUtility.HtmlEncode(spWeb.Url + "/_vti_bin/MyCustomWebService.asmx?disco"),Response.Output); %>
xmlns="http://schemas.xmlsoap.org/disco/" />


WOO HOO and you'r done ! Just create a sample application to consume this web service just like you do to comsume other sharepoint web services

Happy web servicing !

Sunday, January 25, 2009

Custom Feature - Content Type

Everyone has built a simple feature either for event handling purposes or site action menu but how about creating and deploying custom feature on ECB menu and based on content types.
Here is a simple feature manifest:

<?xml version="1.0" encoding="utf-8" ?>
<Feature xmlns="http://schemas.microsoft.com/sharepoint/"
Id="5DFD12AF-D0AA-4c63-8FB8-C49DB1191083"
Title="My Site Content Type Feature"
Description="Adds my Content Types."
Scope="Site"
Version="1.0.0.0">
<ElementManifests>
<ElementManifest Location="ContentTypes.xml"/>
</ElementManifests>
</Feature>

Here is a elements manifest which adds ECB menu for a infopath form content type:

<?xml version="1.0" encoding="utf-8"?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
<CustomAction
Id="NIBR.NimbusStatusReport"
Location="EditControlBlock"
Title="(Nimbus) Display in SharePoint...."
Sequence="10"
RegistrationType="ContentType"
RegistrationId="0x010100AF717F1A25C33E438J00D81D31F0A176">
<UrlAction Url="{SiteUrl}/Pages/StatusReportViewer.aspx?item={ItemUrl}"/>
</CustomAction>
</Elements>


The stuff worth noticing here is the RegistrationType and RegistrationId attributes
RegisterationType should be set to ContentType and RegisterationId should be set to the document content type or the parent contenttype if you want to enable the ECB menu for all items deriving from the parent Content Type.
To create a new ID for a content type you can follow one of two possible conventions:

[parent content type ID] + two hexadecimal values (different from "00")
[parent content type ID] + "00" + hexadecimal GUID
Usually the first convention is used by SharePoint for the default content types included in SharePoint.

Example:

0x (System)
0x01 (Item Content Type)
0x0101 (Document Content Type, child of Item Content Type)
0x0120 (Folder Content Type, child of Item Content Type)

Once we are done with building the feature it's time installing and activating. Follow the following stsadm commands to get it in place.

installfeature:
stsadm.exe -o installfeature
{-filename |
-name }
[-force]

activatefeature:
stsadm.exe -o activatefeature
{-filename |
-name |
-id }
[-url ]
[-force]

uninstallfeature:
stsadm.exe -o uninstallfeature
{-filename |
-name |
-id }
[-force]


It's all done !! Enjoy your first feature

Sunday, November 30, 2008

MOSS - Display Column based on Security

What if you want to enable a column only if the user has permissions?
Now you might have worked with Item Level permissions but what when you wanna show the record to all users but just disable a COLUMN to particular users.

For e.g. for a SharePoint library which contains infopath form you want to display all forms to all users but only let few users EDIT them.
All this is done in SharePoint designer. Convert your ListView to Data view and then follow the steps below:

Create new site column (hyperlink) in DataView:

<a href="http://yourinternalsite/_layouts/FormServer.aspx?XmlLocation=http://yourinternalsite/subsite/FocusReports/{@FileLeafRef}&OpenIn=Browser">Edit</a>

And add the following code to the column created above:

Show/Hide Edit column based on security (read only users will not see the column)
<xsl:if test="ddwrt:IfHasRights(4)">

Isn't it simple !

Enjoy programming !!

Saturday, November 1, 2008

MOSS - Group Items with Item Count

Many times you might have been asked to change the SharePoint Library views with new columns, calculated columns etc. This technique explains how you can group the items based on a column and provide the item count under that group in the header.


So essentially something like this:

+ Project: XYZ (15 items)
+ Project: ABC (25 Items)


Its pretty simple to achieve the grouping but a small trick to display the item counts.

First open your site in SharePoint Designer and go to the Page view (mostly in the /POages directory)
Then right click on the ListView and convert to DataView.
Go to DataView Properties-->Groupby-->Collapse header
Then in the name column enter the following:

<xsl:value-of select="$fieldvalue" > : <xsl:value-of select="count($nodeset[*[name()=$fieldname]=$fieldvalue or ($fieldtype!='isodatetime' and @*[name()=$fieldname]=$fieldvalue) or ($fieldtype='isodatetime' and ddwrt:GenDisplayName(string(@*[name()=$fieldname]))=$fieldvalue) or (not(*[name()=$fieldname] or @*[name()=$fieldname]) and $fieldvalue = ' ')]/@ID)" />


--------- BANG !!! There you go... as easy as it gets

Thursday, August 7, 2008

Olympics Schedule

4 Years Wait !!


Olympic Medal winners at NBC Olympics.com!

Friday, July 18, 2008

Worth Noting ----- ASP.NET MVC Preview 4

I blogged earlier regarding MVC new release and I finally tried ASP.NET MVC Preview 4 today at a high level..... still need to dive deep in !

Here are few things worth noting


  • ComponentController is removed and now you can use Html.RenderAction<> instead of Html.RenderComponent<> e.g. Html.RenderAction(x=>x.BlogList())
  • Html.SubmitButton - is removed and went into a different namespace... Microsoft.Web.Mvc
  • MembershipProvider is in built in this preview BUT only the FormsAuthentication is taken care of (and not the FormsAuthenticationAdministration class) so you get automatic creation of all user account classes (login, changepassword, register etc) but the admin functionality is still missing....hoopefully in the next preview we get those !

Here are few links to articles for ASP.NET MVC Preview 4:

***BTW TROY GOODE is releasing a new version of MVC Membership toolkit for Preview 4 tomorrow and next week with some enhancements below:

  • 1st Release tomorrow will contain removal of the front-end controller & views (which are now part of the default MVC project template) as well as switching over to the new [Authorize] and [HandleError] attributes.
  • The 2nd release next week will focus on improving the administrative interface for managing users using the new MS Ajax goodness.

Entity Framework Beta 3 With .NET 3.5 SP1

If anyone has run into issues with the new 3.5 SP1 and ADO.NET EF they know what I'm talking about. The other day I upgraded my system with .NET 3.5 SP1 to run Dynamic Data samples. What I get in return is multiple errors while editing or adding tables to my EDMX file which did not make any sense (one of those wierd non descriptive errors). Finally after lot of "struggle" I could trace the issue.... I had to uninstall my Entity Framework Beta 3 and .NET 3.5 SP1 and then reinstall .NET 3.5 SP1 onto my machine.... not forgetting to restart my machine couple of times.

Bottom Line: Unistall any version of ADO.NET Entity Framework on your box and then install .NET 3.5 SP1 or else you'll see all thos erros I talked earlier


This post will help anyone with similar issues and avoid having them spend half a day on investigating the issue with no clue.

*****BTW Dynamic Data for MVC Preview 4 has been release today and I am testing at this moment... keep checking and I'll keep everyone posted of the new release.

Wednesday, July 16, 2008

Here ya go ---ASP.NET MVC Preview 4 -- CodePlex

So its finally here.... CodePlex MVC Preview 4 for ASP.NET

I blogged earlier about some new features for MVC release.

Its been released few days earlier than the ASP.NET Team release. I am going to use and test this new preview and blog about the new features and changes:

Includes: Membership Provider, AccountController, Error Handling, Output Cache.

Tuesday, July 15, 2008

ASP.NET MVC Preview 4

ScottGu finally made it official after a long break (he was busy with his new born)... Preview 4 is relasing end of this week
Its a real good improvement with error filter, authorize filter,AccountController, and caching.

The authorize filter is more like declarative security model which lets you use attributes and filter actions(method) and classes based on your role. AccountController uses built in Asp.Net Membership provider and manage user credentials. You can also use your own custom logic and replace user account class with AccountController class.

Error Filter lets you display a friendly error page/response in case of exceptions.
One can also specify specific exception types like SQLException, NullReferenceException etc.

***ASP.NET Dynamic Data support will be included in MVC by end of Summer ***

Very cool high level features to use with ASP.MVC. The next previews will contain form validation, wizards to automatically create views and test class correspoding to a Controller. WAIT and Keep checking on my blog for upcoming releases.