<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="https://www.w3.org/2005/Atom" xmlns:sy="https://purl.org/rss/1.0/modules/syndication/" xmlns:dc="https://purl.org/dc/elements/1.1/" xmlns:content="https://purl.org/rss/1.0/modules/content/" xmlns:wfw="https://wellformedweb.org/CommentAPI/" xmlns:slash="https://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>Note to self - a blog by Lucas Canavan</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/lucascan/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/lucascan/feed.xml</link>
    <description>Ramblings of a .NET web developer, IT generalist and advocate of the Windows Azure cloud platform</description>
    <lastBuildDate>Wed, 17 Apr 2019 03:24:09 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>Storing database connection strings for Azure cloud services (including encypting the connection strings)</title>
      <link>https://docs.microsoft.com/archive/blogs/lucascan/storing-database-connection-strings-for-azure-cloud-services-including-encypting-the-connection-strings</link>
      <pubDate>Fri, 26 Oct 2012 01:59:00 GMT</pubDate>
      <dc:creator><![CDATA[lucascanavan]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/lucascan/2012/10/26/storing-database-connection-strings-for-azure-cloud-services-including-encypting-the-connection-strings/</guid>
      <description><![CDATA[As my Surface didn't arrive on launch day, I had nothing better to do on a Friday night so...]]></description>
      <content:encoded><![CDATA[<div>As my Surface didn't arrive on launch day, I had nothing better to do on a Friday night so here&rsquo;s a&nbsp;blog post on Azure configuration settings.</div>
<div>Prior to Azure, web.config was the place ASP.NET devs would store settings.&nbsp; However, as you should consider web.config read-only in Azure, you should use the Azure .cscfg instead IF you&rsquo;ll ever want to change the settings without a re-deployment.</div>
<div>For most Azure work I&rsquo;ve done, I&rsquo;ve used something like:</div>
<div><strong>ASP.NET web.config</strong></div>
<div>&lt;connectionStrings&gt;</div>
<div>&nbsp; &lt;add name="DBConnection" providerName="System.Data.SqlClient" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=Northwind;Integrated Security=True;Persist Security Info=False;MultipleActiveResultSets=True" /&gt;</div>
<div>&lt;/connectionStrings&gt;</div>
<div><strong>Azure .cscfg</strong></div>
<div>&lt;ConfigurationSettings&gt;</div>
<div>&nbsp; &lt;Setting name="DBConnection" value="Server=tcp:xxxxxxxx.database.windows.net,1433;Database=xxxxxxxx;User ID=xxxxxxxx@xxxxxxxx;Password=xxxxxxxx;Trusted_Connection=False;Encrypt=True;MultipleActiveResultSets=True" /&gt;</div>
<div>&lt;/ConfigurationSettings&gt;</div>
<div><strong>Code</strong></div>
<div>// Default to reading from ASP.NET web.config.</div>
<div>string dbConnection = ConfigurationManager.ConnectionStrings["DBConnection"].ConnectionString;</div>
<div>// If running in Azure.</div>
<div>if (RoleEnvironment.IsAvailable)</div>
<div>{</div>
<div>&nbsp;&nbsp;&nbsp; // Read from Azure .cscfg instead.</div>
<div>&nbsp;&nbsp;&nbsp; dbConnection = RoleEnvironment.GetConfigurationSettingValue("DBConnection");</div>
<div>}</div>
<div><br />&nbsp;</div>
<div>However, due to a requirement to encrypt db connection strings on a recent project, I&rsquo;ve done the following instead:</div>
<div><strong>ASP.NET web.config</strong></div>
<div>&nbsp;</div>
<div>Store both connection strings in web.config.</div>
<div>&lt;connectionStrings&gt;</div>
<div>&lt;add name="DBConnection" providerName="System.Data.SqlClient" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=tdirect3;Integrated Security=True;Persist Security Info=False;MultipleActiveResultSets=True" /&gt;</div>
<div>&lt;add name="DBConnectionAzure" providerName="System.Data.SqlClient" connectionString="Server=tcp:xxxxxxxx.database.windows.net,1433;Database=xxxxxxxx;User ID=xxxxxxxx@xxxxxxxx;Password=xxxxxxxx;Trusted_Connection=False;Encrypt=True;MultipleActiveResultSets=True" /&gt;</div>
<div>&lt;/connectionStrings&gt;</div>
<div><br />&nbsp;</div>
<div><strong>Azure .cscfg</strong></div>
<div>Storing the &ldquo;key&rdquo; to the desired web.config setting in the Azure .cscfg.</div>
<div>&nbsp;</div>
<div>&lt;ConfigurationSettings&gt;</div>
<div>&lt;Setting name="DBConnection" value="DBConnectionAzure" /&gt;</div>
<div>&lt;/ConfigurationSettings&gt;</div>
<div><br />&nbsp;</div>
<div><strong>Code</strong></div>
<div>// Default to the &ldquo;key&rdquo; for the ASP.NET connection string setting I want when not running in Azure.</div>
<div>string dbConnectionRef = "DBConnection";</div>
<div>// If running in Azure.</div>
<div>if (RoleEnvironment.IsAvailable)</div>
<div>{</div>
<div>&nbsp;&nbsp;&nbsp; // Use the key for the ASP.NET connection string setting I want when running in Azure.</div>
<div>&nbsp;&nbsp;&nbsp; dbConnectionRef = RoleEnvironment.GetConfigurationSettingValue("DBConnection");</div>
<div>}</div>
<div>string dbConnection = ConfigurationManager.ConnectionStrings[dbConnectionRef].ConnectionString;</div>
<div><strong>Azure .csdef</strong></div>
<div>&lt;WebRole&gt;</div>
<div>&nbsp; &lt;Startup&gt;</div>
<div>&nbsp;&nbsp;&nbsp; &lt;Task commandLine="Startup.cmd" executionContext="elevated" /&gt;</div>
<div>&nbsp; &lt;/Startup&gt;</div>
<div>&lt;/WebRole&gt;</div>
<div><strong>Azure Startup.cmd</strong></div>
<div>REM *** Encrypt the web.config connectionStrings element.&nbsp; More info: <a href="https://msdn.microsoft.com/en-us/library/dtkwfdky(v=vs.100).aspx">https://msdn.microsoft.com/en-us/library/dtkwfdky(v=vs.100).aspx</a></div>
<div>%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis -pa "NetFrameworkConfigurationKey" "NT AUTHORITY\NETWORK SERVICE"</div>
<div>%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis -pef "connectionStrings" "e:\approot"</div>
<div><strong>The MSDN link above includes an example of what the ASP.NET web.config looks like when deployed to Azure with the encrypted connection strings.</strong></div>]]></content:encoded>
    </item>
    <item>
      <title>Powershell script to re-install Nuget packages</title>
      <link>https://docs.microsoft.com/archive/blogs/lucascan/powershell-script-to-re-install-nuget-packages</link>
      <pubDate>Wed, 23 Nov 2011 21:23:00 GMT</pubDate>
      <dc:creator><![CDATA[lucascanavan]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/lucascan/2011/11/23/powershell-script-to-re-install-nuget-packages/</guid>
      <description><![CDATA[Here's a simple Powershell script I wrote to re-install the Nuget packages that are associated with...]]></description>
      <content:encoded><![CDATA[<p>Here's a simple Powershell script I wrote to re-install the Nuget packages that are associated with the current Visual Studio solution.</p>
<p>In case you're wondering why you might want to do this, I often create backups of code that I'm working on.&nbsp; I&nbsp;deliberately exclude the "packages" folder from the backup so I keep the backup file size as small as possible.&nbsp; For what it's worth, I typically exclude the "bin" and "obj" folders too.&nbsp; Anyway, if I need to refer to one of my backups, I wanted a way to easily re-build the packages folder.&nbsp; As the packages.config file IS included in my backups, I can easily re-install the relevant packages via the following Powershell script executed from the <a href="https://nuget.org" target="_blank">Nuget</a> Package Manager Console.&nbsp; For example:</p>
<p>PM&gt; .\Install-Packages.ps1</p>
<p>Where "Install-Packages.ps1" contains the following code and is in the same folder as my Visual Studio solution (.sln) file:</p>
<p>&nbsp;</p>
<p><span style="font-family: courier new,courier;">$projects = Get-Project -All</span></p>
<p><span style="font-family: courier new,courier;">foreach($proj in $projects)</span><br /><span style="font-family: courier new,courier;">{</span><br /><span style="font-family: courier new,courier;">&nbsp;$projName = $proj.Name</span><br /><span style="font-family: courier new,courier;">&nbsp;Write-Host "Processing project $projName..."</span></p>
<p><span style="font-family: courier new,courier;">&nbsp;$path = Join-Path (Split-Path $proj.FileName) packages.config</span></p>
<p><span style="font-family: courier new,courier;">&nbsp;if(Test-Path $path)</span><br /><span style="font-family: courier new,courier;">&nbsp;{</span><br /><span style="font-family: courier new,courier;">&nbsp;&nbsp;Write-Host "Processing $path..."</span></p>
<p><span style="font-family: courier new,courier;">&nbsp;&nbsp;$xml = [xml]$packages = Get-Content $path</span><br /><span style="font-family: courier new,courier;">&nbsp;&nbsp;foreach($package in $packages.packages.package)</span><br /><span style="font-family: courier new,courier;">&nbsp;&nbsp;{</span><br /><span style="font-family: courier new,courier;">&nbsp;&nbsp;&nbsp;$id = $package.id</span><br /><span style="font-family: courier new,courier;">&nbsp;&nbsp;&nbsp;Write-Host "Installing package $id..."&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><br /><span style="font-family: courier new,courier;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;Install-Package -Id $id -Version $package.version</span><br /><span style="font-family: courier new,courier;">&nbsp;&nbsp;}</span><br /><span style="font-family: courier new,courier;">&nbsp;}</span><br /><span style="font-family: courier new,courier;">}</span></p>
<p><span style="font-family: arial,helvetica,sans-serif;"></span>&nbsp;</p>
<p><span style="font-family: arial,helvetica,sans-serif;">A possible improvement would be to wrap the above code in a Powershell function and include that unction in my Nuget profile as discussed in&nbsp;</span><span style="font-family: arial,helvetica,sans-serif;"><a href="https://docs.nuget.org/docs/start-here/Using-the-Package-Manager-Console#Setting_up_a_NuGet_Powershell_Profile" target="_blank">Setting up a NuGet Powershell Profile</a>.</span></p>]]></content:encoded>
    </item>
    <item>
      <title>Using a Windows Azure startup script to prevent your site from being shutdown</title>
      <link>https://docs.microsoft.com/archive/blogs/lucascan/using-a-windows-azure-startup-script-to-prevent-your-site-from-being-shutdown</link>
      <pubDate>Fri, 30 Sep 2011 01:27:00 GMT</pubDate>
      <dc:creator><![CDATA[lucascanavan]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/lucascan/2011/09/30/using-a-windows-azure-startup-script-to-prevent-your-site-from-being-shutdown/</guid>
      <description><![CDATA[Did you know that, by default, IIS will shutdown your site upon the following events?a) After being...]]></description>
      <content:encoded><![CDATA[<p><strong>Did you know that, by default, IIS will shutdown your site upon the following events?</strong><br /><br /><strong>a) After being idle for 20 minutes.</strong><br /><strong>b) Every 29 hours (due to recycling).</strong></p>
<p>The first vistor to your site after one of these events will encounter a poor user experience (slow response) whilst a new IIS app pool is initialised.&nbsp; Note, this IIS behaviour is "inherited" by Azure so read on if you're hosting your site on Azure and care about a consistant user experience.</p>
<p>To prevent this behaviour you can't just go into the IIS manager and make the necessary amendments to the default configuration when your site is hosted on Azure.&nbsp; <strong>Any configuration changes you make in a remote desktop session to your Azure instance(s) will get lost when the Azure fabric controller recycles your instances.</strong></p>
<p>The solution is to make the necessary IIS configuration changes via an Azure statup script as follows:</p>
<p>1) Startup script - add a startup script (batch file) to your web role project.&nbsp; I like to store mine in \Startup\Startup.cmd.</p>
<p>REM *** Prevent the IIS app pools from shutting down due to being idle.<br />%windir%\system32\inetsrv\appcmd set config -section:applicationPools -applicationPoolDefaults.processModel.idleTimeout:00:00:00</p>
<p>REM *** Prevent IIS app pool recycles from recycling on the default schedule of 1740 minutes (29 hours).<br />%windir%\system32\inetsrv\appcmd set config -section:applicationPools -applicationPoolDefaults.recycling.periodicRestart.time:00:00:00</p>
<p><br />*** GOTCHA 1 of 2 - Make sure your startup script is ANSI (not UTF-8) encoded.&nbsp; I've found good ol' "Visual Notepad" is the best way to achieve this task.&nbsp; However, I believe Visual Studio has an equivilent&nbsp;File...Save As option also.<br />*** GOTCHA&nbsp;2 of 2 - Make sure you select "Copy Always" as the&nbsp;"Copy to Output Directory" option in the properties for your startup script file.&nbsp;</p>
<p>2) ServiceDefinition.csdef -&nbsp;merge the "Startup" element highlighted below into your ServiceDefinition.csdef.</p>
<p>&lt;?xml version="1.0" encoding="utf-8"?&gt;<br />&lt;ServiceDefinition name="MyWindowsAzureProject" xmlns="<a href="https://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition">https://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition</a>"&gt;<br />&nbsp; &lt;WebRole name="MyWebRole" vmsize="Small"&gt;<br />&nbsp;...<br /><span style="background-color: #ffff00;">&nbsp;&nbsp;&nbsp; &lt;Startup&gt;</span><br /><span style="background-color: #ffff00;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Task commandLine="Startup\Startup.cmd" executionContext="elevated" /&gt;</span><br /><span style="background-color: #ffff00;">&nbsp;&nbsp;&nbsp; &lt;/Startup&gt;</span><br />&nbsp; &lt;/WebRole&gt;<br />&lt;/ServiceDefinition&gt;</p>
<p>Startup scripts run from "f:\approot" on your Azure instances so bear that in mind if you're using relative folder references.&nbsp; Personally, I like to make&nbsp;any path referencing as explicit as possible.</p>
<p>Startup scripts are the recommended way to make any pre-requisite installations and/or configuration changes that might be needed by your application.&nbsp; Mastering startup scripts&nbsp;is essential to performing more complex deployments to Azure.&nbsp; Whilst it might take a little more effort that the "old way", I'm confident that you'll appreciate the many benefits of the Platform As A Service (PaaS) approach employed by Azure so the additional, incremental effort, is well worth it.</p>]]></content:encoded>
    </item>
    <item>
      <title>My SharePoint 2010 developer machine build post</title>
      <link>https://docs.microsoft.com/archive/blogs/lucascan/my-sharepoint-2010-developer-machine-build-post</link>
      <pubDate>Fri, 09 Jul 2010 03:39:00 GMT</pubDate>
      <dc:creator><![CDATA[lucascanavan]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/lucascan/2010/07/09/my-sharepoint-2010-developer-machine-build-post/</guid>
      <description><![CDATA[I've built&nbsp;a few&nbsp;machines for SharePoint 2010 development lately so I thought I'd make a...]]></description>
      <content:encoded><![CDATA[<p>I've built&nbsp;a few&nbsp;machines for <strong>SharePoint 2010 development</strong> lately so I thought I'd make a note of my key learnings for my future benefit and, hopefully, the benefit of others also. </p>
<p>Note, the following comments are only appropriate to a DEVELOPMENT environment.&nbsp; PRODUCTION environments should follow <a target="_blank" href="https://technet.microsoft.com/en-au/library/ff608031.aspx">deployment documentation on Technet</a>.</p>
<h2>Firstly, some assumptions:</h2>
<ul>
<li>You really need at least 4Gb of RAM (preferrably more).&nbsp; Even the <a target="_blank" href="https://msdn.microsoft.com/en-us/library/ee554869.aspx">official documentation</a> acknowledges this.</li>
<li>I prefer to keep my development environments as close as possible to production and for that reason I develop on Server 2008 R2.</li>
<li>I'm building a development machine for full SharePoint Server 2010 not the free SharePoint Foundation 2010.</li>
<li>I'd prefer a "complete" install rather than "stand-alone" install for a variety of reasons including I want full SQL not SQL Express.</li>
</ul>
<h2>FAQs.</h2>
<p><b>1) Physical or virtual?</b></p>
<p>Virtual is more flexible if you have enough RAM (ie 6Gb minimum for single VM approach).&nbsp; Personally, due to the limitation of 4Gb of my laptop I've gone with physical using a .VHD native boot approach as disccussed in <a target="_blank" href="https://blogs.msdn.com/b/lucascan/archive/2009/05/23/building-a-win7-2008-r2-box-that-boots-off-vhd-s.aspx">this post</a>.&nbsp; However, there are reasons why this work-around isn't desirable is discussed in <a target="_parent" href="https://tristanwatkins.com/?p=885">this post</a>.</p>
<p><b>2) If I choose virtual, 1, 2 or 3 servers?</b></p>
<p>3 is great if you've got enough RAM as you can keep AD, SQL and SharePoint all on seperate physical tiers just as I know you would in a production deployment.&nbsp; However, you'll need 8Gb RAM to get a 3 server approach running well.&nbsp; Many developers prefer to go with a single VM so they don't have to boot multiple VMs.&nbsp; 2 VMs is a possible comprimise (ie AD &amp; SQL on same box).</p>
<p><b>3) I heard I can do a complete installation on a single server using non-domain accounts?</b></p>
<p>&nbsp;It's possible and documented at <a target="_blank" href="https://sharepoint.microsoft.com/blogs/fromthefield/Lists/Posts/Post.aspx?ID=112">this post</a>.&nbsp; However, there are reasons why this work-around isn't desirable some of which are discussed in <a target="_parent" href="https://tristanwatkins.com/?p=885">this post</a>. </p>
<h2>My Installation Checklist</h2>
<p>1) Install 2008 R2. If you go physical, resolve any driver issues as you normally would..</p>
<p>2) Add "Active Directory Domain Services" role.<br />&nbsp;- Run dcpromo.exe, new forest, 2008 R2 functional level.<br />&nbsp;- Install DNS.</p>
<p>3) SQL 2008 R2<br />&nbsp;- Database Engine Services<br />&nbsp;- Full-Text Search<br />&nbsp;- Managent Tools (Basic &amp; Complete)<br />&nbsp;- Use the same service account, system.<br />&nbsp;- FILESTREAM - enable for both Transact-SQL &amp; file I/O</p>
<p>&nbsp;4) SharePoint Server 2010<br />&nbsp;- PrerequisiteInstaller.exe then setup.exe.<br />&nbsp;- Choose to run the configuration wizard.<br />&nbsp;&nbsp;&nbsp;&nbsp; - Create a new server farm.<br />&nbsp;&nbsp;&nbsp;&nbsp; - Create a domain user and use it for the db access account.<br />&nbsp;&nbsp;&nbsp;&nbsp; - Central admin onto a known port eg 9999.<br />&nbsp;- Central admin farm config wizard<br />&nbsp;&nbsp;&nbsp;&nbsp; - Use the existing managed account.</p>
<p>5) Office 2010<br />&nbsp;- Don't need Access &amp; Publisher</p>
<p>6) SharePoint Designer 2010</p>
<p>7) Visual Studio 2010<br />&nbsp;- Custom install, uncheck:<br />&nbsp;&nbsp;&nbsp;&nbsp; - VB. C++. f#<br />&nbsp;&nbsp;&nbsp;&nbsp; - Graphics library<br />&nbsp;&nbsp;&nbsp;&nbsp; - Dotfuscator<br />&nbsp;&nbsp;&nbsp;&nbsp; - SQL Express</p>
<p>Good luck!</p>]]></content:encoded>
    </item>
    <item>
      <title>Azure ASP.NET to SQL Hello World! on the Introductory offer</title>
      <link>https://docs.microsoft.com/archive/blogs/lucascan/azure-asp-net-to-sql-hello-world-on-the-introductory-offer</link>
      <pubDate>Sat, 05 Jun 2010 04:05:00 GMT</pubDate>
      <dc:creator><![CDATA[lucascanavan]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/lucascan/2010/06/05/azure-asp-net-to-sql-hello-world-on-the-introductory-offer/</guid>
      <description><![CDATA[&ldquo;Inspired&rdquo; by a pub discussion with a mate last night, I finally got around to doing a...]]></description>
      <content:encoded><![CDATA[<p class="MsoNormal"><span style="font-family: Calibri;"><span style="font-size: small;">&ldquo;Inspired&rdquo; by a pub discussion with a mate last night, I finally got around to doing a &ldquo;hello world&rdquo; ASP.NET-&gt;SQL sample on Azure today.</span></span></p>
<p>&nbsp;<span style="font-family: Calibri;"><span style="font-size: small;">Unfortunately, I couldn&rsquo;t leave it up as I don&rsquo;t want it to start accruing charges.<span style="mso-spacerun: yes;">&nbsp; </span>However, I included a screen capture of it running below!</span></span></p>
<p>&nbsp;<span style="font-family: Calibri; font-size: small;">I set it up under the &ldquo;free&rdquo; </span><a href="https://www.microsoft.com/WindowsAzure/offers/popup.aspx?lang=en&amp;locale=en-US&amp;offer=COMPARE_PUBLIC"><span style="font-family: Calibri; font-size: small;">Introductory Special</span></a><span style="font-family: Calibri; font-size: small;"> that is available to the general public.<span style="mso-spacerun: yes;">&nbsp; </span>The most limited "free"&nbsp;resource under the intro offer is the 25 hours.<span style="mso-spacerun: yes;">&nbsp; Note, </span></span><a href="https://msdn.microsoft.com/en-au/subscriptions/ee461076.aspx"><span style="font-family: Calibri; font-size: small;">The intro offer available to MSDN subscribers</span></a><span style="font-family: Calibri;"><span style="font-size: small;"> is much more generous.</span></span></p>
<p>&nbsp;<span style="font-family: Calibri;"><span style="font-size: small;">Key findings from my investigation:<o:p></o:p></span></span></p>
<p class="MsoListParagraph"><span style="font-family: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol;"><span style="mso-list: Ignore;"><span style="font-size: small;">&middot;</span><span style="font: 7pt 'Times New Roman';">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-family: Calibri;"><span style="font-size: small;">I needed to provide my credit card even for the &ldquo;free&rdquo; intro.<o:p></o:p></span></span></p>
<p class="MsoListParagraph"><span style="font-family: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol;"><span style="mso-list: Ignore;"><span style="font-size: small;">&middot;</span><span style="font: 7pt 'Times New Roman';">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-family: Calibri;"><span style="font-size: small;">I needed to delete the app to prevent it using up my hours.<span style="mso-spacerun: yes;">&nbsp; </span>Stopping it isn&rsquo;t good enough.<span style="mso-spacerun: yes;">&nbsp; </span>Fortunately, you can keep the URL when you delete the app as long as you don&rsquo;t delete the service.<o:p></o:p></span></span></p>
<p class="MsoListParagraph"><span style="font-family: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol;"><span style="mso-list: Ignore;"><span style="font-size: small;">&middot;</span><span style="font: 7pt 'Times New Roman';">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-family: Calibri;"><span style="font-size: small;">The db will start accruing charges if you leave it there beyond 3 months provided by the intro.<span style="mso-spacerun: yes;">&nbsp; </span>You can&rsquo;t stop a db but you can drop it or the entire server.<o:p></o:p></span></span></p>
<p class="MsoListParagraph"><span style="font-family: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol;"><span style="mso-list: Ignore;"><span style="font-size: small;">&middot;</span><span style="font: 7pt 'Times New Roman';">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-family: Calibri;"><span style="font-size: small;">Generating a SQL Azure compatible script to create a typical app db was easy (Tasks-&gt;Generate Scripts).<span style="mso-spacerun: yes;">&nbsp; </span>However, you do need the SQL R2 version of SQL Management Studio.<o:p></o:p></span></span></p>
<p class="MsoListParagraph"><span style="font-family: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol;"><span style="mso-list: Ignore;"><span style="font-size: small;">&middot;</span><span style="font: 7pt 'Times New Roman';">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-size: small;"><span style="font-family: Calibri;">Here&rsquo;s an example ASP.NET web.config db connection string:</span></span></p>
<p>&nbsp;<span style="font-family: Consolas; color: blue; font-size: 9.5pt;">&lt;</span><span style="font-family: Consolas; color: #a31515; font-size: 9.5pt;">add</span><span style="font-family: Consolas; color: blue; font-size: 9.5pt;"> </span><span style="font-family: Consolas; color: red; font-size: 9.5pt;">name</span><span style="font-family: Consolas; color: blue; font-size: 9.5pt;">=</span><span style="font-family: Consolas; font-size: 9.5pt;">"<span style="color: blue;">MyDB</span>"<span style="color: blue;"> </span><span style="color: red;">connectionString</span><span style="color: blue;">=</span>"<span style="color: blue;">Server=tcp:<i style="mso-bidi-font-style: normal;">your_server</i>.database.windows.net;Database=<i style="mso-bidi-font-style: normal;">your_db</i>;User ID=<i style="mso-bidi-font-style: normal;">your_user@your_server</i>;Password=<i style="mso-bidi-font-style: normal;">your_password</i>;Trusted_Connection=False;Encrypt=True;</span>"<span style="color: blue;"> /&gt;</span></span></p>
<p>&nbsp;<o:p><span style="font-family: Calibri; font-size: small;">&nbsp;<img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/89/51/6505.AzureTest.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-89-51/6505.AzureTest.png" border="0" /></span></o:p></p>]]></content:encoded>
    </item>
    <item>
      <title>Interesting freely available content from recent web conference</title>
      <link>https://docs.microsoft.com/archive/blogs/lucascan/interesting-freely-available-content-from-recent-web-conference</link>
      <pubDate>Sat, 03 Apr 2010 23:51:00 GMT</pubDate>
      <dc:creator><![CDATA[lucascanavan]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/lucascan/2010/04/03/interesting-freely-available-content-from-recent-web-conference/</guid>
      <description><![CDATA[Thought I’d share that I noticed that the videos from the sessions at MIX10 are freely available...]]></description>
      <content:encoded><![CDATA[<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><FONT size=3><FONT face=Calibri>Thought I’d share that I noticed that the videos from the sessions at MIX10 are freely available at:<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p></FONT></FONT></P>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><A href="https://live.visitmix.com/Videos"><FONT size=3 face=Calibri>https://live.visitmix.com/Videos</FONT></A><o:p></o:p></P>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><o:p><FONT size=3 face=Calibri>&nbsp;</FONT></o:p></P>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><FONT size=3><FONT face=Calibri>For those unfamiliar with MIX10, it’s a “conference for web designers and developers building the world's most innovative web sites”.<o:p></o:p></FONT></FONT></P>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><o:p><FONT size=3 face=Calibri>&nbsp;</FONT></o:p></P>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><FONT size=3><FONT face=Calibri>I’m planning to incorporate watching some of these videos into my ongoing training plan.<o:p></o:p></FONT></FONT></P>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><o:p><FONT size=3 face=Calibri>&nbsp;</FONT></o:p></P>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><FONT size=3><FONT face=Calibri>The session on Orchard is particularly of interest, “<SPAN style="COLOR: #525e50; mso-bidi-font-family: Calibri; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri">the Orchard project is focused on delivering a .NET-based CMS application that will allow users to rapidly create content-driven Websites, and an extensibility framework that will allow developers and customizers to provide additional functionality through extensions and themes”<o:p></o:p></SPAN></FONT></FONT></P>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><SPAN style="COLOR: #525e50; mso-bidi-font-family: Calibri; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri"><o:p><FONT size=3 face=Calibri>&nbsp;</FONT></o:p></SPAN></P><SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-ansi-language: EN-AU; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"><A href="https://www.orchardproject.net/">https://www.orchardproject.net/</A></SPAN>]]></content:encoded>
    </item>
    <item>
      <title>SharePoint Application Page Button Click Not Working After First Click</title>
      <link>https://docs.microsoft.com/archive/blogs/lucascan/sharepoint-application-page-button-click-not-working-after-first-click</link>
      <pubDate>Fri, 02 Apr 2010 19:41:00 GMT</pubDate>
      <dc:creator><![CDATA[lucascanavan]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/lucascan/2010/04/02/sharepoint-application-page-button-click-not-working-after-first-click/</guid>
      <description><![CDATA[I was recently working on a SharePoint Application Page and encountered an issue whereby button...]]></description>
      <content:encoded><![CDATA[<P mce_keep="true">I was recently working on a SharePoint <A href="https://msdn.microsoft.com/en-us/library/bb418732.aspx" mce_href="https://msdn.microsoft.com/en-us/library/bb418732.aspx">Application Page</A> and encountered an issue whereby button clicks were only working for the first click.&nbsp; The second and subsequent clicks weren't working.</P>
<P mce_keep="true">The issue appears to be due to SharePoint interfering with the JavaScript that is necessary to process an ASP.NET post-back.&nbsp; Anyway, adding an OnClientClick attribute as illustrated in the following example resolved the issue for me.&nbsp; I hope this helps you to overcome this issue if you happen to encounter it also!</P>
<P mce_keep="true">&lt;asp:Button ID="btnMybutton" runat="server" OnClick="btnMybutton_OnClick" Text="Button" <SPAN style="FONT-SIZE: 20px; FONT-WEIGHT: bold">OnClientClick="_spFormOnSubmitCalled = false;"</SPAN> /&gt;</P>]]></content:encoded>
    </item>
    <item>
      <title>Skip buttons weren't working after installing Win7 RC</title>
      <link>https://docs.microsoft.com/archive/blogs/lucascan/skip-buttons-werent-working-after-installing-win7-rc</link>
      <pubDate>Sat, 23 May 2009 01:57:00 GMT</pubDate>
      <dc:creator><![CDATA[lucascanavan]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/lucascan/2009/05/23/skip-buttons-werent-working-after-installing-win7-rc/</guid>
      <description><![CDATA[After installing Win7 RC on my production Media Center box (ie the box I literally can't watch TV...]]></description>
      <content:encoded><![CDATA[<P>After installing Win7 RC on my production Media Center box (ie the box I literally can't watch TV without) I noticed an annoying problem.</P>
<P>The skip forward &amp; back buttons didn't work!</P>
<P>At first I feared the issue was&nbsp;an intended "by design" change.&nbsp; After all, I'm sure&nbsp;the commercial TV networks don't like us skipping over their ads.&nbsp; Fortunately, it seems&nbsp;it's a compatibility&nbsp;issue between Win7 RC and my IR receiver (in case, Zalman HD160, IRTrans).</P>
<P>The solution:</P>
<P>Map the IR codes to the keyboard equivalents for the skip buttons via the following changes in %ProgramFiles%\IRTrans\remotes\apps.cfg.</P>
<P>[APP]MEDIACENTER</P>
<P>NEXT [KEY]\CTRLF<BR>PREV [KEY]\CTRLB</P>]]></content:encoded>
    </item>
    <item>
      <title>Building a Win7/2008 R2 box that boots off .vhd's</title>
      <link>https://docs.microsoft.com/archive/blogs/lucascan/building-a-win72008-r2-box-that-boots-off-vhds</link>
      <pubDate>Sat, 23 May 2009 01:33:00 GMT</pubDate>
      <dc:creator><![CDATA[lucascanavan]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/lucascan/2009/05/23/building-a-win72008-r2-box-that-boots-off-vhds/</guid>
      <description><![CDATA[A&nbsp;cool new feature in Windows7 &amp; Server 2008 R2 is the ability to&nbsp;boot from a .vhd...]]></description>
      <content:encoded><![CDATA[<P>A&nbsp;cool new feature in Windows7 &amp; Server 2008 R2 is the ability to&nbsp;boot from a .vhd file!</P>
<P>Having your OS isolated to a .vhd file has a number of advantages including but not limited to:<BR>- easier to backup, <BR>- multi-boot scenarios that are more isolated from each other,<BR>- ability to trial new builds on your physical hardware without trashing your existing installation.</P>
<P>Whilst there's a variety of ways that boot from .vhd can be achieved, here's the steps I've used.&nbsp; Note, I deliberately tried to avoid the installation GUI by doing part of the install via the WinPE command line.&nbsp; It's possible to automate the remainer of the installation process via an unattend.xml file.&nbsp; However, that's a potential topic for a future blog post.</P>
<P>1) Install the Windows AIK.</P>
<P>Windows® Automated Installation Kit (AIK) for Windows® 7 RC<BR><A href="https://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;FamilyID=60a07e71-0acb-453a-8035-d30ead27ef72" mce_href="https://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;FamilyID=60a07e71-0acb-453a-8035-d30ead27ef72">https://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;FamilyID=60a07e71-0acb-453a-8035-d30ead27ef72</A></P>
<P>2) Create bootable WinPE media (DVD or USB key) and include imagex.exe from the AIK on it.</P>
<P>Windows PE Walkthroughs<BR><A href="https://technet.microsoft.com/en-us/library/dd799278(WS.10).aspx" mce_href="https://technet.microsoft.com/en-us/library/dd799278(WS.10).aspx">https://technet.microsoft.com/en-us/library/dd799278(WS.10).aspx</A></P>
<P>3) (optional) Include the install.wim from your desired Windows installation media on your WinPE media.&nbsp; Alternatively, I suppose you can always refer to the original installatiom media instead.</P>
<P>4) Boot off your WinPE media then run the following DISKPART commands (possible to script this via DISKPART /s)</P>
<P>select disk 0<BR>clean<BR>create partition primary size=100<BR>format quick fs=ntfs label=System<BR>assign letter=s<BR>active<BR>create partition primary<BR>format quick fs=ntfs label=Data<BR>assign letter=d<BR>create vdisk file=d:\win7rc.vhd type=fixed maximum=10240<BR>attach vdisk<BR>select disk 1<BR>create partition primary<BR>format quick fs=ntfs label=OS<BR>assign letter=c<BR>exit</P>
<P>5) Extract the Windows image to your .vhd and copy the necessary boot file to your system partition.</P>
<P>imagex /apply w7rc_x86.wim 5 c:<BR>bcdboot c:\windows /s s:<BR></P>
<P>*** START OF UPDATE 7-Aug-2009 ***</P>
<P><FONT size=3 face=Calibri>You *might*&nbsp;need the following also.&nbsp; I don't recall doing this when I originally posted this however I needed this in a recent attempt.&nbsp;</FONT></P>
<P><FONT size=3 face=Calibri>bcdedit /store <I>drive:</I>\boot\bcd /set {guid} device vhd=[locate]\win7rc.vhd</FONT></P>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><FONT size=3 face=Calibri>bcdedit /store <I>drive:</I>\boot\bcd /set {guid} osdevice vhd=[locate]\win7rc.vhd</FONT></P>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p><FONT size=3 face=Calibri>&nbsp;</FONT></o:p></P>
<P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><FONT size=3 face=Calibri>Where <I>drive:</I> is the system partition.</FONT></P>
<P>*** END OF UPDATE 7-Aug-2009 ***&nbsp;</P>
<P>exit&nbsp;</P>
<P>Your system will reboot and proceed with installation.&nbsp; For those that are keen to automate the remainder of the installation, here's a link to the relevant info:</P>
<P>Step-by-Step: Basic Windows Deployment for IT Professionals<BR><A href="https://technet.microsoft.com/en-us/library/dd349348(WS.10).aspx" mce_href="https://technet.microsoft.com/en-us/library/dd349348(WS.10).aspx">https://technet.microsoft.com/en-us/library/dd349348(WS.10).aspx</A></P>]]></content:encoded>
    </item>
    <item>
      <title>SQL updates failing on WSS Developer VM</title>
      <link>https://docs.microsoft.com/archive/blogs/lucascan/sql-updates-failing-on-wss-developer-vm</link>
      <pubDate>Fri, 15 May 2009 17:48:00 GMT</pubDate>
      <dc:creator><![CDATA[lucascanavan]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/lucascan/2009/05/15/sql-updates-failing-on-wss-developer-vm/</guid>
      <description><![CDATA[I noticed SQL updates (KB960089 but also SQL SP3) were failing to apply on the WSS Developer...]]></description>
      <content:encoded><![CDATA[<p>I noticed SQL updates (KB960089 but also SQL SP3) were failing to apply on the WSS Developer VM.</p>
<p>After many hours of frustration, I located this great blog post that helped me to overcome the issue:&nbsp; <br /><a href="https://blogs.msdn.com/sqlserverfaq/archive/2009/01/30/part-1-sql-server-2005-patch-fails-to-install-with-an-error-unable-to-install-windows-installer-msp-file.aspx">https://blogs.msdn.com/sqlserverfaq/archive/2009/01/30/part-1-sql-server-2005-patch-fails-to-install-with-an-error-unable-to-install-windows-installer-msp-file.aspx</a></p>
<p>In my case, the missing .msi's were from SQL Developer edition.&nbsp; The missing .msp's were from SQL SP2 &amp; KB948109.</p>
<p>Here's the download location for SQL KB948109:<br /><a href="https://download.microsoft.com/download/7/c/7/7c7e394d-ddbf-4f2a-9e86-cf054e04931d/SQLServer2005-KB948109-x86-ENU.exe">https://download.microsoft.com/download/7/c/7/7c7e394d-ddbf-4f2a-9e86-cf054e04931d/SQLServer2005-KB948109-x86-ENU.exe</a></p>
<p>Windows SharePoint Services 3.0 SP1 Developer Evaluation VPC Image<br /><a href="https://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;FamilyID=1beeac6f-2ea1-4769-9948-74a74bd604fa">https://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;FamilyID=1beeac6f-2ea1-4769-9948-74a74bd604fa</a></p>]]></content:encoded>
    </item>
  </channel>
</rss>