2010-06-14 3 views
3

Имея реальные проблемы с переносом моего приложения на проверку подлинности Windows.Проверка подлинности Windows - MVC 2 ASP.Net

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

Я задаюсь вопросом, является ли строка соединения в вине или других элементов web.config

У меня есть окна аутентификации установлен в 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)». CREATE FILE встречается Ошибка операционной системы 5 (не удалось восстановить текст этой ошибки Причина:. 15105) при попытке открыть или создать физический файл 'C: \ Inetpub \ Wwwroot \ Заказ \ App_Data \ ASPNETDB_log.ldf' , Не удалось открыть новую базу данных 'C: \ INETPUB \ WWWROOT \ ORDERING \ APP_DATA \ ASPNETDB.MDF'. CREATE DATABASE прерывается. Попытка для присоединения базы данных с автоименованием для file C: \ inetpub \ wwwroot \ Ordering \ App_Data \ ASPNETDB.MDF не удалось. База данных с тем же именем существует, или указанный файл не может быть открыт или находится на общем ресурсе UNC. Ошибка активации файла. Физическое имя файла "C: \ inetpub \ wwwroot \ Ordering \ App_Data \ ASPNETDB_log.ldf" может быть неправильным.

ответ

1

Эта строка в вашем веб-конфигурации означает, что вы используете поставщик членства 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

+0

ну, я полагаю, идея заключалась в том, чтобы использовать роль и идентификатор пользователя, подключенного к машине Windows, - они только делают один вход. Мой босс упомянул активный каталог – bergin

+0

Я принимаю, хотя это 2.0, я могу использовать это с моим 4.0-приложением? – bergin

+0

@ bergin.Yes вы можете –

1

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

Этот thread может быть полезен, если это не делает трюк.

Смежные вопросы