God jul!

Comment

God jul!

Vi på Advise Solutions vill tacka alla för ett fantastiskt år och önska God Jul. I år har vår julgåva gått till Barncancerfonden och Drottning Silvias barnsjukhus.

Comment

Comment

Låt oss presentera Andreas Hansson

Sedan i våras har vi en ny seniorkonsult hos oss, Andreas Hansson. Vi är mycket glada, och stolta, över att Andreas valde att börja här på Advise. Vi känner Andreas sedan tidigare då flertalet av oss har jobbat tillsammans på Altran.
Andreas är en mycket duktig utvecklare, främst på asp.net.
Välkommen Andreas!

Vi kommer att återkomma med en liten intervju med Andreas så ni alla har en chans att lära känna honom bättre! 

Comment

5 Comments

Workaround for SQL Server 2016 issue: Shared Memory Provider, error: 15 - Function not supported

EDIT: Apparently an issue with updates from Windows (cred to Markuss): https://www.veritas.com/support/en_US/article.000116721 
Workaround below is still valid if you do not want to uninstall security updates.

Today was a fun day. The entire team (except me, being a consultant with your own computer ftw) started having issues reading data from our project's database. And with "issues" I mean "No connections working at all".

The exception they got was this:
"A transport-level error has occurred when receiving results from the server. (provider: Shared Memory Provider, error: 15 - Function not supported)"

No changes had been made to the connection strings, database layer code or anything related to this. We haven't yet found out what caused it but it's likely a change in AD policies or changes made to the antivirus policies. 

The workaround is to disabled shared memory connections. Instructions for SQL Server 2016 below (should be the same for other versions as well)

  1. Open "SQL Server 2016 Configuration Manager" (should be on the start menu)
  2. Select "SQL Server Network Configuration"
  3. Select "Protocols for MSSQL2016" ("MSSQL2016" being the name of the database instance)
  4. Double click on "Shared memory" and set "Enabled" to "No".
  5. Select "SQL Server Instances"
  6. Right click on "SQL Server (MSSQL2016)" and click on Restart (again, "MSSQL2016" being the name of the database instance)

5 Comments

Comment

Advise höstkonferens 2016

Under helgen 3-5 November drog hela företaget till Amsterdam för vår höstkonferens 2016. Det blev tulpaner, träskor, docker, Rembrandt, Autofixture, Heineken, tus.io och en hel del god mat.

Fredagen var mest mindre konferenspass och sightseeing runt på stan. Vi avslutade dagen med en härlig middag i ett mysigt litet hak placerat på en bakgård i en av de mer skumma delarna av staden.

Hela lördagen spenderades i konferenslokalen med intressanta dragningar av Emil som gjorde en presentation om AutoFixture. Ett ramverk som hjälper en att skriva tester lite lättare. Efter Emil följde Jonas W som hade grundlig genomgång av docker, en plattform för att packetera mjukvara i containrar. Konferensdagen avslutades med att Stefan hade en dragning om hans implementation av tus.io protokollet.

Comment

2 Comments

Make Visual Studio Online builds great again (or at least working again)

This Wednesday when I arrived at work, all our builds in Visual Studio Online (VSO) had failed and no new builds were able to complete. They all failed with "Access denied" errors on specific files. As VSO fails for wierd reasons some times and we had no hurry we just let it sit for a couple of hours to see if the error corrected itself. 

Unfortunately, it did not. So at lunch time we started investigating and soon found out that the VSO team made an update to the build servers the same day. Nothing in the change log seemed to relate to the issue so we continued to investigate.

It seemed that we could create new file (e.g. minified builds of our JS code) but could not update existing files (e.g. inject said minified code into our index.html file). The same build tasks that did this in VSO worked perfectly on our local machines.

Some time passed. Google gave us nothing and the builds were still not working. As a test I changed my local index.html file to "read only" and tried to run the build task locally. Voila! Gulp showed the same "Access denied" error. As the next step I added a PowerShell-script build step just before our Gulp script, which removed the "read only" attribute from our index.html file. The build completed successfully! 

So here you go, a PowerShell-script that removes the read only attribute from ALL files in the folder that VSO uses for checkouts:

