[{"data":1,"prerenderedAt":799},["ShallowReactive",2],{"article-upgrading-to-mvc-4-from-prior-versions":3},{"article":4,"tags":194,"previous":209,"next":771},{"id":5,"title":6,"author":7,"body":8,"createdAt":182,"description":183,"extension":184,"img":183,"meta":185,"navigation":186,"path":187,"seo":188,"stem":189,"tags":190,"updatedAt":182,"__hash__":193},"articles\u002Farticles\u002Fupgrading-to-mvc-4-from-prior-versions.md","Upgrading to MVC 4 (from prior versions)","[object Object]",{"type":9,"value":10,"toc":178},"minimark",[11,22,35,43,47,60,63,68,103,117,120,123,126,164,175],[12,13,14,15,18,19,21],"p",{},"MVC 4 will happily run alongside ASP.NET MVC version 3 and .NET 4\u002FVS2010. You can thus experiment and create MVC 4 projects without fear of breaking your old applications.",[16,17],"br",{},"\n ",[16,20],{},"\n There are three main methods of upgrading to MVC 4:",[23,24,25,29,32],"ul",{},[26,27,28],"li",{},"Copy existing content into a new MVC 4 project",[26,30,31],{},"Manually upgrade the project",[26,33,34],{},"Utilize the MVC 4 NuGet package (by applying the Microsoft.AspNet.MVC package)",[12,36,37,38,18,40,42],{}," Manual Upgrade Steps:",[16,39],{},[16,41],{},"\nOpen up all the web.config files in your project and replace any lines that read as the following:",[44,45,46],"pre",{},"System.Web.Mvc, Version=3.0.0.0  \nSystem.Web.WebPages, Version=1.0.0.0  \nSystem.Web.Helpers, Version=1.0.0.0  \nSystem.Web.WebPages.Razor, Version=1.0.0.0",[12,48,49,50,18,52,54,55,57,58,18],{},"With their MVC 4 counterparts:",[16,51],{},[16,53],{},"\nSystem.Web.Mvc, Version=4.0.0.0\nSystem.Web.WebPages, Version=2.0.0.0\nSystem.Web.Helpers, Version=2.0.0.0,\nSystem.Web.WebPages.Razor, Version=2.0.0.0,",[16,56],{},"\nIn the root web.config file, add a new PreserveLoginUrl key entry:",[16,59],{},[44,61,62],{},"\u003CappSettings>  \n  \u003Cadd key=\"webpages:Version\" value=\"2.0.0.0\" \u002F>  \n  \u003Cadd key=\"PreserveLoginUrl\" value=\"true\" \u002F>  \n\u003CappSettings>",[12,64,65,66,18],{},"Now delete any references to System.Web.MVC (v3). In Solution Explorer, remove the following assembly references:",[16,67],{},[23,69,70,73,76,79,82,85,88,91,94,97,100],{},[26,71,72],{},"System.Web.Mvc (v3.0.0.0)",[26,74,75],{},"System.Web.WebPages (v1.0.0.0)",[26,77,78],{},"System.Web.Razor (v1.0.0.0)",[26,80,81],{},"System.Web.WebPages.Deployment (v1.0.0.0)",[26,83,84],{},"System.Web.WebPages.Razor (v1.0.0.0)",[26,86,87],{},"Now add references to the new versions of these assemblies:",[26,89,90],{},"System.Web.Mvc (v4.0.0.0)",[26,92,93],{},"System.Web.WebPages (v2.0.0.0)",[26,95,96],{},"System.Web.Razor (v2.0.0.0)",[26,98,99],{},"System.Web.WebPages.Deployment (v2.0.0.0)",[26,101,102],{},"System.Web.WebPages.Razor (v2.0.0.0)",[12,104,105,106,108,109,111,112,114,115,18],{},"In Solution Explorer, unload your MVC project as we are going to make some changes to the project file; this won't work if the solution is open.",[16,107],{},"\nOpen the project file  and replace any references of the ProjectTypeGuids E53F8FEA-EAE0-44A6-8774-FFD645390401 with E3E379DF-F4C6-4180-9B81-6769533ABE47.",[16,110],{},"\nSave the changes you have made and reload the project.",[16,113],{},"\nFinally, if your application or its references uses any assemblies compiled against the previous version of MVC, tell these to use MVC4 by adding binding redirect entries such as the following:",[16,116],{},[44,118,119],{},"\u003Cconfiguration>  \n  \u003Cruntime>  \n    \u003CassemblyBinding xmlns=\"urn:schemas-microsoft-com:asm.v1\">  \n      \u003CdependentAssembly>  \n        \u003CassemblyIdentity name=\"System.Web.Helpers\"  \n             publicKeyToken=\"31bf3856ad364e35\" \u002F>  \n        \u003CbindingRedirect oldVersion=\"1.0.0.0\" newVersion=\"2.0.0.0\"\u002F>  \n      \u003C\u002FdependentAssembly>  \n      \u003CdependentAssembly>  \n        \u003CassemblyIdentity name=\"System.Web.Mvc\"  \n             publicKeyToken=\"31bf3856ad364e35\" \u002F>  \n        \u003CbindingRedirect oldVersion=\"1.0.0.0-3.0.0.0\" newVersion=\"4.0.0.0\"\u002F>  \n      \u003C\u002FdependentAssembly>  \n      \u003CdependentAssembly>  \n        \u003CassemblyIdentity name=\"System.Web.WebPages\"  \n             publicKeyToken=\"31bf3856ad364e35\" \u002F>  \n        \u003CbindingRedirect oldVersion=\"1.0.0.0\" newVersion=\"2.0.0.0\"\u002F>  \n      \u003C\u002FdependentAssembly>  \n    \u003C\u002FassemblyBinding>  \n  \u003C\u002Fruntime>  \n\u003C\u002Fconfiguration>",[44,121,122],{}," ",[12,124,125],{},"Notes:",[23,127,128,131,134,137,140,143,146,149,152,155,158,161],{},[26,129,130],{},"I had to do similar updates to the web.config located in the Views directory",[26,132,133],{},"If after you build and browse to the home page, you get errors like ‘The type or namespace {fill in} does not exist in the namespace..you are missing an assembly reference’ you may need to set ‘Copy Local = True’ on a few of the references.  In particular I had to set to True for the following assemblies:",[26,135,136],{},"Microsoft.Web.Infrastructure",[26,138,139],{},"System.Web.Helpers",[26,141,142],{},"System.Web.Http",[26,144,145],{},"System.Web.Http.WebHost",[26,147,148],{},"System.Web.Mvc",[26,150,151],{},"System.Web.Razor",[26,153,154],{},"System.Web.WebPages",[26,156,157],{},"System.Web.WebPages.Deployment",[26,159,160],{},"System.Web.WebPages.Razor",[26,162,163],{},"WebGrease",[12,165,166,167,171],{},"ASP.NET MVC 4 new features - ",[168,169],"a",{"title":170,"href":170},"http:\u002F\u002Fwww.asp.net\u002Fwhitepapers\u002Fmvc4-release-notes",[168,172,170],{"href":170,"rel":173},[174],"nofollow",[12,176,177],{},"Note: Also note .NET 4.5 is an extension to 4.0, it does not introduce a new runtime",{"title":179,"searchDepth":180,"depth":180,"links":181},"",2,[],"2015-04-20T08:07:12.3800000-04:00",null,"md",{},true,"\u002Farticles\u002Fupgrading-to-mvc-4-from-prior-versions",{"title":6,"description":183},"articles\u002Fupgrading-to-mvc-4-from-prior-versions",[191,192],"aspnet","mvc","GE11lDkpA4HwyWPf4GsE5CSacjnBx_Va3XEsyjiSaN8",[195],{"id":196,"title":197,"body":198,"description":202,"extension":184,"img":203,"meta":204,"name":191,"navigation":186,"path":205,"seo":206,"stem":207,"__hash__":208},"tags\u002Ftags\u002Faspnet.md","Aspnet",{"type":9,"value":199,"toc":200},[],{"title":179,"searchDepth":180,"depth":180,"links":201},[],"ASP.NET is an open source web framework, created by Microsoft, for building modern web apps and services with .NET.","https:\u002F\u002Fimages.unsplash.com\u002Fphoto-1598313183973-4effcded8d5e?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=675&q=80",{},"\u002Ftags\u002Faspnet",{"description":202},"tags\u002Faspnet","SlUGLdZWQy8mYOWC6OetgJkwVulWNURoVHeuESIDleI",{"id":210,"title":211,"author":7,"body":212,"createdAt":763,"description":764,"extension":184,"img":753,"meta":765,"navigation":186,"path":766,"seo":767,"stem":768,"tags":769,"updatedAt":763,"__hash__":770},"articles\u002Farticles\u002Fpattern-singleton-c.md","Pattern Singleton c#",{"type":9,"value":213,"toc":761},[214,277,399,409,420,429,445,512,519,525,528,648,659,671,727,735,744,757],[12,215,216,217,18,219,221,222,18,224,226,227,231,232,235,236,239,240,242,243,245,246,18,248,250,251,253,254,257,258,260,261,265,266,268,269,272,273,276],{},"In software engineering, the singleton pattern is a design pattern that restricts the instantiation of a class to one object. This is useful when exactly one object is needed to coordinate actions across the system. The concept is sometimes generalized to systems that operate more efficiently when only one object exists, or that restrict the instantiation to a certain number of objects.",[16,218],{},[16,220],{},"\nImplementation of a singleton pattern must satisfy the single instance and global access principles. It requires a mechanism to access the singleton class member without creating a class object and a mechanism to persist the value of class members among class objects. The singleton pattern is implemented by creating a class with a method that creates a new instance of the class if one does not exist. If an instance already exists, it simply returns a reference to that object. To make sure that the object cannot be instantiated any other way, the constructor is made private.",[16,223],{},[16,225],{},"\nNote the ",[228,229,230],"strong",{},"distinction"," between a simple ",[228,233,234],{},"static instance"," of a class, and a ",[228,237,238],{},"singleton",": although a singleton can be implemented as a static instance, it can also be lazily constructed, requiring no memory or resources until needed. Another notable difference is that static member classes cannot implement an interface, unless that interface is simply a marker. So if the class has to realize a contract expressed by an interface, it really has to be a ",[228,241,238],{},".",[16,244],{},"\nThe singleton pattern must be carefully constructed in multi-threaded applications. If two threads are to execute the creation method at the same time when a singleton does not yet exist, they both must check for an instance of the singleton and then only one should create the new one. If the programming language has concurrent processing capabilities the method should be constructed to execute as a mutually exclusive operation. ",[16,247],{},[16,249],{},"\nThe following is an example implementation with the following benefits:",[16,252],{},"\na) Because the instance is created inside the ",[228,255,256],{},"Instance ","property method, the class can exercise additional functionality (for example, instantiating a subclass), even though it may introduce unwelcome dependencies.",[16,259],{},"\nb) The instantiation is not performed until an object asks for an instance; this approach is referred to as ",[262,263,264],"em",{},"lazy instantiation",". Lazy instantiation avoids instantiating unnecessary singletons when the application starts.",[16,267],{},"\nThe disadvantage of the following implementation is that it is NOT thread safe for multithreading environments. \nIf separate threads of execution enter the ",[228,270,271],{},"Instance ","property method at the same time, more than one instance\nof the ",[228,274,275],{},"Singleton"," object may be created. Each thread could execute the following statement and decide that a new instance has to be created:",[44,278,282],{"className":279,"code":280,"language":281,"meta":179,"style":179},"language-csharp shiki shiki-themes github-light github-dark","using System;  \npublic class Singleton  \n{  \n   private static Singleton instance;\n  \n   private Singleton() {}\n  \n   public static Singleton Instance  \n   {  \n      get   \n      {  \n         if (instance == null)  \n         {  \n            instance = new Singleton();  \n         }  \n         return instance;  \n      }  \n   }  \n}&nbsp;\n","csharp",[283,284,285,293,298,304,310,316,322,327,333,339,345,351,357,363,369,375,381,387,393],"code",{"__ignoreMap":179},[286,287,290],"span",{"class":288,"line":289},"line",1,[286,291,292],{},"using System;  \n",[286,294,295],{"class":288,"line":180},[286,296,297],{},"public class Singleton  \n",[286,299,301],{"class":288,"line":300},3,[286,302,303],{},"{  \n",[286,305,307],{"class":288,"line":306},4,[286,308,309],{},"   private static Singleton instance;\n",[286,311,313],{"class":288,"line":312},5,[286,314,315],{},"  \n",[286,317,319],{"class":288,"line":318},6,[286,320,321],{},"   private Singleton() {}\n",[286,323,325],{"class":288,"line":324},7,[286,326,315],{},[286,328,330],{"class":288,"line":329},8,[286,331,332],{},"   public static Singleton Instance  \n",[286,334,336],{"class":288,"line":335},9,[286,337,338],{},"   {  \n",[286,340,342],{"class":288,"line":341},10,[286,343,344],{},"      get   \n",[286,346,348],{"class":288,"line":347},11,[286,349,350],{},"      {  \n",[286,352,354],{"class":288,"line":353},12,[286,355,356],{},"         if (instance == null)  \n",[286,358,360],{"class":288,"line":359},13,[286,361,362],{},"         {  \n",[286,364,366],{"class":288,"line":365},14,[286,367,368],{},"            instance = new Singleton();  \n",[286,370,372],{"class":288,"line":371},15,[286,373,374],{},"         }  \n",[286,376,378],{"class":288,"line":377},16,[286,379,380],{},"         return instance;  \n",[286,382,384],{"class":288,"line":383},17,[286,385,386],{},"      }  \n",[286,388,390],{"class":288,"line":389},18,[286,391,392],{},"   }  \n",[286,394,396],{"class":288,"line":395},19,[286,397,398],{},"}&nbsp;\n",[12,400,401,402,405,406,408],{},"There is one approach name ‘double-check locking’ to help resolve the above thread-safe issue however the .NET Framework resolve this via the ",[228,403,404],{},"static initialization ","implementation.",[16,407],{},"\n\u003C\nbr>In this strategy, the instance is created the first time any member of the class is referenced. The common language runtime takes care of the variable initialization.",[12,410,411,412,415,416,419],{},"The class is marked ",[228,413,414],{},"sealed"," to prevent derivation, which could add instances. In addition, the variable is marked ",[228,417,418],{},"readonly",", which means that it can be assigned only during static initialization (which is shown here) or in a class constructor.",[12,421,422,423,425,426,428],{},"This implementation is similar to the preceding example, except that it relies on the common language runtime to initialize the variable. It still addresses the two basic problems that the ",[262,424,275],{}," pattern is trying to solve: global access and instantiation control.\nThe public static property provides a global access point to the instance. Also, because the constructor is private, the ",[228,427,275],{}," class cannot be instantiated outside of the class itself; therefore, the variable refers to the only instance that can exist in the system.",[12,430,431,432,434,435,438,439,442,443,242],{},"Because the ",[228,433,275],{}," instance is referenced by a private static member variable, the instantiation does not occur until the class is first referenced by a call to the ",[228,436,437],{},"Instance"," property. This solution therefore implements a form of the lazy instantiation property, as in the ",[262,440,441],{},"Design Patterns"," form of ",[262,444,275],{},[44,446,448],{"className":279,"code":447,"language":281,"meta":179,"style":179},"public sealed class Singleton  \n{  \n   private static readonly Singleton instance = new Singleton();  \n     \n   private Singleton(){}  \n  \n   public static Singleton Instance  \n   {  \n      get   \n      {  \n         return instance;   \n      }  \n   }  \n}\n",[283,449,450,455,459,464,469,474,478,482,486,490,494,499,503,507],{"__ignoreMap":179},[286,451,452],{"class":288,"line":289},[286,453,454],{},"public sealed class Singleton  \n",[286,456,457],{"class":288,"line":180},[286,458,303],{},[286,460,461],{"class":288,"line":300},[286,462,463],{},"   private static readonly Singleton instance = new Singleton();  \n",[286,465,466],{"class":288,"line":306},[286,467,468],{},"     \n",[286,470,471],{"class":288,"line":312},[286,472,473],{},"   private Singleton(){}  \n",[286,475,476],{"class":288,"line":318},[286,477,315],{},[286,479,480],{"class":288,"line":324},[286,481,332],{},[286,483,484],{"class":288,"line":329},[286,485,338],{},[286,487,488],{"class":288,"line":335},[286,489,344],{},[286,491,492],{"class":288,"line":341},[286,493,350],{},[286,495,496],{"class":288,"line":347},[286,497,498],{},"         return instance;   \n",[286,500,501],{"class":288,"line":353},[286,502,386],{},[286,504,505],{"class":288,"line":359},[286,506,392],{},[286,508,509],{"class":288,"line":365},[286,510,511],{},"}\n",[12,513,122,514,516,517],{},[16,515],{},"\nThe only potential downside of this approach is that you have less control over the mechanics of the instantiation. In the Design Patterns form, you were able to use a nondefault constructor or perform other tasks before the instantiation.  Because the .NET Framework performs the initialization in this solution, you do not have these options. In most cases, static initialization is the preferred approach for implementing a Singleton in .NET.\n",[228,518],{},[12,520,521,524],{},[228,522,523],{},"Finally Multithreaded Singleton\n","Static initialization is suitable for most situations. When your application must delay the instantiation, use a non-default constructor or perform other tasks before the instantiation, and work in a multithreaded environment, you need a different solution.  ",[12,526,527],{},"The following implementation allows only a single thread to enter the critical area, which the lock block identifies, when no instance of Singleton has yet been created:",[44,529,531],{"className":279,"code":530,"language":281,"meta":179,"style":179},"using System;  \npublic sealed class Singleton  \n{  \n   private static volatile Singleton instance;  \n   private static object syncRoot = new Object();  \n  \n   private Singleton() {}  \n  \n   public static Singleton Instance  \n   {  \n      get   \n      {  \n         if (instance == null)   \n         {  \n            lock (syncRoot)   \n            {  \n               if (instance == null)   \n                  instance = new Singleton();  \n            }  \n         }  \n  \n         return instance;  \n      }  \n   }  \n}  \n",[283,532,533,537,541,545,550,555,559,564,568,572,576,580,584,589,593,598,603,608,613,618,623,628,633,638,643],{"__ignoreMap":179},[286,534,535],{"class":288,"line":289},[286,536,292],{},[286,538,539],{"class":288,"line":180},[286,540,454],{},[286,542,543],{"class":288,"line":300},[286,544,303],{},[286,546,547],{"class":288,"line":306},[286,548,549],{},"   private static volatile Singleton instance;  \n",[286,551,552],{"class":288,"line":312},[286,553,554],{},"   private static object syncRoot = new Object();  \n",[286,556,557],{"class":288,"line":318},[286,558,315],{},[286,560,561],{"class":288,"line":324},[286,562,563],{},"   private Singleton() {}  \n",[286,565,566],{"class":288,"line":329},[286,567,315],{},[286,569,570],{"class":288,"line":335},[286,571,332],{},[286,573,574],{"class":288,"line":341},[286,575,338],{},[286,577,578],{"class":288,"line":347},[286,579,344],{},[286,581,582],{"class":288,"line":353},[286,583,350],{},[286,585,586],{"class":288,"line":359},[286,587,588],{},"         if (instance == null)   \n",[286,590,591],{"class":288,"line":365},[286,592,362],{},[286,594,595],{"class":288,"line":371},[286,596,597],{},"            lock (syncRoot)   \n",[286,599,600],{"class":288,"line":377},[286,601,602],{},"            {  \n",[286,604,605],{"class":288,"line":383},[286,606,607],{},"               if (instance == null)   \n",[286,609,610],{"class":288,"line":389},[286,611,612],{},"                  instance = new Singleton();  \n",[286,614,615],{"class":288,"line":395},[286,616,617],{},"            }  \n",[286,619,621],{"class":288,"line":620},20,[286,622,374],{},[286,624,626],{"class":288,"line":625},21,[286,627,315],{},[286,629,631],{"class":288,"line":630},22,[286,632,380],{},[286,634,636],{"class":288,"line":635},23,[286,637,386],{},[286,639,641],{"class":288,"line":640},24,[286,642,392],{},[286,644,646],{"class":288,"line":645},25,[286,647,511],{},[12,649,650,651,654,655,658],{},"This approach ensures that only one instance is created and only when the instance is needed. Also, the variable is declared to be ",[228,652,653],{},"volatile"," to ensure that assignment to the instance variable completes before the instance variable can be accessed. Lastly, this approach uses a ",[228,656,657],{},"syncRoot ","instance to lock on, rather than locking on the type itself, to avoid deadlocks.",[12,660,661,662,664,665,667,670],{},"This double-check locking approach solves the thread concurrency problems while avoiding an exclusive lock in every call to the ",[228,663,256],{},"property method. It also allows you to delay instantiation until the object is first accessed. In practice, an application rarely requires this type of implementation. In most cases, the static initialization approach is sufficient. ",[16,666],{},[228,668,669],{},"Finally, ","there is a much cleaner approach than above if using .NET 4 or greater.",[44,672,674],{"className":279,"code":673,"language":281,"meta":179,"style":179},"public sealed class Singleton  \n{  \n    private static readonly Lazy lazy =  \n        new Lazy(() =&gt; new Singleton());  \n      \n    public static Singleton Instance { get { return lazy.Value; } }  \n  \n    private Singleton()  \n    {  \n    }  \n}\n",[283,675,676,680,684,689,694,699,704,708,713,718,723],{"__ignoreMap":179},[286,677,678],{"class":288,"line":289},[286,679,454],{},[286,681,682],{"class":288,"line":180},[286,683,303],{},[286,685,686],{"class":288,"line":300},[286,687,688],{},"    private static readonly Lazy lazy =  \n",[286,690,691],{"class":288,"line":306},[286,692,693],{},"        new Lazy(() =&gt; new Singleton());  \n",[286,695,696],{"class":288,"line":312},[286,697,698],{},"      \n",[286,700,701],{"class":288,"line":318},[286,702,703],{},"    public static Singleton Instance { get { return lazy.Value; } }  \n",[286,705,706],{"class":288,"line":324},[286,707,315],{},[286,709,710],{"class":288,"line":329},[286,711,712],{},"    private Singleton()  \n",[286,714,715],{"class":288,"line":335},[286,716,717],{},"    {  \n",[286,719,720],{"class":288,"line":341},[286,721,722],{},"    }  \n",[286,724,725],{"class":288,"line":347},[286,726,511],{},[12,728,729,730,734],{},"It's simple and performs well. It also allows you to check whether or not the instance has been created yet with the ",[168,731,733],{"href":732},"http:\u002F\u002Fmsdn.microsoft.com\u002Fen-us\u002Flibrary\u002Fdd642334.aspx","IsValueCreated"," property, if you need that.",[12,736,737,738,741],{},"Reference: ",[168,739],{"title":740,"href":740},"http:\u002F\u002Fcsharpindepth.com\u002FArticles\u002FGeneral\u002FSingleton.aspx",[168,742,740],{"href":740,"rel":743},[174],[12,745,746],{},[168,747,749],{"href":748},"\u002Fmedia\u002Farticulate-import\u002Fsingleton.png",[750,751],"img",{"style":752,"title":238,"src":753,"alt":238,"width":754,"height":755,"border":756},"display: none;","\u002Farticles\u002Fimages\u002Fsingleton_thumb.png",181,100,0,[758,759,760],"style",{},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":179,"searchDepth":180,"depth":180,"links":762},[],"2015-04-20T08:07:12.4800000-04:00","Singleton pattern is a design",{},"\u002Farticles\u002Fpattern-singleton-c",{"title":211,"description":764},"articles\u002Fpattern-singleton-c",[191],"MUee6xaTZWbY0EfT4p6OcSf6MrAr5AuTqJfu3KqqEVY",{"id":772,"title":773,"author":7,"body":774,"createdAt":791,"description":778,"extension":184,"img":183,"meta":792,"navigation":186,"path":793,"seo":794,"stem":795,"tags":796,"updatedAt":791,"__hash__":798},"articles\u002Farticles\u002Fdetermine-sharepoint.md","Determine SharePoint Site Master Page (in use)",{"type":9,"value":775,"toc":789},[776,779,786],[12,777,778],{},"Where to change the master page?",[12,780,781,782],{},"Well, if you don’t have the Publishing feature activated navigate to ",[168,783,785],{"href":784},"http:\u002F\u002Fyour_server\u002Fsites\u002Fexamples\u002F_Layouts\u002FChangeSiteMasterPage.aspx","\nhttp:\u002F\u002Fyour_server\u002Fsites\u002Fexamples\u002F_Layouts\u002FChangeSiteMasterPage.aspx",[12,787,788],{},"If you do have the Publishing feature enabled you can go to Master Page on the Site Settings page, under Look and Feel category.",{"title":179,"searchDepth":180,"depth":180,"links":790},[],"2015-04-20T08:07:12.2800000-04:00",{},"\u002Farticles\u002Fdetermine-sharepoint",{"title":773,"description":778},"articles\u002Fdetermine-sharepoint",[797],"sharepoint","ucKyHjTyPVW98QxFFGeAY6bN3vLl8zlKK1NR1vY0_Gs",1781574762792]