Integrating An ASP - Net MVC Web Application in Sitecore Cms-A4
Integrating An ASP - Net MVC Web Application in Sitecore Cms-A4
5 Rev: 2011-07-14
Sitecore is a registered trademark. All other brand and product names are the property of their respective holders. The contents of this document are the property of Sitecore. Copyright 2001-2011 Sitecore. All rights reserved.
Table of Contents
Chapter 1 Introduction ...................................................................................................................................... 2 Chapter 2 Creating an ASP.NET MVC 2 Web Application .............................................................................. 3 2.1 Prerequisites ........................................................................................................................................ 4 2.2 Creating an ASP.NET MVC 2 Web Application Project ...................................................................... 5 2.2.1 Moving the Project Files .................................................................................................................. 6 2.2.2 Completing the Application Configuration ....................................................................................... 7 Chapter 3 Sitecore Configuration with ASP.NET MVC 2 ................................................................................. 9 3.1 Web.config Configuration .................................................................................................................. 10 3.1.1 Configuring the Web.config File for .NET Framework 4.0 ............................................................. 10 3.1.2 Configuring the Web.config File for .NET Framework 3.5 ............................................................. 12 3.2 Configuring Internet Information Services (IIS) ................................................................................. 14 3.2.1 .NET Framework version of the Application Pool .......................................................................... 14 3.2.2 Managed Pipeline Mode of the Application Pool ........................................................................... 14 Chapter 4 Creating an ASP.NET MVC 3 Web Application ............................................................................ 15 4.1 Prerequisites ...................................................................................................................................... 16 4.2 Creating an ASP.NET MVC 3 Web Application Project .................................................................... 17 4.2.1 Moving the Project Files ................................................................................................................ 18 4.2.2 Completing the Application Configuration ..................................................................................... 19 Chapter 5 Sitecore Configuration with ASP.NET MVC 3 ............................................................................... 21 5.1 Web.config Configuration .................................................................................................................. 22 5.1.1 Configuring Web.config for .NET Framework 4.0 ......................................................................... 22 5.2 Configuring Internet Information Services (IIS) ................................................................................. 25 5.2.1 .NET Framework version of the Application Pool .......................................................................... 25 5.2.2 Managed Pipeline Mode of the Application Pool ........................................................................... 25
Sitecore is a registered trademark. All other brand and product names are the property of their respective holders. The contents of this document are the property of Sitecore. Copyright 2001-2011 Sitecore. All rights reserved. Page 1 of 26
Chapter 1
Introduction
This document describes how to configure the environment where a Sitecore website and an ASP.NET MVC web application run under the same hostname. For more information about the ASP.NET MVC framework, visit the http://www.asp.net/mvc/ website.
Sitecore is a registered trademark. All other brand and product names are the property of their respective holders. The contents of this document are the property of Sitecore. Copyright 2001-2011 Sitecore. All rights reserved. Page 2 of 26
Chapter 2
Creating an ASP.NET MVC 2 Web Application
This chapter describes the process of creating an ASP.NET MVC 2 Web Application that can run in parallel with a Sitecore website.
Sitecore is a registered trademark. All other brand and product names are the property of their respective holders. The contents of this document are the property of Sitecore. Copyright 2001-2011 Sitecore. All rights reserved. Page 3 of 26
2.1
Prerequisites
The instructions in this chapter assume that you have the following components installed on your computer: .NET Framework 3.5 or .NET Framework 4.0. In the appropriate application pool, the Managed Pipeline Mode must be set to Integrated. Sitecore CMS 6.4.0 or later. Microsoft Visual Studio 2008 or 2010. Microsoft ASP.NET MVC 2 Framework. By default the ASP.NET MVC 2 Framework is installed with Microsoft Visual Studio 2010. If you use Microsoft Visual Studio 2008, you must download and install ASP.NET MVC 2 Framework separately. The framework is available at the following link: http://www.microsoft.com/downloads/en/details.aspx?FamilyID=c9ba1fe1-3ba8-439a-9e21def90a8615a9&displaylang=en
Sitecore is a registered trademark. All other brand and product names are the property of their respective holders. The contents of this document are the property of Sitecore. Copyright 2001-2011 Sitecore. All rights reserved. Page 4 of 26
2.2
You need to create a web application project to generate the files you need for your Sitecore project. When you create the project it actually generates more files than you need. In later sections you move the required files to the appropriate Sitecore folder and delete the extra files. To create the web application project: 1. Open Visual Studio 2008 or 2010. 2. Click File, New, Project:
3. Select the ASP.NET MVC 2 Empty Web Application template and provide a name for the new project:
Important In Visual Studio 2010 you can create ASP.NET MVC 2 Web Application under .NET Framework 3.5 and 4.0.
Sitecore is a registered trademark. All other brand and product names are the property of their respective holders. The contents of this document are the property of Sitecore. Copyright 2001-2011 Sitecore. All rights reserved. Page 5 of 26
4. Click OK. Visual Studio creates the related files in the folder with the name you specified. Some files are not required, we will remove them later. 5. Close the solution or exit Visual Studio.
2.2.1
Since you do not need all the files that Visual Studio generates, you move only the files you need to the Sitecore web root. 1. In Windows Explorer, locate the project folder that was generated by Visual Studio (as shown below).
2. Move or copy the following files and folders to the Sitecore web root: o o o o o o o o o Content folder Controllers folder Models folder Properties folder Scripts folder Views folder Global.asax file Global.asax.cs file *.csproj file
Sitecore is a registered trademark. All other brand and product names are the property of their respective holders. The contents of this document are the property of Sitecore. Copyright 2001-2011 Sitecore. All rights reserved. Page 6 of 26
*.csproj.user file
Note The default Global.asax file must be replaced. If you have customized your Global.asax file, you must merge it.
2.2.2
To complete the configuration: 1. In the Sitecore web root, double-click the .csproj file to open the project in Visual Studio.
Note If you are using the Visual Studio 2010, expand the web.config node in Solution Explorer. Delete the Web.Debug.config and Web.Release.config definitions from the project.
Sitecore is a registered trademark. All other brand and product names are the property of their respective holders. The contents of this document are the property of Sitecore. Copyright 2001-2011 Sitecore. All rights reserved. Page 7 of 26
2. In Visual Studio, on the Standard Tool bar, click Save All. Visual Studio opens the Save File As dialog box. Specify the name of your solution and click Save.
Sitecore is a registered trademark. All other brand and product names are the property of their respective holders. The contents of this document are the property of Sitecore. Copyright 2001-2011 Sitecore. All rights reserved. Page 8 of 26
Chapter 3
Sitecore Configuration with ASP.NET MVC 2
This chapter describes the Sitecore CMS configuration required for the ASP.NET MVC 2 Web Application to run in parallel with the Sitecore website.
Sitecore is a registered trademark. All other brand and product names are the property of their respective holders. The contents of this document are the property of Sitecore. Copyright 2001-2011 Sitecore. All rights reserved. Page 9 of 26
3.1
Web.config Configuration
Visual Studio 2010 lets you use the .NET Framework version 4.0 or version 3.5 for creating the ASP.NET MVC web applications, while Visual Studio 2008 only supports version 3.5. In general terms, Sitecore CMS is a mixed ASP.NET Web Form. It is necessary to make the following changes in the Web.config file to use the mixed ASP.NET Web Form and an ASP.NET MVC project in parallel.
3.1.1
This section contains the list of changes that you must make in the Web.config file: 1. Remove from the <configuration><configSections> section:
<sectionGroup name="system.web.extensions" type="System.Web.Configuration.SystemWebExtensionsSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> </sectionGroup> <sectionGroup name="scripting" type="System.Web.Configuration.ScriptingSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> <sectionGroup> <sectionGroup name="webServices" type="System.Web.Configuration.ScriptingWebServicesSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> <sectionGroup>
<add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> <add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> <add name="ScriptResource" verb="GET,HEAD" path="ScriptResource.axd" preCondition="integratedMode" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
Sitecore is a registered trademark. All other brand and product names are the property of their respective holders. The contents of this document are the property of Sitecore. Copyright 2001-2011 Sitecore. All rights reserved. Page 10 of 26
9. In the <configuration><sitecore><settings><setting name="IgnoreUrlPrefixes" > setting add the root value of your MVC router map that is used as the URL, so that Sitecore CMS ignores MVC requests. For example, if you have the following page that uses ASP.NET MVC http://www.SitecoreCMS.com/Data, you must add the /Data value to the setting:
<setting name="IgnoreUrlPrefixes" value="/Data|/sitecore/default.aspx .../>
Sitecore is a registered trademark. All other brand and product names are the property of their respective holders. The contents of this document are the property of Sitecore. Copyright 2001-2011 Sitecore. All rights reserved. Page 11 of 26
<assemblyIdentity name="System.Web.Extensions" publicKeyToken="31bf3856ad364e35"/> <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0"/> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="System.Web.Extensions.Design" publicKeyToken="31bf3856ad364e35"/> <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0"/> </dependentAssembly> </assemblyBinding> </runtime>
3.1.2
This section contains the list of changes that you must make in the Web.config file: 1. Modify the <configuration><system.webServer><modules> section:
<modules runAllManagedModulesForAllRequests="true">
7. In the <configuration><sitecore><settings><setting name="IgnoreUrlPrefixes" > setting add the root value of your MVC router map that is used as the URL, so that Sitecore CMS ignores MVC requests. For example, if you have the following page that uses ASP.NET MVC http://www.SitecoreCMS.com/Data, you must add the /Data value to the setting:
<setting name="IgnoreUrlPrefixes" value="/Data|/sitecore/default.aspx .../>
Sitecore is a registered trademark. All other brand and product names are the property of their respective holders. The contents of this document are the property of Sitecore. Copyright 2001-2011 Sitecore. All rights reserved. Page 12 of 26
<compilers> <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CSharp.CSharpCodeProvider,System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" warningLevel="4"> <providerOption name="CompilerVersion" value="v3.5"/> <providerOption name="WarnAsError" value="false"/> </compiler> </compilers> </system.codedom> <runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1" appliesTo="v2.0.50727"> <dependentAssembly> <assemblyIdentity name="System.Web.Extensions" publicKeyToken="31bf3856ad364e35"/> <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0"/> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="System.Web.Extensions.Design" publicKeyToken="31bf3856ad364e35"/> <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0"/> </dependentAssembly> </assemblyBinding> </runtime>
Sitecore is a registered trademark. All other brand and product names are the property of their respective holders. The contents of this document are the property of Sitecore. Copyright 2001-2011 Sitecore. All rights reserved. Page 13 of 26
3.2
You must change the configuration of IIS to make Sitecore work with ASP.NET MVC 2.
3.2.1
If the ASP.NET MVC Web Application uses .NET Framework 4.0 as a target framework, you must switch the Sitecore CMS application pool to .NET Framework 4.0. If the ASP.NET MVC Web Application uses .NET Framework 3.5 as a target framework, you must switch the Sitecore CMS application pool to .NET Framework 2.0.
3.2.2
We recommend that you switch the Managed Pipeline Mode to Integrated. An ASP.NET MVC Web Application based on .NET Framework 4.0 or 3.5 does not require any special configuration when running in the Integrated pipeline mode under IIS 7.0 or higher. If you use the Classic pipeline mode under IIS 7.5 or earlier, you must perform special configuration to use an ASP.NET MVC Web Application. To read on how to make this configuration, refer to the Microsoft documentation: http://www.asp.net/mvc/tutorials/using-asp-net-mvc-with-different-versions-of-iis-cs.
Sitecore is a registered trademark. All other brand and product names are the property of their respective holders. The contents of this document are the property of Sitecore. Copyright 2001-2011 Sitecore. All rights reserved. Page 14 of 26
Chapter 4
Creating an ASP.NET MVC 3 Web Application
This chapter describes the process of creating an ASP.NET MVC 3 Web Application that can run in parallel with a Sitecore website.
Sitecore is a registered trademark. All other brand and product names are the property of their respective holders. The contents of this document are the property of Sitecore. Copyright 2001-2011 Sitecore. All rights reserved. Page 15 of 26
4.1
Prerequisites
The instructions in this chapter assume that you have the following components installed on your computer: .NET Framework 4.0. In the appropriate application pool, the Managed Pipeline Mode must be set to Integrated. Sitecore CMS 6.4.0 or later. Microsoft Visual Studio 2010. Microsoft ASP.NET MVC 3 Framework. By default the ASP.NET MVC 3 Framework is not installed with Microsoft Visual Studio 2010. You must download and install ASP.NET MVC 3 Framework separately. The framework is available at the following link: http://www.microsoft.com/downloads/en/details.aspx?FamilyID=d2928bc1-f48c-4e95-a0642a455a22c8f6
Sitecore is a registered trademark. All other brand and product names are the property of their respective holders. The contents of this document are the property of Sitecore. Copyright 2001-2011 Sitecore. All rights reserved. Page 16 of 26
4.2
You need to create a web application project to generate the files you need for your Sitecore project. When you create the project it actually generates more files than you need. In later sections you move the required files to the appropriate Sitecore folder and delete the extra files. To create the web application project: 1. Open Visual Studio 2010. 2. Click File, New, Project:
3. Select the ASP.NET MVC 3 Web Application template and enter a name for the new project:
4. Click OK. Project template dialog box appears. 5. Select Empty project template and select View engine: ASPX or Razor.
Sitecore is a registered trademark. All other brand and product names are the property of their respective holders. The contents of this document are the property of Sitecore. Copyright 2001-2011 Sitecore. All rights reserved. Page 17 of 26
6. Click OK. Visual Studio creates the related files in the folder with the name you specified. Some files are not required, you will remove them later. 7. Close the solution or exit Visual Studio.
4.2.1
Since you do not need all the files that Visual Studio generates, you move only the files you need to the Sitecore web root. 1. In Windows Explorer, locate the project folder that was generated by Visual Studio (as shown below).
Sitecore is a registered trademark. All other brand and product names are the property of their respective holders. The contents of this document are the property of Sitecore. Copyright 2001-2011 Sitecore. All rights reserved. Page 18 of 26
2. Move or copy the following files and folders to the Sitecore web root: o o o o o o o o o o Content folder Controllers folder Models folder Properties folder Scripts folder Views folder Global.asax file Global.asax.cs file *.csproj file *.csproj.user file
Note The default Global.asax file must be replaced. If you have customized your Global.asax file, you must merge it.
4.2.2
To complete the configuration: 1. In the Sitecore web root, double-click the .csproj file to open the project in Visual Studio. 2. In Visual Studio expand the web.config node in Solution Explorer. Delete the Web.Debug.config and Web.Release.config definitions from the project.
Sitecore is a registered trademark. All other brand and product names are the property of their respective holders. The contents of this document are the property of Sitecore. Copyright 2001-2011 Sitecore. All rights reserved. Page 19 of 26
3. In Visual Studio, on the Standard Tool bar, click Save All. Visual Studio opens the Save File As dialog box. Enter the name of your solution and click Save.
Sitecore is a registered trademark. All other brand and product names are the property of their respective holders. The contents of this document are the property of Sitecore. Copyright 2001-2011 Sitecore. All rights reserved. Page 20 of 26
Chapter 5
Sitecore Configuration with ASP.NET MVC 3
This chapter describes the Sitecore CMS configuration required for the ASP.NET MVC 3 Web Application to run in parallel with the Sitecore website.
Sitecore is a registered trademark. All other brand and product names are the property of their respective holders. The contents of this document are the property of Sitecore. Copyright 2001-2011 Sitecore. All rights reserved. Page 21 of 26
5.1
Web.config Configuration
Visual Studio 2010 lets you use the .NET Framework version 4.0 only for creating the ASP.NET MVC 3 web applications. In general terms, Sitecore CMS is a mixed ASP.NET Web Form. It is necessary to make the following changes in the Web.config file to use the mixed ASP.NET Web Form and an ASP.NET MVC project in parallel.
5.1.1
This section contains the list of changes that you must make in the Web.config file: 1. In the <configuration><configSections> section, remove the following strings:
<sectionGroup name="system.web.extensions" type="System.Web.Configuration.SystemWebExtensionsSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> </sectionGroup> <sectionGroup name="scripting" type="System.Web.Configuration.ScriptingSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> <sectionGroup> <sectionGroup name="webServices" type="System.Web.Configuration.ScriptingWebServicesSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> <sectionGroup>
<add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> <add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> <add name="ScriptResource" verb="GET,HEAD" path="ScriptResource.axd" preCondition="integratedMode" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
Sitecore is a registered trademark. All other brand and product names are the property of their respective holders. The contents of this document are the property of Sitecore. Copyright 2001-2011 Sitecore. All rights reserved. Page 22 of 26
9. In the <configuration><sitecore><settings><setting name="IgnoreUrlPrefixes" > setting, add the root value of your MVC router map that is used as the URL, so that Sitecore CMS ignores MVC requests. For example, if you have the following page that uses ASP.NET MVC http://www.SitecoreCMS.com/Data, you must add the /Data value to the following setting:
<setting name="IgnoreUrlPrefixes" value="/Data|/sitecore/default.aspx .../>
Sitecore is a registered trademark. All other brand and product names are the property of their respective holders. The contents of this document are the property of Sitecore. Copyright 2001-2011 Sitecore. All rights reserved. Page 23 of 26
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1" appliesTo="v2.0.50727"> <dependentAssembly> <assemblyIdentity name="System.Web.Extensions" publicKeyToken="31bf3856ad364e35"/> <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0"/> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="System.Web.Extensions.Design" publicKeyToken="31bf3856ad364e35"/> <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0"/> </dependentAssembly> </assemblyBinding> </runtime>
Sitecore is a registered trademark. All other brand and product names are the property of their respective holders. The contents of this document are the property of Sitecore. Copyright 2001-2011 Sitecore. All rights reserved. Page 24 of 26
5.2
You must change the configuration of IIS to make Sitecore work with ASP.NET MVC.
5.2.1
If the ASP.NET MVC 3 Web Application uses .NET Framework 4.0 as a target framework, you must switch the Sitecore CMS application pool to .NET Framework 4.0.
5.2.2
We recommend that you switch the Managed Pipeline Mode to Integrated. An ASP.NET MVC Web Application based on .NET Framework 4.0 does not require any special configuration when running in the Integrated pipeline mode under IIS 7.0 or higher. If you use the Classic pipeline mode under IIS 7.5 or earlier, you must perform special configuration to use an ASP.NET MVC Web Application. For more information about this configuration, refer to the Microsoft documentation: http://www.asp.net/mvc/tutorials/using-asp-net-mvc-with-different-versions-ofiis-cs.
Sitecore is a registered trademark. All other brand and product names are the property of their respective holders. The contents of this document are the property of Sitecore. Copyright 2001-2011 Sitecore. All rights reserved. Page 25 of 26