Проверка подлинности Windows - MVC 2 ASP.Net - PullRequest
3 голосов
/ 14 июня 2010

Реальные проблемы при переносе моего приложения на проверку подлинности Windows.

сообщения об ошибках sql связаны с проблемами при создании файла aspnetdb.mdf.

Мне интересно, виновата ли строка подключения или другие элементы web.config

У меня установлена ​​проверка подлинности Windows в 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>

также ошибки sql:

Невозможно открыть физический файл "C: \ Inetpub \ Wwwroot \ Заказ \ App_Data \ ASPNETDB_log.ldf". Ошибка операционной системы 5: «5 (не удалось получить текст для этой ошибки. Причина: 15105) ". СОЗДАН ФАЙЛ ошибка операционной системы 5 (не удалось получить текст для этой ошибки. Причина: 15105) при попытке открыть или создать физический файл 'C: \ Inetpub \ Wwwroot \ Заказ \ App_Data \ ASPNETDB_log.ldf. Не удалось открыть новую базу данных 'C: \ Inetpub \ Wwwroot \ ЗАКАЗА \ App_Data \ ASPNETDB.mdf. СОЗДАНИЕ БАЗЫ ДАННЫХ прервано. Попытка прикрепить базу данных с автоматическим именем для файл C: \ Inetpub \ Wwwroot \ Заказ \ App_Data \ ASPNETDB.mdf не удалось. База данных с тем же именем существует или указанный файл не может быть открыт или находится на общем ресурсе UNC. Ошибка активации файла. Физическое имя файла "C: \ Inetpub \ Wwwroot \ Заказ \ App_Data \ ASPNETDB_log.ldf" может быть неверным.

Ответы [ 2 ]

1 голос
/ 14 июня 2010

Попробуйте добавить явный ACL для чтения / записи в App_Data (или просто файл MDF) для Network Service. Если это работает, то вы можете рассмотреть возможность создания определенной учетной записи службы для веб-службы и запуска пула приложений под этим идентификатором. Это минимизирует доступ к базе данных только для вашего приложения для чтения / записи.

Эта нить может быть полезна, если это не помогает.

1 голос
/ 14 июня 2010

В этой строке состояния веб-конфигурации вы используете поставщика членства SQL, а не поставщика членства Active Directory.

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

или вы хотите использовать что-то вроде этого

<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"/>

Вот ссылка на использование проверки подлинности с помощью Active Directory. http://msdn.microsoft.com/en-us/library/ff650308.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...