Azure Website Exception: Format of the initialization string does not conform to specification starting at index 0
Asked Answered
Q

4

8

I have an Azure Website that I use to host my MVC + Entity Framework project. When I run the site locally using the same connection to my SQL Azure database, everything works perfectly, but when I deploy the site to my Azure Website, I get the following error:

Format of the initialization string does not conform to specification starting at index 0.

I followed the steps in several other posts and added the connection string to the thrown error and this is what the connection string comes out to be:

Server=tcp:abcde1fgh2.database.windows.net,1433;Database=SalesLeads;User ID=username_test@abcde1fgh2;Password=Password;Trusted_Connection=False;Encrypt=True;Connection Timeout=30;

This string matches the connection string that is used locally.
Why would this work locally with the same string, but not remotely?

EDIT

Here is the full web.config for the site:

<?xml version="1.0" encoding="utf-8"?>
<!--
  For more information on how to configure your ASP.NET application, please visit
  http://go.microsoft.com/fwlink/?LinkId=301880
  -->
<configuration>
  <configSections>
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />

  <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --></configSections>
  <connectionStrings>
    <add name="DefaultConnection" connectionString="Server=tcp:abcde1fgh2.database.windows.net,1433;Database=SalesLeads;User ID=username_test@abcde1fgh2;Password=Password;Trusted_Connection=False;Encrypt=True;Connection Timeout=30;" providerName="System.Data.SqlClient" />
  </connectionStrings>
  <appSettings>
    <add key="webpages:Version" value="3.0.0.0" />
    <add key="webpages:Enabled" value="false" />
    <add key="ClientValidationEnabled" value="true" />
    <add key="UnobtrusiveJavaScriptEnabled" value="true" />
  </appSettings>
  <system.web>
    <authentication mode="None" />
    <compilation debug="true" targetFramework="4.5" />
    <httpRuntime targetFramework="4.5" maxRequestLength="102400" />
  </system.web>
  <system.webServer>
    <modules>
      <remove name="FormsAuthentication" />
    </modules>
    <handlers>
      <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
      <remove name="OPTIONSVerbHandler" />
      <remove name="TRACEVerbHandler" />
      <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
    </handlers>
  </system.webServer>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="Microsoft.Owin" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="0.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Newtonsoft.Json" culture="neutral" publicKeyToken="30ad4fe6b2a6aeed" />
        <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Optimization" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="1.1.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="0.0.0.0-1.5.2.14234" newVersion="1.5.2.14234" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-5.2.2.0" newVersion="5.2.2.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Net.Http.Formatting" publicKeyToken="31bf3856ad364e35" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-5.2.2.0" newVersion="5.2.2.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Http" publicKeyToken="31bf3856ad364e35" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-5.2.2.0" newVersion="5.2.2.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Antlr3.Runtime" publicKeyToken="eb42632606e9261f" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-3.5.0.2" newVersion="3.5.0.2" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Microsoft.Owin.Security" publicKeyToken="31bf3856ad364e35" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Microsoft.Owin.Security.OAuth" publicKeyToken="31bf3856ad364e35" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Microsoft.Owin.Security.Cookies" publicKeyToken="31bf3856ad364e35" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Microsoft.AspNet.SignalR.Core" publicKeyToken="31bf3856ad364e35" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-2.1.2.0" newVersion="2.1.2.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
      <parameters>
        <parameter value="v12.0" />
      </parameters>
    </defaultConnectionFactory>
    <providers>
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
    </providers>
  </entityFramework>
</configuration>
Quintal answered 14/2, 2015 at 20:38 Comment(4)
please, Put the whole connection string here.Nicolina
Added full web.configQuintal
Can you FTP to your Azure website and also check there your connection string and post it here? When you publish your site your web.config gets transfromed by Azure so it can be that this transformation process is messes up something with your connection string.Dric
BAH!! @nemesv, that worked! Hurry, make that an answer so I can give you the 150! There must be something screwy with the transform (like non-ascii quotemarks or something). The query strings look exactly the same though... that's really weird.Quintal
D
4

You should FTP into your Azure website and also check your connection string there in your web.config.

When you publish your site your web.config gets transformed/modified by Azure so it can be that this process messes up something with your connection string which leads to this error. For example if you setup your connection string through the web portal maybe during some copy/pasting the encoding is messed up, etc.

Dric answered 24/2, 2015 at 18:29 Comment(0)
V
3

10/2/17 - Using Azure Web App + ASP.NET MVC (.NET 4.6.1) + Entity Framework (latest). For a quick fix, I put the connection string in code and it worked:

public class MyDbContext : DbContext
{
    private const string connectionString = "Server=tcp:MYDB.database.windows.net,1433;Initial Catalog=MYDBNAME;Persist Security Info=False;User ID=MYUSERID;Password=MYPW;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;";
    public MyDbContext() : base(connectionString)
    {

    }
} 
Vincentia answered 2/10, 2017 at 23:22 Comment(2)
Yuk. I'm not really wanting to put passwords in my source code.Restive
I use this for prototyping.Vincentia
N
1

By some research around this, I found out the error occurs in the following possible cases :

Possibility 1: You are probably using the wrong DbConnection class. If you are using Access then make sure you use OleDbConnection, not SqlConnection ... and vice versa.

Possibility 2: It indicates that the issue is in some way database related, But the issue is linked to the APP POOL identity way of running web sites on IIS. There is some background on what this means here in Application Pool Identities. We have noticed that we tend not to see the issue on sites which are configured in the more old fashioned way, which is to create a new 'IUSR' user account on the server, then add this user to the IIS users group, and then set the site to use this user rather than the APP POOL identity. Ensure the password expiry issue is sorted on your main admin account on the server. And if this does not resolve the issue, to create a new 'IUSR' Windows user account, and set the site up to use this rather than the APP POOL identity. On shared hosting, this may not be possible, but dealing with the admin password expiry is something the host may still be able to address.

Nicolina answered 20/2, 2015 at 4:45 Comment(1)
Thank you for your suggestions. As for Possibility 1, I'm using Azure SQL and Entity Framework. My local copy of the site uses the same connection to the same SQL Azure database and works (I'll edit my question to make that point more apparent). The issue only happens with the site hosted in Azure Websites. As for possibility 2, the db has SQL Auth, so I'm not sure if the IIS App Pool identity has much to do with the error? I'll still look into this and see where it leads me!Quintal
P
1

In my case, I forgot to wrap the SQL_URI in

@Microsoft.KeyVault(SecretUri=SQL_URI)

That happened in my Web App > Configuration > Connection String > Value

Pahoehoe answered 27/5, 2021 at 21:16 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.