views:

68

answers:

2

Hi there

Having real problems moving my app over to windows authentication.

the sql error messages are to do with problems creating in the aspnetdb.mdf file.

I'm wondering whether the connection string is at fault or other elements of the web.config

I have windows authentication set in IIS.

web.config:

<?xml version="1.0"?>

<!--
  For more information on how to configure your ASP.NET application, please visit
  http://go.microsoft.com/fwlink/?LinkId=152368
  -->

<configuration>
  <connectionStrings>
    <add name="ApplicationServices" connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|ASPNETDB.MDF;User Instance=true"
      providerName="System.Data.SqlClient" />
    <add name="orderbaseConnectionString" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\orderbase.mdf;Integrated Security=True;User Instance=True"
      providerName="System.Data.SqlClient" />
  </connectionStrings>

  <system.web>
    <compilation debug="true" targetFramework="4.0">
      <assemblies>
        <add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        <add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        <add assembly="System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
      </assemblies>
    </compilation>

    <authentication mode="windows">

    </authentication>

    <membership>
      <providers>
        <clear/>
        <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="ApplicationServices"
             enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false"
             maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10"
             applicationName="/" />
      </providers>
    </membership>

    <profile>
      <providers>
        <clear/>
        <add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="ApplicationServices" applicationName="/" />
      </providers>
    </profile>

    <roleManager enabled="true">
      <providers>
        <clear />
        <add connectionStringName="ApplicationServices" applicationName="/"
          name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" />
        <add applicationName="/" name="AspNetWindowsTokenRoleProvider"
          type="System.Web.Security.WindowsTokenRoleProvider" />
      </providers>
    </roleManager>

    <pages>
      <namespaces>
        <add namespace="System.Web.Mvc" />
        <add namespace="System.Web.Mvc.Ajax" />
        <add namespace="System.Web.Mvc.Html" />
        <add namespace="System.Web.Routing" />
      </namespaces>
    </pages>
  </system.web>

  <system.webServer>
    <validation validateIntegratedModeConfiguration="false"/>
    <modules runAllManagedModulesForAllRequests="true"/>
  </system.webServer>

  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0" newVersion="2.0.0.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>

also the sql errors:

Unable to open the physical file "C:\inetpub\wwwroot\Ordering\App_Data\ASPNETDB_log.ldf". Operating system error 5: "5(failed to retrieve text for this error. Reason: 15105)". CREATE FILE encountered operating system error 5(failed to retrieve text for this error. Reason: 15105) while attempting to open or create the physical file 'C:\inetpub\wwwroot\Ordering\App_Data\ASPNETDB_log.ldf'. Could not open new database 'C:\INETPUB\WWWROOT\ORDERING\APP_DATA\ASPNETDB.MDF'. CREATE DATABASE is aborted. An attempt to attach an auto-named database for file C:\inetpub\wwwroot\Ordering\App_Data\ASPNETDB.MDF failed. A database with the same name exists, or specified file cannot be opened, or it is located on UNC share. File activation failure. The physical file name "C:\inetpub\wwwroot\Ordering\App_Data\ASPNETDB_log.ldf" may be incorrect.

+1  A: 

This line in your web config state you are using the SQL Membership provider not the Active Directory Membership provider.

<add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider"

or do you want to use the something like this

<add
       name="MyADMembershipProvider"
       type="System.Web.Security.ActiveDirectoryMembershipProvider, System.Web, Version=2.0.0.0, 
             Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
       connectionStringName="ADConnectionString"
       connectionUsername="testdomain\administrator" 
       connectionPassword="password"/>

Here is a reference link to using forms authentication with Active Directory http://msdn.microsoft.com/en-us/library/ff650308.aspx

John Hartsock
bergin
@John Hartsock I take even though this is 2.0 i can use it with my 4.0 application?
bergin
@bergin.Yes you can
John Hartsock
A: 

Try adding an explicit Read/Write ACL to App_Data (or just the MDF file) for Network Service. If that works, then you may want to consider setting up a specific service account for the web service and running the App Pool under that id. This will minimize the exposure of the database to just your application for read/write.

This thread may be helpful if that doesn't do the trick.

tvanfosson