Get-ChildItem "$(Agent.BuildDirectory)" -Recurse |
    Where-Object {$_.GetType().ToString() -eq "System.IO.FileInfo"} |
    Set-ItemProperty -Name IsReadOnly -Value $false

How to use it? 

  1. Edit the build definition of your build
  2. Click on "Add build step..."
  3. Select "Utility" and click on "Add" next to "PowerShell++" 
  4. Close the "Add build step..." modal and drag the new PowerShell++ step to the top of your build definition
  5. In the right side panel, set "Type" to "Inline script" and paste the code above in the "Script" field
  6. Click on Save and enjoy working builds (at least for now...)

2 Comments

2 Comments

Using .NET 4.6 on Azure Service Fabric

By default .NET framework 4.6 is not installed on the nodes of a Service Fabric cluster. According to the Azure support forum, this is because they wish to keep the nodes "as clean as possible". Citation needed as I can't seem to find the post again... Anyway it is not
installed. Read below on how to install it. If you already have an existing cluster, check the bottom of this post.

I wish to create a new cluster with support for .NET 4.6

Setup your cluster as usual in the Azure Portal but do not click on "Create" on the summary tab. 
Instead click on "Download template and parameters". In the new "window" that opens to the right click on "Deploy" and then on "Edit template".

Locate the following in the template on the right:

