﻿<?xml version="1.0" encoding="utf-8"?>
<rss
  version="2.0">
  <channel>
    <title>Umbraco blog</title>
    <link>https://rasolo.net/blogs/umbraco/feed/</link>
    <description />
    <language>en-us</language>
    <managingEditor>rasmusolofsson@protonmail.com</managingEditor>
    <lastBuildDate>Fri, 07 Apr 2023 14:06:07 Z</lastBuildDate>
    <item>
      <link>https://rasolo.net/blogs/umbraco/namespace-umbraco-not-found/</link>
      <category>Umbraco</category>
      <title>Namespace name 'Umbraco' could not be found solution</title>
      <description>Error message:

Error CS0246: The type  or namespace name 'Umbraco' could not be found (are you missing a using directive or an  assembly reference?

I just tried to build my site after having added a few things, and an Umbraco update from version 8.2.0 -&gt; 8.2.1 was one of them. Azure Pipelines could not build the site however, and eventually I figured out why:The .Core project in my case had not had the hintpaths updated to point from 8.2.0 to 8.2.1 from the nuget installer. What I did was to copy paste the working hintpaths that the installer had fixed in the .tests project.
So from Rasolo.Tests.csproj I copied:
 &lt;Reference Include="Umbraco.Core, Version=8.0.0.0, Culture=neutral, processorArchitecture=MSIL"&gt;&lt;HintPath&gt;..\..\packages\UmbracoCms.Core.8.2.1\lib\net472\Umbraco.Core.dll&lt;/HintPath&gt;&lt;/Reference&gt;&lt;Reference Include="Umbraco.Examine, Version=8.0.0.0, Culture=neutral, processorArchitecture=MSIL"&gt;&lt;HintPath&gt;..\..\packages\UmbracoCms.Web.8.2.1\lib\net472\Umbraco.Examine.dll&lt;/HintPath&gt;&lt;/Reference&gt;&lt;Reference Include="Umbraco.Web, Version=8.0.0.0, Culture=neutral, processorArchitecture=MSIL"&gt;&lt;HintPath&gt;..\..\packages\UmbracoCms.Web.8.2.1\lib\net472\Umbraco.Web.dll&lt;/HintPath&gt;&lt;/Reference&gt;&lt;Reference Include="Umbraco.Web.UI, Version=8.0.0.0, Culture=neutral, processorArchitecture=MSIL"&gt;&lt;HintPath&gt;..\..\packages\UmbracoCms.Web.8.2.1\lib\net472\Umbraco.Web.UI.dll&lt;/HintPath&gt;&lt;/Reference&gt;
And pasted it over the old references in the Rasolo.Core.csproj project.
 
 </description>
      <pubDate>Wed, 30 Oct 2019 16:09:52 Z</pubDate>
      <author>rasmusolofsson@protonmail.com</author>
    </item>
    <item>
      <link>https://rasolo.net/blogs/umbraco/whitelist-umbraco-back-office/</link>
      <category>Umbraco</category>
      <title>How to whitelist Umbraco back office</title>
      <description>Don't want anyone being able to surf to your Umbraco back office in production? I have the solution. Simply go to your web.config file and paste in this:
&lt;location path="umbraco"&gt;&lt;system.webServer&gt;&lt;security&gt;&lt;ipSecurity allowUnlisted="false" denyAction="Forbidden"&gt;&lt;add allowed="true" ipAddress="{your ip}" /&gt;&lt;/ipSecurity&gt;&lt;/security&gt;&lt;/system.webServer&gt;&lt;/location&gt;
where {your ip} is the ip address to your computer. So let's say your ip address is 64.203.49.67, the field should look like this:
&lt;add allowed="true" ipAddress="64.203.49.67" /&gt;.
The 
&lt;location path="umbraco&gt;
at the start means that everything below is about the url path /umbraco on the site. If the url to your back office is something other than umbraco, you have to change it to the path you have.Transform the IP addressSince my website is open source, including the web.config, I don't want my IP addresses exposed. My (sort of dirty) solution is to use powershell to "transform" my ip addresses. What I have done is to have variables for my devices IP addresses like so:
&lt;add allowed="true" ipAddress="$(allowedIpAddress1)" /&gt;&lt;add allowed="true" ipAddress="$(allowedIpAddress2)" /&gt;&lt;add allowed="true" ipAddress="$(allowedIpAddress3)" /&gt;
and in Azure Pipelines -&gt; Release -&gt; Tasks -&gt; Deploy Azure Web Service -&gt;  Post Deployment Action -&gt; Inline Script, I use bash commands to find the variables and replace them with the ip addresses for my devices, like so:
sed -i -e 's/$(allowedIpAddress1)/{ip address 1}/g' Web.configsed -i -e 's/$(allowedIpAddress2)/{ip address 2}/g' Web.configsed -i -e 's/$(allowedIpAddress3)/{ip address 3}/g' Web.config
This will transform the variables to my ip addresses after the deployment is completed.</description>
      <pubDate>Sun, 13 Oct 2019 16:10:00 Z</pubDate>
      <author>rasmusolofsson@protonmail.com</author>
    </item>
    <item>
      <link>https://rasolo.net/blogs/umbraco/clear-umbraco-browser-cache/</link>
      <category>Umbraco</category>
      <title>How to clear the browser cache in Umbraco</title>
      <description>Have you changed the front-end or installed a new project and the browser refuses to display the changes/front-end in general? Change the number in the version attribute of the &lt;clientDependency&gt; tag in the file ClientDependency.config. This will force Umbraco to update the cache. You should also clear the browser cache for good measure. You can usually do that by pressing CTRL + SHIFT + DELETE and check the Cache box and press delete.</description>
      <pubDate>Sat, 21 Dec 2019 18:57:47 Z</pubDate>
      <author>rasmusolofsson@protonmail.com</author>
    </item>
    <item>
      <link>https://rasolo.net/blogs/umbraco/translate-checkboxes/</link>
      <category>Umbraco</category>
      <title>How to translate checkboxes in a block in Umbraco V7</title>
      <description>We have a block containing a checkbox with the name "ElementarySchool" and another one with the name "LeisureHome":

 
We want to translate them on the page that uses the block, to Swedish. It currently looks like this:
 
The "Tags" property containing the block is named "ExampleBlockArea" and has the alias "exampleBlockArea".
The document type containing the "Tags" property is named "ExamplePage" and has the alias "examplePage".
In order to translate the checkbox properties we go to the uSync backoffice.config file.We create a DictionaryItem for the ExamplePage called "ExamplePage", within that a DictionaryItem for the Tags property called "exampleBlockArea", within that a DictionaryItem for each of the checkboxes, called "elementarySchool" and "leisureHome" respectively. Final code will look like this:

&lt;DictionaryItem Key="ExamplePage"&gt;
    &lt;Value LanguageId="1520" LanguageCultureAlias="en-US"&gt;&lt;![CDATA[This is an example page]]&gt;&lt;/Value&gt;
    &lt;Value LanguageId="3" LanguageCultureAlias="sv-SE"&gt;&lt;![CDATA[Detta är en exempelsida]]&gt;&lt;/Value&gt;
    &lt;DictionaryItem Key="exampleBlockArea"&gt;
        &lt;Value LanguageId="3" LanguageCultureAlias="sv-SE"&gt;&lt;![CDATA[Taggar]]&gt;&lt;/Value&gt;
        &lt;DictionaryItem Key="elementarySchool"&gt;
            &lt;Value LanguageId="3" LanguageCultureAlias="sv-SE"&gt;&lt;![CDATA[‎‎‎‎‎‎‏‏‎‏‏‎Grundskola]]&gt;&lt;/Value&gt;
        &lt;/DictionaryItem&gt;
        &lt;DictionaryItem Key="leisureHome"&gt;
            &lt;Value LanguageId="3" LanguageCultureAlias="sv-SE"&gt;&lt;![CDATA[‎‎‎‎‎‎‏‏‎‏‏‎Fritidshem]]&gt;&lt;/Value&gt;
        &lt;/DictionaryItem&gt;
    &lt;/DictionaryItem&gt;
&lt;/DictionaryItem&gt;

The final result of the page will look like this:
(I realize now that I have mixed Swedish and English in my example, my bad. Too tired to change now though).</description>
      <pubDate>Mon, 10 Feb 2020 20:38:52 Z</pubDate>
      <author>rasmusolofsson@protonmail.com</author>
    </item>
    <item>
      <link>https://rasolo.net/blogs/umbraco/permalinks-in-umbraco/</link>
      <category>Umbraco</category>
      <title>How to create permalinks in Umbraco</title>
      <description>Method 1: rewriteRules.config
In web root/config/rewriteRules.config you can enter rewrite rules for your site, eg:
&lt;?xml version="1.0" encoding="utf-8"?&gt;&lt;rules&gt; &lt;rule name="Redirect Hello World" stopProcessing="true"&gt;        &lt;match url="^hello-world$" /&gt;        &lt;action type="Redirect" url="/blogs/programming/hello-world-python" redirectType="Permanent" /&gt;  &lt;/rule&gt;&lt;/rules&gt;
 
this will create a redirect from "rasolo.net/hello-world" to "rasolo.net/blogs/programming/hello-world-python".
 
 
 
 
Method 2: Url Tracker extension
You can create rewrite rules as permalinks using Url Tracker extension, like so:

The extension can be installed through NuGet and you can find more information here:https://our.umbraco.com/packages/developer-tools/301-url-tracker/
 </description>
      <pubDate>Tue, 19 May 2020 18:54:04 Z</pubDate>
      <author>rasmusolofsson@protonmail.com</author>
    </item>
    <item>
      <link>https://rasolo.net/blogs/umbraco/migration-error-solution/</link>
      <category>Umbraco</category>
      <title>How to solve Umbraco table migration error</title>
      <description>I have created a custom table for my site called "rasoloComments". When developing locally I would get the following error:
-&gt; System.InvalidOperationException: The migration plan does not support migrating from state "stage.rasolo.azurewebsites.net".
In order to get rid of the error you have to empty the row in the table of the database named "dbo.umbracoKeyValue" with the name of the database in the error message.

 
My query looked like this:
delete from dbo.umbracoKeyValue where [value] = 'stage.rasolo.azurewebsites.net'
 
 
 </description>
      <pubDate>Sat, 18 Jul 2020 19:24:25 Z</pubDate>
      <author>rasmusolofsson@protonmail.com</author>
    </item>
    <item>
      <link>https://rasolo.net/blogs/umbraco/how-to-deploy-umbraco-to-azure/</link>
      <category>Umbraco</category>
      <title>How to deploy Umbraco to Azure</title>
      <description>I made a post on our.umbraco.com where I gave an explanation for how to deploy Umbraco V8 to Azure after finding out for myself with my own website, the link to that post is here: https://our.umbraco.com/forum/umbraco-8/96796-deploying-v8-app-to-azure-using-azure-devops</description>
      <pubDate>Sun, 13 Oct 2019 16:09:45 Z</pubDate>
      <author>rasmusolofsson@protonmail.com</author>
    </item>
    <item>
      <link>https://rasolo.net/blogs/umbraco/win32-not-a-valid-filetime/</link>
      <category>Umbraco</category>
      <title>Umbraco Not a valid Win32 FileTime solution</title>
      <description>When unit testing a method using .GetCropUrl(), an exception can be thrown.
Error message:
Argument out of range exception. Not a valid Win32 FileTime
exception is thrown when the method is called in unit tests.Cause: The extension method uses ToFileTimeUtc() method on the media items property "UpdateDate". By default in unit tests, the property value is DateTime.Min.Solution: Mock the property UpdateDate on the media item to be, for example. DateTime.Now().
Mock&lt;IPublishedContent&gt; blogPageMock = SetupContentMock(DocumentTypeAlias.BlogPage, blogPageProperty1);blogPageMock.Setup(x =&gt; x.UpdateDate).Returns(DateTime.Now);</description>
      <pubDate>Tue, 15 Oct 2019 16:10:02 Z</pubDate>
      <author>rasmusolofsson@protonmail.com</author>
    </item>
    <item>
      <link>https://rasolo.net/blogs/umbraco/line-breaks-text-area/</link>
      <category>Umbraco</category>
      <title>Umbraco line breaks are not displayed from Text Area solution</title>
      <description>
You have printed out the text of a TextArea property type in Umbraco, but the line breaks are ignored?Solution:Wrap the text in Html.Raw() and use the string extension method Replace() for \n with &lt;br&gt;.
 
Like so:
 @Html.Raw(Model.Preamble.Replace("\n", "&lt;br /&gt;"))
Where Preamble is the mapped Text Area string property.
\n stands for line break but it does not automatically get used when displayed in the web browser so it needs to be replaced with &lt;br&gt; tags.
 
Don't forget to null check Preamble in this case before doing replace</description>
      <pubDate>Thu, 17 Oct 2019 16:09:47 Z</pubDate>
      <author>rasmusolofsson@protonmail.com</author>
    </item>
    <item>
      <link>https://rasolo.net/blogs/umbraco/map-crop-url/</link>
      <category>Umbraco</category>
      <title>How to map GetCropUrl in Umbraco</title>
      <description>Update 2020-09-13:
For Umbraco 8.6.4 and above the last line in MapFromImageCropperAttribute looks like this:
property.SetValue(model, imageCropperValue.Src + imageCropperValue.GetCropUrl(CropName, Current.ImageUrlGenerator, useFocalPoint: true));
On my Blog post pages I have a Image Cropper property editor for a property called TeaserMedia, which is used for the images on the start page. On the editor I have defined a media crop alias "startPage" which is 500x500. In my code I retrieve all of the blog posts as IPublishedContent and map them to a view model. The problem was that I had to foreach every item and run .GetCropUrl() for every blog post as IPublishedContent in order to retrieve the crop urls. I did not want to loop and simply use UmbracoMapper.MapCollection and be done with it. I checked the documentation on Andy Butland's readme on GitHub but could not find anything. So I simply created a issue and asked Andy if it was possible, and not even an hour later I got an answer!So what you need to do is create an attribute that implements IMapFromAttribute:
using System;using System.Reflection;using Umbraco.Core.PropertyEditors.ValueConverters;using Zone.UmbracoMapper.V8;using Zone.UmbracoMapper.V8.Attributes;namespace Rasolo.Core.Features.Shared.Attributes{   [AttributeUsage(AttributeTargets.Property)]   public class MapFromImageCropperAttribute : Attribute, IMapFromAttribute   {     public string CropName { get; set; }     public void SetPropertyValue&lt;T&gt;(object fromObject, PropertyInfo property, T model, IUmbracoMapper mapper)     {        var imageCropperValue = fromObject as ImageCropperValue;        if (imageCropperValue == null)         {            return;         }        property.SetValue(model, imageCropperValue.Src + imageCropperValue.GetCropUrl(CropName));     }  }}
and then I have created a property called TeaserMediaUrl for the url of the cropped image on the page.On the property I have two attributes:

Property mapping
MapFromImageCropper

Property mapping to tell it to map to the source property which is the TeaserMedia property of ImageCropper.MapFromImageCropper which is the newly created Attribute telling it which crop it is I want to map to. The property looks like this:
[PropertyMapping(SourceProperty = BlogPostPagePropertyAlias.TeaserMedia)][MapFromImageCropper(CropName = BlogPostPageMediaCropAliases.StartPage)]public string TeaserMediaUrl { get; set; }
Where "BlogPostPagePropertyAlias.TeaserMedia" is simply a constant string with the value "teaserMedia" and "BlogPostPageMediaCropAlias.StartPage" is also a constant string of "startPage" which is the crop alias.Now this property will automatically be mapped with the url to the cropped image. Now I can use UmbracoMapper.MapCollection and be done with it!All credit goes to Andy Butland and 21robin12 on GitHub! </description>
      <pubDate>Wed, 23 Oct 2019 16:09:50 Z</pubDate>
      <author>rasmusolofsson@protonmail.com</author>
    </item>
    <item>
      <link>https://rasolo.net/blogs/umbraco/add-translations/</link>
      <category>Umbraco</category>
      <title>How to add translations in Umbraco</title>
      <description>If you have found missing translations in Umbraco for your language, you can go to this folder in Umbraco core: https://github.com/umbraco/Umbraco-CMS/tree/v7/dev/src/Umbraco.Web.UI/umbraco/config/lang which is the place where the translations are stored. Open the english file and search for the error message that you will be getting in english instead of your desired language. Find the area alias and the key alias of the key you want to translate. In your own project you can now go to www(the location where umbraco is installed)/config/lang/{language}.user.xml. Add the area alias and key alias to the file if they don't already exist there and add your own translations. Compile and reload the site and the translations should be there. You can also create a pull request to Umbraco with your translations so that others can benefit.</description>
      <pubDate>Thu, 24 Oct 2019 16:09:37 Z</pubDate>
      <author>rasmusolofsson@protonmail.com</author>
    </item>
    <item>
      <link>https://rasolo.net/blogs/umbraco/roslyn-error/</link>
      <category>Umbraco</category>
      <title>How to solve Roslyn not found error</title>
      <description>When deploying your Umbraco site to your webserver for the first time or even when working locally and installing an Umbraco project, you are fairly like to get a Roslyn not found error. This is because the Roslyn does not automatically get installed when compiling. My previous solution was to upload my Roslyn folder to the production server. But now I have managed to let Azure pipelines build server include Roslyn when building.Add the following to the .csproj file in your web project: 
  &lt;Target Name="CopyRoslynFiles" AfterTargets="AfterBuild" Condition="!$(Disable_CopyWebApplication) And '$(OutDir)' != '$(OutputPath)'"&gt;    &lt;ItemGroup&gt;      &lt;RoslynFiles Include="$(CscToolPath)\*" /&gt;    &lt;/ItemGroup&gt;    &lt;MakeDir Directories="$(WebProjectOutputDir)\bin\roslyn" /&gt;    &lt;Copy SourceFiles="@(RoslynFiles)" DestinationFolder="$(WebProjectOutputDir)\bin\roslyn" SkipUnchangedFiles="true" Retries="$(CopyRetryCount)" RetryDelayMilliseconds="$(CopyRetryDelayMilliseconds)" /&gt;  &lt;/Target&gt;
 
OR
 
run this command in package manager console targeting the project that is failing:
Update-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform -r
 </description>
      <pubDate>Thu, 24 Oct 2019 16:09:55 Z</pubDate>
      <author>rasmusolofsson@protonmail.com</author>
    </item>
    <item>
      <link>https://rasolo.net/blogs/umbraco/application-insights-fix/</link>
      <category>Umbraco</category>
      <title>Solve Application Insights error in Umbraco</title>
      <description>When adding Application Insights to a clients App Service a site breaking error was unexpectedly thrown. The error read:
The process cannot access the file 'D:\home\site\wwwroot\App_Data\TEMP\PluginCache\umbraco-plugins.RD0003FF8F3E23.hash' because it is being used by another process.
The solution was to simply delete the file mentioned in the error message.
For the production environment I tried deleting the files beforehand in order to skip the error message entirely, but that was unfortunately not possible. You have to activate Application Insights to the App Service and then you can delete the file(s) (You can delete the entire content of the folder if you want to).
I did this for the dev/test environment first and allowed the site to run for a day or two to see if the error would reappear when the temporary file it complained about would get regenerated. The error did not reappear.
So, when activating Application Insights for your website, keep in mind that an error message can be thrown. But now you know how to fix it!
 </description>
      <pubDate>Wed, 29 Jan 2020 13:21:26 Z</pubDate>
      <author>rasmusolofsson@protonmail.com</author>
    </item>
    <item>
      <link>https://rasolo.net/blogs/umbraco/solve-blank-page-in-umbraco/</link>
      <category>Umbraco</category>
      <title>How to solve blank page in Umbraco after upgrading</title>
      <description>
After upgrading Umbraco you might get a blank page.

Potential solutions are:

Emptying out the fileDependencyExtensions attribute in the ClientDependency.config file in the Config folder of the web root and restarting the web page.
Upload your local Umbraco folder to the server replacing the files.

To prevent this from happening in the first place you should remove your umbraco folder from source control. If you use git you should add the folder to .gitignore and remove the folder from git.</description>
      <pubDate>Mon, 18 Oct 2021 10:32:20 Z</pubDate>
      <author>rasmusolofsson@protonmail.com</author>
    </item>
    <item>
      <link>https://rasolo.net/blogs/umbraco/rte-img-upload-error/</link>
      <category>Umbraco</category>
      <title>How to solve img upload error in the editor in Umbraco </title>
      <description>When adding images to the rich text/tiny mce editor I received the javascript error message: "TypeError: imgElm is null insertMediaInEditor umbraco.services.min.js:1 Angular 3 r completeTask d Possibly unhandled rejection: {} angular.js:15697:15 Angular 8 e get g $digest $apply r completeTask". The problem was that I had not added the img element to the appsettings.json file which states that image uploads are allowed in the editor.
Here is the line of code I added that adds it: 
img[id|dir|lang|longdesc|usemap|style|class|src|onmouseover|onmouseout|border|alt=|title|hspace|vspace|width|height|align|umbracoorgwidth|umbracoorgheight|onresize|onresizestart|onresizeend|rel|data-id]
So my Umbraco config section of the appsettings.json file went from this:
    "Umbraco": {
      "CMS": {
        "ModelsBuilder": {
          "ModelsMode": "Nothing"
        },
        "Hosting": {
          "Debug": false
        },
        "Content": {
          "ContentVersionCleanupPolicy": {
            "EnableCleanup": true
          }
        },
        "Global": {
          "Id": "d10df5a0-1472-43d7-b4fc-3505a2143be5"
        },
        "RichTextEditor": {
          "ValidElements": "-pre[class|align|style],+a[id|style|rel|data-id|data-udi|rev|charset|hreflang|dir|lang|tabindex|accesskey|type|name|href|target|title|class|onfocus|onblur|onclick|ondblclick|onmousedown|onmouseup|onmouseover|onmousemove|onmouseout|onkeypress|onkeydown|onkeyup],-strong/-b[class|style],-em/-i[class|style],-strike[class|style],-u[class|style],#p[id|style|dir|class|align]",
          "CustomConfig": {
            "style_formats": "[{\"title\":\"Custom...\",\"items\":[ {\"title\":\"Code\",\"block\":\"pre\"}]},{\"title\":\"Headers\",\"items\":[{\"title\":\"Heading 2\",\"block\":\"h2\"}, {\"title\":\"Heading 3\",\"block\":\"h3\"}, {\"title\":\"Heading 4\",\"block\":\"h4\"}, {\"title\":\"Heading 5\",\"block\":\"h5\"} ]}]"
          }
        }
      }
    }
to this:
"Umbraco": {
      "CMS": {
        "ModelsBuilder": {
          "ModelsMode": "Nothing"
        },
        "Hosting": {
          "Debug": false
        },
        "Content": {
          "ContentVersionCleanupPolicy": {
            "EnableCleanup": true
          }
        },
        "Global": {
          "Id": "d10df5a0-1472-43d7-b4fc-3505a2143be5"
        },
        "RichTextEditor": {
          "ValidElements": "-pre[class|align|style],+a[id|style|rel|data-id|data-udi|rev|charset|hreflang|dir|lang|tabindex|accesskey|type|name|href|target|title|class|onfocus|onblur|onclick|ondblclick|onmousedown|onmouseup|onmouseover|onmousemove|onmouseout|onkeypress|onkeydown|onkeyup],-strong/-b[class|style],-em/-i[class|style],-strike[class|style],-u[class|style],#p[id|style|dir|class|align],img[id|dir|lang|longdesc|usemap|style|class|src|onmouseover|onmouseout|border|alt=|title|hspace|vspace|width|height|align|umbracoorgwidth|umbracoorgheight|onresize|onresizestart|onresizeend|rel|data-id]",
          "CustomConfig": {
            "style_formats": "[{\"title\":\"Custom...\",\"items\":[ {\"title\":\"Code\",\"block\":\"pre\"}]},{\"title\":\"Headers\",\"items\":[{\"title\":\"Heading 2\",\"block\":\"h2\"}, {\"title\":\"Heading 3\",\"block\":\"h3\"}, {\"title\":\"Heading 4\",\"block\":\"h4\"}, {\"title\":\"Heading 5\",\"block\":\"h5\"} ]}]"
          }
        }
      }
    }
 </description>
      <pubDate>Sat, 11 Mar 2023 19:02:53 Z</pubDate>
      <author>rasmusolofsson@protonmail.com</author>
    </item>
    <item>
      <link>https://rasolo.net/blogs/umbraco/get-service-without-di/</link>
      <category>Umbraco</category>
      <title>How to get services/interfaces in Umbraco 7 without dependency injection </title>
      <description>To get a service or interface in Umbraco 7 without Dependency Injection you can use the DependencyResolver class. This is useful in classes like ApplicationEventHandler where you can't use DI, by default anyway.
Here is an example by mapping the global settings page using Umbraco Mapper:
                        
var umbracoHelper = DependencyResolver.Current.GetService();
var umbracoMapper = DependencyResolver.Current.GetService();
var globalSettingsModel = new GlobalSettingsModel();
var globalSettings = umbracoHelper.GlobalSettings;
umbracoMapper.Map(globalSettings, globalSettingsModel);
</description>
      <pubDate>Mon, 03 Apr 2023 10:10:04 Z</pubDate>
      <author>rasmusolofsson@protonmail.com</author>
    </item>
  </channel>
</rss>