ASP.NET Zone

Die ASP.NET Community. Alle Antworten rund um Microsoft® Webtechnologien
Willkommen bei ASP.NET Zone. Anmelden | Registrieren | Hilfe | Impressum | ASP.NET Zone Suchplugin

in
Home Blogs Foren FAQ Communities Fotos Downloads
Werbeanzeige

Veröffentlichen einer Standard VS 2010 ASP.NET Website auf Windows Server 2008

Letzter Beitrag 04-12-2012, 20:58 von inf152. 5 Antworten.
Beiträge sortieren: Zurück Weiter
  •  04-10-2012, 9:08 224125

    Veröffentlichen einer Standard VS 2010 ASP.NET Website auf Windows Server 2008

    Hallo Zusammen ich versuche ein Standard ASP.NET Website auf dem Windows Server 2008 zu veröffentlichen und habe hierfür:

    1) Den Website-Ordner für „JEDER“ zum Lesen und Ausführen freigegeben.
    2) Den Website-Unterordner App_Data für „Netzwerkdienst“ zum Lesen, Ausführen und Schreiben freigegeben.
    3) Eine Instanz des SQL Server 2008 Express installiert und die Benutzerinstanzen aktiviert.

    So schaut die Web.config aus:

    <configuration>
      <connectionStrings>
        <add name="ApplicationServices" connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnetdb.mdf;User Instance=true" providerName="System.Data.SqlClient"/>
      </connectionStrings>
      <system.web>
        <compilation debug="true" targetFramework="4.0"/>
        <authentication mode="Forms">
          <forms loginUrl="~/Account/Login.aspx" timeout="2880"/>
        </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="false">
          <providers>
            <clear/>
            <add name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="ApplicationServices" applicationName="/"/>
            <add name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" applicationName="/"/>
          </providers>
        </roleManager>
      </system.web>
      <system.webServer>
        <modules runAllManagedModulesForAllRequests="true"/>
      </system.webServer>
    </configuration>

    4) Die folgenden Rollendienste installiert (wobei ich nicht sicher bin, ob das überhaupt notwendig ist, die Anmeldung läuft ja über SQL):
    - Rollendienst für Standardauthentifizierung
    - Rollendienst für Windowsauthentifizierung

    Mein Problem ist ich bekomme immer wenn ich auf Anmelden->Registrieren gehe und versuche einen neuen Benutzer zu erstellen die folgende Fehlermeldung:

    Serverfehler in der Anwendung /.
    Fehler beim Anfügen einer automatisch benannten Datenbank für die Datei C:\Users\Administrator\Desktop\PersonalWebSite\App_Data\aspnetdb.mdf. Eine Datenbank mit diesem Namen ist bereits vorhanden, die angegebene Datei kann nicht geöffnet werden, oder sie befindet sich in der UNC-Freigabe.

    Danke im Voraus für Eure Hilfe. Falls Ihr noch andere Fehler im meiner Vorgehensweise bemerkt habt, wäre ich Euch sehr dankbar wenn Ihr mich auf diese hinweisen würdet.
     
    Grüße
    Gregor

  •  04-10-2012, 9:40 224126 Antwort zu 224125

    AW: Veröffentlichen einer Standard VS 2010 ASP.NET Website auf Windows Server 2008

    Hi,

    inf152:

    Hallo Zusammen ich versuche ein Standard ASP.NET Website auf dem Windows Server 2008 zu veröffentlichen und habe hierfür:

    1) Den Website-Ordner für „JEDER“ zum Lesen und Ausführen freigegeben.

    2) Den Website-Unterordner App_Data für „Netzwerkdienst“ zum Lesen, Ausführen und Schreiben freigegeben.

    3) Eine Instanz des SQL Server 2008 Express installiert und die Benutzerinstanzen aktiviert.


    das ist eigentlich so ziemlich das schlechteste, was Du machen konntest.

    Zu 1: "JEDER" ist nicht jeder. Die Accounts "Netzwerkdienst" und ein paar andere gehören nicht zur Gruppe "Jeder". Zum anderen ist es nicht sinnvoll, die NTFS Rechte hier u.a. mittels "Ausführen" Berechtigung aufzuweichen.
    Zu 2: Auch letzteres ist nicht sinnvoll. App_Data ist ein spezieller Ordner für ASP.NET Anwendungen. Die dort hinterlegten Dateien sind vor Zugriffen per Http, ... geschützt. Da sollte man auch nicht dran rumspielen.
    Zu 3: SQL 2008 Express ist Ok, Benutzerinstanzen kann man vergessen, das funktioniert eigentlich so gut wie nie und ist auch in keinster Weise empfehlenswert.

    Ich würde vorschlagen: Häng die .mdf Datei deiner Datenbank manuell (per SQL Server Management Studio, SSMS) an die SQL Server 2008 Express Instanz an. Also das SSMS öffnen, auf den Node "Datenbanken" rechts klicken und dort "Anfügen..." wählen.

    Im SQL Server richtest Du dann noch einen SQL Server Benutzer ein, der die passenden Rechte auf die angefügte Datenbank erhält. Diese Informationen gibst Du dann in der web.config an.

      ... connectionString="Data Source=.\SQLEXPRESS,1433;Initial Catalog=<Datenbankname>;User ID=<SQL Benutzer>;Password=<SQL Benutzer Passwort>;" />

    Die Website sollte auch nicht wirklich in einem Benutzerverzeichnis und schon gar nicht in dem vom Administrator liegen.

      C:\Users\Administrator\Desktop\PersonalWebSite\App_Data\aspnetdb.mdf.

    Leg dir einen eigenen Ordner für deine Websites an, bspw. X:\Websites und leg dort einzelne Unterordner für die jeweilige Website an. Dem Ordner kannst Du dann per NTFS Leserechte für die IIS_IUSRS Gruppe geben, vorher solltest Du allerdings testen, ob es auch ohne diese Rechte funktioniert.


    --
    Gruß, Stefan Falz
    Microsoft MVP - Visual Developer ASP/ASP.NET
    ASP.NET Consulting, Development, Coaching

    ASP.NET Zone - Leitfaden für gute Postings

    Xtopia 2008 - Gewinnspiel / Expression Studio und Xtopia Eintrittskarten zu gewinnen
  •  04-11-2012, 7:50 224130 Antwort zu 224126

    AW: Veröffentlichen einer Standard VS 2010 ASP.NET Website auf Windows Server 2008

    Hallo Stefan,

    erstmal danke für die schnelle Antwort. Ein Paar Fragen hätte ich aber noch.

    1) Soll ich die ASPNETDB der Standardwebsite in dem Ordner "APP_DATA" belassen und einfach an die vorhandene SQL-Instanz anhängen?

    2) Soll für die Verbindung SQL-Server oder Windows Authentifizierung verwenden.

    Grüße

    Gregor

  •  04-11-2012, 11:24 224131 Antwort zu 224130

    AW: Veröffentlichen einer Standard VS 2010 ASP.NET Website auf Windows Server 2008

    Hallo Gregor,

    inf152:

    1) Soll ich die ASPNETDB der Standardwebsite in dem Ordner "APP_DATA" belassen und einfach an die vorhandene SQL-Instanz anhängen?

    2) Soll für die Verbindung SQL-Server oder Windows Authentifizierung verwenden.


    zu 1: IMHO sollte man die SQL Server Datenbanken immer direkt im SQL Server anhängen. Benutzerinstanzen funktionieren eigentlich so gut wie nie, schon gar nicht bei den allermeisten Webhostern. Einzig, wenn man einen eigenen (ggfs. auch virtuellen) Webserver mit SQL Express hat, kann es klappen (wohlgemerkt, kann, empfehlenswert ist es trotzdem nicht), ansonsten ist das meiner Meinung nach nie eine Option.

    Zu 2: Ich würde aus Einfachheitsgründen SQL Authentifizierung verwenden. Ggfs. musst Du dafür noch den Authentifizierungsmodus im SQL Server entsprechend umschalten.


    --
    Gruß, Stefan Falz
    Microsoft MVP - Visual Developer ASP/ASP.NET
    ASP.NET Consulting, Development, Coaching

    ASP.NET Zone - Leitfaden für gute Postings

    Xtopia 2008 - Gewinnspiel / Expression Studio und Xtopia Eintrittskarten zu gewinnen
  •  04-12-2012, 12:47 224145 Antwort zu 224131

    AW: Veröffentlichen einer Standard VS 2010 ASP.NET Website auf Windows Server 2008

    Hallo Stefan,

    noch mal danke für Deine Hilfe, leider bekomme ich die Verbindung immer noch nicht hin. Ich habe folgendes gemacht:

    a)      Die Website in dem Verzeichnis: D:\Websites\MeineWebSite platziert.

    b)      Die Standard ASPNETDB aus dem Unterverzeichnis APP_Data der WebSite in das Verzeichnis D:\Databases\MeineDB kopiert und an den SQL-Server angehängt.

    c)       Für die Datebank ASPNETDB einen SQL Benutzer erzeugt und ihn zum db_reader und db_writer gemacht.

    d)      Den ConnectionString in der Datenbank wie folgt angepasst:

    e)  <add name="ApplicationServices" connectionString="Data Source=.\SQLEXPRESS,1433;Initial Catalog=ASPNETDB.MDF;User ID=MeineWebSiteUser;Password=meinpasswort;" providerName="System.Data.SqlClient"/>

     

    Ich habe nun das Problem, dass wenn ich bei der Standardwebsite auf Registrieren gehe und versuche einen neuen Benutzer anzulegen, ich die folgende Fehlermeldung bekomme:

    Netzwerkbezogener oder instanzspezifischer Fehler beim Herstellen einer Verbindung mit SQL Server. Der Server wurde nicht gefunden, oder auf ihn kann nicht zugegriffen werden. Überprüfen Sie, ob der Instanzname richtig ist und ob SQL Server Remoteverbindungen zulässt. (provider: TCP Provider, error: 0 - Es konnte keine Verbindung hergestellt werden, da der Zielcomputer die Verbindung verweigerte.)

    Der TCP-Dienst ist für die SQL-Datenbank Aktiviert und der SQL Browserdienst läuft auch. Hast Du vielleicht noch eine Idee woran es liegen könnte?

    Grüße

    Gregor

  •  04-12-2012, 20:58 224149 Antwort zu 224145

    AW: Veröffentlichen einer Standard VS 2010 ASP.NET Website auf Windows Server 2008

    Hallo Stefan,

    es hat sich erledigt. Hatte einen Fehler im Connectionstring :-)

    Hinterher bekam ich dann noch den Fehler:

    Die EXECUTE-Berechtigung wurde für das aspnet_CheckSchemaVersion-Objekt, ASPNETDB-Datenbank, dbo-Schema, verweigert

    Das habe ich gelöst in dem ich den SQL Benutzer das Recht: aspnet_Membership_FullAccess gegeben habe.

    Meinst Du das ist so ok oder hätte man das noch anders lösen können?

    Es funktioniert jetzt aber alles wunderbar.

    Grüße

    Gregor

     

Als RSS Feed in XML ansehen
Powered by Community Server (Commercial Edition)