"virtualMachineProfile": {
                   "extensionProfile": {
                       "extensions": [

And add the following object to the end of the extensions array:

{
   "name":"CustomScriptExtensionInstallNet46",
   "properties":{
      "publisher":"Microsoft.Compute",
      "type":"CustomScriptExtension",
      "typeHandlerVersion":"1.7",
      "autoUpgradeMinorVersion":false,
      "settings":{
         "fileUris":[
            "https://serviceprofiler.azurewebsites.net/content/downloads/InstallNetFx46.ps1"
         ],
         "commandToExecute":"powershell.exe -ExecutionPolicy Unrestricted -File InstallNetFx46.ps1"
      },
      "forceUpdateTag":"RerunExtension"
   }
}

Thanks to the people at AzureServiceProfiler for hosting the Powershell script. For security reasons you might want to download the script, verify it and host it yourself before using the above extension.

Click on Save and then on "Edit parameters". Specify the parameters as below:

  • CLUSTERLOCATION (string) - The location specified under Basics -> Location (e.g. North Europe)
  • CLUSTERNAME (string) - The same value as Basics → Cluster name
  • COMPUTELOCATION (string) - The same value as CLUSTERLOCATION
  • VMSTORAGEACCOUNTNAME (string) - The name of the storage account to hold the image files for the VM. This account will be created so use any valid and available storage account name.
  • ADMINUSERNAME (string) - The same value as Basics → User name
  • ADMINPASSWORD (securestring) - The same value as Basics → Password
  • DNSNAME (string) - The same value as Basic → Cluster name

Leave everything else as is. Click OK. Select the resource group you specified under Basics -> Resource group or create a new one if that is what you chose under Basics -> Resource group.

Choose the same location as specified for the parameters CLUSTERLOCATION and COMPUTELOCATION.

Click "Review legal terms", read the terms and then click on "Purchase" to accept the terms.

Click on "Create" to create the cluster. Note that it might take a really long time to complete the creation (hours if you are unlycky). Status will be set to "Accepted" and nothing else seems to happen. Just wait for it and it will eventually complete.


I have already created my cluster and I do not wish to re-create the cluster!

A bit more work but really no problem. You can still install it by remoting to each of the nodes in the cluster and installing it manually. Use the URL for your cluster as the URL for remote deskop and specify the port based on which node you wish to connect to.

Node 0 = 3389 (the default port for remote desktop)
Node 1 = 3390
Node 2 = 3391
Node X = (3389 + X)

Note that each node needs to restart after the installation and that your .NET 4.6 application will not work properly until all nodes have been updated.

Also, as Nick pointed out in the comments, if you scale up your cluster, the new machines in the cluster will not have .NET 4.6 installed and your cluster will break.

2 Comments

Comment

Fixing SignalR when using bower with jQuery 3.0

jQuery 3.0 was released yesterday. Oh happy days! Or is it? This morning one of our dev servers stopped working complaining that "indexOf is not a function" deep inside our minified JS code. It took some time to realize that this is because of a weird bower dependency declaration in SignalR (and possibly other libs). SignalR's bower.json specifies the jQuery dependency version as ">=1.6.4". This will of course break with the jQuery 3.0 as it contains loads of breaking changes. 

So how to fix? Open your project's bower.json and add the version of jQuery that you would like to use as a dependency (latest working version for SignalR seems to be 2.2.4). Also add a resolution to your version of jQuery. Example:

{
  "name": "...",
  "version": "...",
  "authors": [],
  "main": "...",
  "license": "...",
    "dependencies": {
        "jquery":  "^2.2.4", 
        ...
    },
  "resolutions": {
            "jquery": "^2.2.4" 
  }
}

Once bower.json is updated, delete your bower_components folder, clear the bower cache (bower cache clean) and run bower install to install everything again. 

There is an issue at SignalR's github page so hopefully this will be fixed for real soon. https://github.com/SignalR/SignalR/issues/3710

Comment

Comment

Advise Solutions går in och stöttar StroedeRalton

Vi har tecknat ett avtal med StroedeRalton där vi ska vara med och stötta vid utvecklingen av StroedeRaltons nya lojalitetssystem ImLoyalty. Systemet låter användare filtrera ut kunder för att sedan skicka ut kampanjer med t ex rabatter till dessa. Systemet är byggt enligt ett modernt microservice-tänk med hjälp av  Domain Driven Design, Microsoft .NET, Microsoft Azure och AngularJS.

Vi på Advise Solutions är mycket glada och att vi har fått förtroende från StroedeRalton att få vara med och utveckla systemet.

Comment

Comment

Build - Dag 3

Washington Square

Washington Square

Sista dagen på Build började lite senare än de tidigare dagar, så jag passade på att följa ett tips jag hade fått att gå till Liguria Bakery i North Beach och testa deras focaccia. Tipsaren sa att man skulle gå dit tidigt om man ville ha något eftersom de stänger när det är slutsåld, så jag passade på att vara där 10 minuter innan de öppnade. Det var redan en liten kö då, men när jag väl fick min focaccia insåg jag att den var väl värt att vänta på.

Efter frukosten var det dags att lyssna på Mads Kristensen och hans prat om Visual Studio 2015 Extensibility. Han visade hur enkelt det var att gå från idé till färdig extension som var nedladdningsbar ifrån Visual Studio Marketplace samt upplagt på Github.

Sedan lyssnade jag på Dan Rosenstein som visade olika IoT -projekt av ökande svårighetsgrad. Han började med ett nybörjarbygge och avslutade med ett exempel på en professionell verkstadsmaskin som drevs av en Raspberry Pi 3 med Windows 10 IoT Core.

På lunchen passade jag på att gå ut och träffa lite geocaching-folk. Det visade sig att en av de personerna som var där var en kille som jobbade på Xamarin i San Francisco. Han är en av en handfull personer som utvecklar Mono. Det var superintressant att prata med honom. Bland annat berättade han om när Microsoft köpte Xamarin. Ingen visste någonting. Dagen innan det annonserades fick han veta att han skulle vara på kontoret klockan 9 på morgonen. Han berättade även om Xamarin Test Cloud som består av ca 2000 fysiska telefoner som man kan ansluta till som en del av byggprocessen.

Tillbaka på Build gick jag förbi Githubs stånd. Där pratade jag med en kille från Arvika. Han jobbar tillsammans med folk från hela världen på Githubs windowsklient. All kommunikation sker via Github och projektet drivs som vilket annat open source Github-projekt som helst.

Evan Martin från Google pratade om varför man valde TypeScript när man började utveckla Angular 2. Man tittade på Flow och Closure, men kom fram till att TypeScript hade allt man behövde. Det var dock en del problem att få in TypeScript i den existerande kodbasen, men man bedömde ändå att fördelarna med TypeScript vägde tyngre.

Dagens siste session för min del handlade om hur Microsoft och Node.js spelar tillsammans. Tyvärr verkade det som att demospöket hade vaknat till liv, för det var inte mycket som gick som det var tänkt här. 

Och plötsligt var Build 2016 slut. Vaktarna började spärra av olika delar av Moscone Center, kaffet var slut, juicen var borta och det ända som var kvar var en massa inspiration och minnen som man nu behöver att sortera och komma på hur man skall kunna använda för att skapa nya coola applikationer.

Comment

Comment

Build 2016 - Dag 2

monkey.jpg

Andra dagen på Build började med en väntat, men mycket glädjande nyhet: Xamarin blir open source och kommer att ingå gratis i alla versioner av Visual Studio 2015. Även Mono blir open source vilket öppnar upp för alla möjliga tänkbara scenarier. Vad sägs till exempel om att köra c#-kod på Playstation?

Miguel de Icaza, en av Xamarins grundare, sa att han var mycket glad att nu vara en del av Microsoft, men att han var ännu gladare över att den längsta jobbintervjun i hans liv äntligen var över.

Det var även en hel del snack om Azure IoT Suite. Microsoft ser att användningsområden och applikationerna inom IoT ökar och ökar med lavinartat fart, och man vill vara en del av detta. Därför jobbar man mycket med att försöka standardisera alla olika typer av applikationer. Azure IoT Suite är ett sätt att underlätta för dig som utvecklare att skapa en produkt och snabbt komma igång med att använda den och få ut den på marknaden.

Som första delen av en trilogi körde Scott Hanselman och Scott Hunter en session som hette A New Hope. Som alltid var The Lesser Scotts ett nöje att lyssna på, så jag rekommenderar alla att ta en titt på denna (https://channel9.msdn.com/Events/Build/2016/B891). En av de coolaste features som de visade var att man nu kan debugga kod direkt från Nuget i Visual Studio utan att ladda ner källkoden lokalt. En annan sak de nämnde var att Analyzers i Visual Studio nu är Open Source. Mycket Open source just nu.

Andra delen av trilogin missade jag, men Return of The Jedi med Mads Torgersen och Dustin Campbell handlade om framtiden för C# (av någon anledning ligger inte den ute på Channel 9). Här gick man genom vad som kommer i nästa version av C#, bland annat tuples med Named Values, Local functions, pattern matching och binary literals.

Jag pratade även med en kille från Angular som berättade att man kan kombinera Angular 1.5 med Angular 2. Det är bra nyheter för de som redan har en stor Angular 1.5-applikation och som inte känner att de vill göra om allting i Angular 2. Man kan istället ha kvar sin gamla kod som den är, men skriva allt nytt i Angular 2. Tyvärr fungerar det bara med 1.5, så om man kör en tidigare version får man uppdatera den till 1.5 först. Han sa också att man räknar med att kunna lämna beta-stadiet för 2.0 senast i slutet av april.

Dagen avslutades med jättefest. Microsoft hade hyrd en hel gata mitt i San Francisco där det var musik, gyckel, mat och dryck till alla. Dock tog gyrosen slut. Bäst var nog Belgian Delight, som var en pannkaka med grädde, banan, nutella och glass. Mycket gott. Jag var även på Xamarins party på Jillians. Tyvärr var det alldeles för mycket folk där, så man kunde knappt röra sig. 

Comment

Comment

Build 2016 - Dag 1

Äntligen har det blivit dag för Build 2016. Jag ankom till San Francisco tisdag kväll och bestämde mig för att gå direkt till registreringen efter att jag checkat in på hotellet. Därefter var det en liten sammankomst för alla svenska deltagare. Traditionen tro fick man där en snygg hoodie med sig hem. 

Erfarenheten sa mig att jag skulle vara tidigt på plats för att få möjlighet att komma in och se key noten på plats. Tur att jag hade registrerat mig dagen innan, för när jag kom ca 45 minuter innan, var det en jättekö för att registrera sig. Det var även en ganska lång kö för att komma in på Key Note. Som tur var fick jag plats, men många kom för sent.

Det var mest mjukvarunyheter som kom fram i dagens Key Note, förutom att HoloLens började levereras idag. En kort sekund trodde jag att vi eventuellt skulle få en sådan med oss hem, men det fick vi dock inte. Det var post-it, stylus och linjal som dominerade nyheterna. I och med Windows 10 Anniversary update kommer vi få en ny plattform som kallas Windows Ink.

Cortana kommer också få en del förbättringar, till exempel kommer det att bli mycket enkelt att skapa applikationer som integrerar Cortana med externa tjänster. Windows 10 kommer också att få Bash och Emacs inbyggd i operativet.

Xbox ingår numera också i Universal App-plattformen, vilket betyder att alla dina appar kommer nu att vara nedladdningsbara på Xbox One via Store. Du kan även utveckla på Xbox One från och med idag.

Det var inte så mycket snack om Xamarin dock, och förvånande lite snack om Windows Phone. Vi får se om det kommer något mera imorgon.

I år är det mycket fokus på laborationer, så jag passade på att testa lite IoT bland annat. Det händer otroligt mycket med Windows 10 IoT Core och jag fick testa nya verktyg som jag inte hade sett förut fastän jag har meckat en del med Windows 10 på Raspberry Pi innan. Det finns även möjlighet att labba med telefoner och Microsoft Band.

NASA finns på plats och man kan utforska universum med hjälp av HoloLens. Kön för att få lov att köa för att komma in var dock löjligt lång, så jag hoppade över detta idag. Vi får se om det är lite lugnare imorgon.

En tråkig sak är att en del av sessionerna är på en annan plats, nämligen på Hotell Marriott som förvisso inte ligger långt borta, men det blir ändå en massa springande fram och tillbaka. Detta gjorde att jag valde bort Nyheter i Typescript, som jag egentligen ville ha lyssnat på. 

I övrigt har jag pratat med en massa branchfolk. Jag fick bland annat en snack med en representant för Puppet Labs och han blev naturligtvis väldigt nöjd när jag berättade att jag har använd Puppet för att installera våra servrar i de två senaste projekten jag jobbat i.

Imorgon är en ny dag, och jag återkommer med ett blogginlägg när dagen är slut. Under tiden kan man följa mig på twitter @j_sommer om man vill ha lite uppdateringar under dagen.

 

Comment

Comment

Advise Solutions åker på Build 2016

Build är Microsofts årliga konferens för utvecklare, där nyheter inom windowsutveckling brukar presenteras. Konferensen håller på i tre dagar och hållas i San Francisco. Varje dag är indelat i ett antal sessioner och nytt för i år är att Microsoft har fokuserat mera på hands-on laborationer än tidigare år. En annan nyhet är också att många sessioner återkommer flera gånger så man inte behöver missa någonting intressant för att det krockar med något annat som man vill lyssna på.

 

I år är konferensen från 30 mars till 1 april och Advise Solutions har en medarbetare på plats som kommer att rapportera löpande, dels här på bloggen och dels på Twitter.

 

Huvudfokus i år verkar vara Xamarin, IoT samt Webbutveckling med Angular om man skall döma utifrån det preliminära programmet. Microsoft har ju tidigare i år köpt Xamarin som är ett verktyg för att utveckla i .net för mobilplattformer som Android och IOS. Det kommer även vara en del laborationer med Raspberry Pi 3 samt laborationer med Angular 2. 

 

Det skall också bli spännande att se om Microsoft även kommer att göra någonting åt den, minst sagt, höga licenskostnaden för Xamarin då den verkar vara en anledning till att många utvecklare drar sig för att börja använda verktyget.

 

Om du vill följa oss på twitter, så finns vi på @j_sommer. Där kommer det eventuellt även att dyka upp ett eller annat tips på go mat eller andra sevärdheter runt om i staden också.

Comment

Comment

Advise bygger nytt IT-stöd för Västra Götalandsregionen

Advise Solutions har under flera år samarbetat med Västra Götalandsregionen. VGR har återigen vald att teckna avtal med oss för att under det närmaste året vara med och bygga IT-stöd för ersättningsberäkning inom specialisttandvården.

Projektet ingår i tandvårdsstödet TEARS och kommer att bli en webb-applikation byggt i C#, Angular och Typescript.

Vi på Advise Solutions är mycket glada att vi åter har fått förtroende från VGR att vara med och utveckla regionens IT-stöd.

Comment

Comment

Vi välkomnar Andreas Hansson till Advise!

Vi är mycket glada, och stolta, över att Andreas Hansson har valt att börja jobba på Advise. Andreas är en mycket duktig senior utvecklare med inriktning på utveckling på .Net plattformen.

Andreas ansluter sig till oss från Altran .

Välkommen!

Comment

Comment

Dell root CA issue

Yesterday the user "rotorcowboy" created a post on Reddit where he wrote that he found a trusted root certificate on his brand new Dell XPS 15 containing the private key for the certificate. That the private key is included is alarming as it gives malicious people the possibility to create fake certificates for known sites such as Google or your internet bank and that your computer will automatically trust these certificates. This means that even though the traffic is encrypted it can be read by a third party. As a demo, a fake certificate for Google was created: https://i.imgur.com/T9CnRy6.png

Dell have issued a statement explaining why the certificate is installed and instructions on how to remove it.

The original reddit thread also contains instructions on how to remove the certificate.

Not all Dell laptops seem to be vulnerable. Detectify.com have created a site where you can test if your computer is vulnerable. The site does not seem to work in Firefox so just use Chrome. https://dellrootcheck.detectify.com/

Comment

2 Comments

Getting started with Azure China

One of our customers is using Azure exclusively as their main platform for hosting, CDN and video streaming.
Their infrastructure is built upon Azure Web Apps and Storage accounts for storing large files.

The solution works beautifully in Europe and the US. Users from China however have reported that they experience low performance (package drops and timeouts) when trying to use the system. Actions that take 30 seconds to complete from Europe can take up to 20 minutes from inside China.

To solve this issue we looked at a number of solutions. Azure has data centers located all over the world so our first attempt was to install the system in a center closer to China. Unfortunately our tests showed that even if we installed our system in the closest possible center (which is located in Hong Kong) the Great firewall of China still made most of the system very hard to work with.

When this did not work we started investigating Azure China. Azure China is pretty much a clone of Azure but is located inside mainland China i.e. behind the firewall. It is completely separated from regular Azure but is kept fairly up to date with the updates in Azure.

As the information on Azure China is old and/or inadequate when using Google I will try to write down how you can get started and things that are of extra importance.


Register an account

First of you need to register for an account as Azure China is its own entity, separated from Azure.

To register you need a company registered in China and someone who can read Chinese.
Registration is done somewhere on http://www.windowsazure.cn

Payment is done using AliPay, China UnionPay (CUP) or invoice. Invoice is only available if you plan to spend more than 150 000 CNY per year (roughly 22 000 euro).

The AliPay and CUP alternatives are pre-paid, i.e. you buy credits in Azure China which can later be used. Credits are valid for 12 months once bought. The prices are roughly the same as in Europe. Pricing information is available on http://www.windowsazure.cn/pricing/pia/ (click on English to get an English version).


Logging in / setup infrastructure

Once you have your account you will get an unique URI (something like https://manage.windowsazure.cn/<customer id>).
This is the Management portal for Azure China. Credentials should also be included in the confirmation from Azure China.

EDIT: Azure Portal is now available at https://portal.azure.cn/

The management portal is all in English so we got that going for us! :)

Once logged in you can setup things in pretty much the same way as in regular Azure.

Note that Azure China is a few versions behind regular Azure and not all services are supported. A list of supported and not supported services can be found at http://www.windowsazure.cn/documentation/articles/developerdifferences/#readyonwacn
Use Google translate or something to translate it from Chinese.

Deploying sites

Normally one would use the Visual Studio "Publish" function, log in to one's account and download the deploy profile all from within Visual Studio. I haven't gotten this to work for Azure China. This could be that I already have a subscription to regular Azure on my account or something.

Instead log in to the Management portal and navigate to your site.

First thing you need to do is setup deployment credentials.
Just below the header "Publish your app" you should have an option "Setup deployment credentials". Click this link and provide a username and a password.

Note that these credentials are the same for all sites in the same app service plan.

Once finished, click on the "Download the publish profile" link to download the profile used by Visual Studio. The profile must be copied to <site project>\Properties\PublishProfiles and preferably added to the site's csproj file. To deploy the site, right click on the project and click on Publish. The deployment profile should be added to the list of targets.

Note that deploys from Europe to China often times out or have some other error occur during deployment. We solved this by setting up an extra slot called "deploy" which we deploy to and then swap in the management portal. This way we don't risk leaving the site in a broken state.

Kudu services / SCM

Kudu services is a nice tool to use when working with web apps in Azure. It gives you process monitoring and access to logs and the site's files. You can access it by navigating to <site name>.scm.azurewebsites.net or <site name>.scm.chinacloudsites.cn

Kudu services also exist in Azure China but is a few versions behind. The only feature I've missed in Azure China's version is drag and drop support for uploading files which makes it a hassle to add new files.

In Azure you would use your Microsoft account to login to Kudo. In Azure China you use basic authorization using the deployment credentials for the app service plan.


Storage accounts

Connection strings to the storage account differ a bit from regular Azure. You will need to add an EndpointSuffix to the connection string for it to work:
DefaultEndpointsProtocol=https;AccountName=<name>;AccountKey=<key>;EndpointSuffix=core.chinacloudapi.cn;

I haven't found a way to view an Azure China storage account in Visual Studio but Azure Storage Explorer 6 preview 3 does support it. https://azurestorageexplorer.codeplex.com/

Legal

For custom domains an ICP license is required (https://en.wikipedia.org/wiki/ICP_license).
To my understanding this is not needed if using the chinacloudsites.cn domain as Azure already have an ICP license. Verify this with your legal department just to be sure.

Are you planning to use a custom SSL certificate? The certificate must approved by the Chinese government. The certficiate used by *.chinacloudsites.cn is already approved.

Good to know / tips and tricks

  • Azure China seem to use a low TTL on their DNS records. The result is that from time to time you will get an "This address does not exist" error when trying to access your site, Kudo services or the management portal. Just refresh and it usually works right away.
  • Timeouts during deploys are common (at least from Europe). Setup an extra slot on your site where you can deploy and the swap with the live site.
  • Uploading stuff is painfully slow. On a network where I usually get 10-15 MB/s to regular Azure I got roughly 30 KB/s to Azure China (using cURL for a web api).
  • Azure China supports FTP for all its web apps by default using the deployment credentials. Set your client to auto resume failed transfers and you're good to go.
  • Kudo services supports the "unzip" command, i.e. you can FTP a zip and then unzip it on the server. This has saved me hours in waiting for data to transfer.
  • The wild card SSL certificate for *.chinacloudsites.cn uses SHA-1 as hashing function and the CA is not trusted by iOS devices.

 

2 Comments

Välkommen Stefan

Välkommen Stefan

Hej Stefan, du är ju nyanställd hos oss på Advise Solutions. Vem är du?

Namn? Stefan Matsson

Kan du beskriva dig själv med tre ord? Ambitiös – Klart att man ska lära sig så mycket det bara går och komma så långt som möjligt i livet ;) Ödmjuk – Ett av det bästa sätten att uppnå ovanstående är att vara ödmjuk till andras tankar och idéer. Det är så vi utvecklas både som människor och utvecklare. Säkerhetsnörd - CSRF, XSS, MITM mitigation? Oh yeah baby! ;)

Varför började du på Advise och beskriv vad du känner för företaget? Jag började känna mig färdig med det jobb jag hade och kom i kontakt med Jonas Wikström via gemensamma vänner. Hängde med på en frukost med gänget och kände direkt att det här är ett kul gäng med väldigt kompetenta människor i. Klart man vill jobba där!

Vad är det roliga med att vara konsult? Att jobba med olika människor, organisationer och tekniker. Man lär sig väldigt mycket på att träffa folk som löser samma problem på ett annorlunda sätt än vad man tidigare tänkt på.

Vad arbetar du med just nu? Just nu sitter jag och utvecklar en plattform för att kör skräddarsydd produktinformation i mobilappar. Lösningen består av en rad olika system och en rad olika tekniker så det är mycket att hålla koll på men självklart även väldigt roligt!

Vad gör du på din fritid? Eftersom vi snart ska få vårt första barn är det mycket barnrelaterade saker just nu. Annars är jag en stor fan av att spela TV-spel, kolla fotboll och att brygga mjöd

Advise Solutions har blivit Silver Partner till Microsoft inom Application Development

Vi är mycket nöjda med att kunna berätta att vi har blivit Silver Partner till Microsoft. Advise Solutions erbjuder tjänster riktade mot Microsofts .Net-plattform och därför känns det som ett naturligt steg att ingå ett partnerskap med Microsoft. I och med detta har vi fått ett kvitto på att våra medarbetare kan erbjuda en hög kompetens och erfarenhet vilket ger en trygghet för våra kunder och flera fördelar för oss som leverantör, då vi bland annat får tillgång till Microsofts resurser, specialistsupport och verktyg i större utsträckning.