Laden...

Projekt lokal veröffentlichen [ASP.NET 4.5]

Erstellt von Perhalo vor 11 Jahren Letzter Beitrag vor 11 Jahren 5.265 Views
P
Perhalo Themenstarter:in
22 Beiträge seit 2012
vor 11 Jahren
Projekt lokal veröffentlichen [ASP.NET 4.5]

Hi,

da ich noch etwas neu bin, bitte ich meine Anfängerfrage zu entschuldigen.

Ich habe eine fertiges ASP.NET 4.5 Projekt. Dies habe ich mit VS 2012 RC entwickelt und möchte dies nun auf einem Computer laufen lassen. Im Idealfall auch aus dem Netzwerk zugreifbar, aber auf einem Computer würde mir schon reichen.

Ich habe jetzt diesen Leitfaden (Gewusst wie: Bereitstellen eines Webanwendungsprojekts mit der One-Click-Veröffentlichung in Visual Studio) verfolgt und kann über localhost/Test im Browser auf meine Anwendung zugreifen.

Allerdings:

  1. Das ganze Design ist weg, keine Farben, Bilder, Annordnungen, etc. vorhanden
  2. Die Anwendung kann nicht mehr auf die Datenbank im Haupstverzeichnis zugreifen

Daher meiner Fragen:

Wie kann ich die Fehler beheben? Oder ist das überhaupt der richtige Weg? Wie gesagt: Die Anwendung soll eigentlich nur auf einem Computer laufen und über einen Browser aufzurufen sein.

Danke im Vorraus
Perhalo

16.834 Beiträge seit 2008
vor 11 Jahren

Hi,

zu aller erst finde ich es nicht wirklich gut, dass man sich im vorherein entschuldigt. Das suggeriert, dass man keine Lust hat, selbst die Lösung zu suchen.
Webanwendungen haben ihre eigene Welt; und diesbezüglich fordern sie ein anderes Grundwissen voraus, als es Desktopanwendungen tun.
Man muss auch sehr viel mehr aus eigener Kraft tun, da eben nicht jeder Fehler auf dem Präsentierteller serviert wird.

Wenn Deine Grafiken nicht funktionieren, dann liegt dass meist daran, dass der Pfad einfach falsch ist (sollte logisch sein). Wenn Du einen Blick in den Quellcode der ausgelieferte Seite geworfen hättest, wär Dir das sicherlich auch als Anfänger aufgefallen 😉 Alternativ würde Firefox zusammen mit Firebug einen Fehler auswerfen.
Da dies aber ein Grundlagenproblem ist und ich sowas nicht vorkaue, wie man sowas löst; hier eine Lösungsmöglichkeit für ASP.NET MVC - analog dazu gibts bestimmt was für WebForms (Du hast aber leider nicht verraten, was Du nutzt. ASP ist nicht gleich ASP): UrlHelper.Content().
Wenn Du nach Url.Content() googlest, wirst Du ziemlich viele Treffer bekommen.

Das Verwenden von falschen Pfaden ist die größte Fehlerquelle in einer Webanwendung, da sie aus der Anwendungssicher IMMER relativ sind. Wer das bei der Programmierung ignoriert, der wird sein blaues Wunder erleben - wie Du eben. =)

Das gleiche dürfte auch bei der Datenbank zum Tragen kommen: Du verwendets einfach im Code einen Pfad, der zwar auf Deiner Maschine gültig ist, aber nicht auf einer anderen Maschine bzw. unter einem anderen Context.

P
Perhalo Themenstarter:in
22 Beiträge seit 2012
vor 11 Jahren

Oh, ich habe schon sehr viel versucht, mach dir da mal keinen Sorgen 😃 Die ganze Thematik scheint nur extrem groß und kompliziert zu sein, da weiß man irgendwann gar nicht mehr wo man ansetzen soll. Ich wäre schon sehr dankbar, wenn mir jemand sagen kann, in welcher Richtung ich weiterschauen muss.

Ich benutze WebSite für ASP.NET-Web-Forms-Anwendung.

Es verwundert mich halt, dass er das Design und die Bilder findet, wenn ich das Pojekt aus Visual Studio starte. Veröffentliche es aber auf localhost, ist der Hintergrund komplett weiß und alles verschoben bzw. falsch angeordnet.

Das mit der Datenbank hat jetzt geklappt, ich hatte nur vergessen sie dem Projekt hinzu zu fügen, weshalb sie im Veröffentlichungsordner nicht vorhanden gewesen ist.

P
Perhalo Themenstarter:in
22 Beiträge seit 2012
vor 11 Jahren

Ich hab mal den Tip genutzt und den Code über Firefox angeschaut. Für das ein Bild steht da jetzt folgendes:

<a id="TopHyperlink" href="http://www.123.de/" target="_new"><img src="Images/123.gif" alt="" /></a>

und im Quellcode

<asp:HyperLink ID="TopHyperlink" runat="server" ImageUrl="~/Images/123.gif" NavigateUrl="http://www.123.de/" Target="_new"></asp:HyperLink>

Das ist doch eigentlich richtig, oder nicht? Meine Datenbank findet er unter

@"~\App_Dat\Typwerte.mdb"

.

Aber wieso zeigt er dann die Bilder und Farben nicht an?

16.834 Beiträge seit 2008
vor 11 Jahren

Aber wieso zeigt er dann die Bilder und Farben nicht an?

Weil Deine Resourcen nicht gefunden werden!

Nochmal: alle Pfaden in einer Webanwendung sind relativ.
Die URL im Browser ist hier die Basis.

Wenn Du Images/123.gif drin stehen hast, und die Domain mydomain.com heißt, dann wird mydomain.com/Images/123.gif aufgerufen.
Bist Du aber nicht mehr auf der Hauptseite, sondern auf einer Unterseite mydomain.com/Unterseite dann versucht der Browser mydomain.com/Unterseite/Images/123.gif aufzurufen.
Merkst jetzt was? 👍

Erster Google-Treffer: Avoiding problems with relative and absolute URLs in ASP.NET

P
Perhalo Themenstarter:in
22 Beiträge seit 2012
vor 11 Jahren

Ich verstehe das Prinzip schon. (glaube ich zumindest 😄) Trotzdem denke ich nicht, dass dies mein Problem ist. Hier ist eine ganz gute Auflistung zu der Thematik. Ich denke ich habe da den 2. Fall:

http://www.akademie.de/wissen/html-lernen-1-grundlagen/relative-pfade

Wenn ich jetzt auf

http://localhost/MyWebTest/Contact.aspx

bin und mein Bild in

C:\inetpub\wwwroot\MyWebTest\Images\123.gif

liegt, ist doch die Addressierung mit

ImageUrl="~/Images/123.gif"

genau richtig, oder versteh ich da irgendwas grundlegend falsch?

Auf einen WebServer hat das übrigens schon funktioniert. Nur brauch ich das auf einem Server auf dem Computer.

16.834 Beiträge seit 2008
vor 11 Jahren

Primär ist "egal", wie Du das Image deklarierst.
Wichtig und entscheidend ist, was an den Client geschickt wird und was aufgerufen wird.

Installier die Firefox und Firebug, und schaut nach, was für nen Fehler beim Laden der Resourcen auftaucht; wahrscheinlich 404, da der Pfad nicht stimmt.
~/ ist kein Allheilmittel; das einzige, was ich bisher als generelle Lösung bei ASP.NET kenne ist, Url.Content() - allerdings nur in MVC verfügbar.

P
Perhalo Themenstarter:in
22 Beiträge seit 2012
vor 11 Jahren

Also die Bilder funktionieren jetzt...gott weiß wieso. Ich hab nichts an den Pfaden oder sonstwie geändert, eigentlich hab ich das Projekt nur nochmal neu auf den IIS gepackt.

Leider gehen die Styles immer noch nicht, weshalb immer noch alles einfach hintereinander weggeschrieben wird. Da die Pfade ja richtig zu sein scheinen (sonst würde er die Bilder ja nicht finden) und die Site.css auf dem Server zu finden ist (hab sie manuell aufgerufen), bin ich doch etwas ratlos.
Kann das an irgendwelchen Einstellungen liegen. Ich benutze IIS 6.1, da ich über keine neuere Version von Windows Server verfügen kann.

Prinzipiell sieht mein Site.Master wie folgt aus:

<head id="Head1" runat="server">
    <meta charset="utf-8" />
    <title>
        <%: Page.Title %>
        - 123 GmBh</title>
    <% if (false) { %><%--Designer support--%>
    <link runat="server" href="~/Content/Site.css" rel="stylesheet" />
    <% } %>
    <asp:PlaceHolder runat="server">
        <%: Styles.Render("~/Content/themes/base/css", "~/Content/css") %>
        <%: Scripts.Render("~/bundles/modernizr") %>
    </asp:PlaceHolder>
    <link href="~/favicon.ico" rel="shortcut icon" type="image/x-icon" />
    <meta name="viewport" content="width=device-width" />
    <asp:ContentPlaceHolder runat="server" ID="HeadContent" />
</head>

Falls du oder jemand anders noch eine weitere Idee hat, wäre ich sehr dankbar 😉

16.834 Beiträge seit 2008
vor 11 Jahren

Styles.Render() ist MVC, nicht WebForms. Was nutzt Du jetzt?
Solltest Dich entscheiden.

3.170 Beiträge seit 2006
vor 11 Jahren

Hallo,

sieht mir auch danach aus, als wolltest Du hier MVC und WebForms mischen.
Es gibt Leute, die damit teilweise (mit einzelnen Controls) erfolgreich waren, aber lass besser die Finger davon. Damit handelst Du Dir nur Probleme ein, die kaum jemand nachvollziehen oder verstehen kann.

Solltest Dich entscheiden.

Gruß, MarsStein

Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca

P
Perhalo Themenstarter:in
22 Beiträge seit 2012
vor 11 Jahren

Hi,

danke für die ganzen Antworten. Ich hab gar nix versucht zu mischen. Ich hab mir einfach nur von VS2012 eine WebForms Vorlage erstellen lassen. (wie gesagt: totaler Anfänger)

Inzwischen habe ich das Problem gefunden:

    <% if (false) { %><%--Designer support--%>
    <link runat="server" href="~/Content/Site.css" rel="stylesheet" />
    <% } %>

Diese if-Abfrage (wie erwähnt aus der Vorlage von VS) hat verhindert, dass die Styles geladen werden. Nachdem ich Sie entfernt hatte, lief es sofort.

Jetzt muss ich "nur noch" meine Benutzerverwaltung hinbekommen und gut is 👍