Ich arbeite an einer Website für meine Firma, die uns ermöglichen wird, .XML und .HTM Perfmon Templates aufzunehmen und zu verteilen. Die Site besteht aus einem Creator-Tool, mit dem die Vorlagen erstellt werden, und einem Repository, in dem die Vorlagen gespeichert werden. Wenn ein Benutzer die Repository-Site antrifft und entweder XML- oder HTM-Vorlagen anzeigt, sucht die Seite in einem Verzeichnis (~/Perfmon Templates /) und listet alle Dateien des vom Benutzer angegebenen Typs auf. Es erstellt einen Hyperlink zu der Datei und analysiert die Datei, um die Leistungsindikatoren aufzulisten, die in der Vorlage enthalten sind. Dies funktioniert alles ohne Probleme auf meinem lokalen Rechner. Gestern habe ich die Website auf einem IIS7-Server mit ASP.NET 4.6 veröffentlicht.C#/ASP.NET: HREF Pfad nicht aktualisiert nach Code-Behind-Änderung
Nach der Veröffentlichung, während des Testens der Website, habe ich festgestellt, dass die Hyperlinks im Repository nicht mehr funktionierten. Der Grund dafür war, dass sich der Pfad von ~/Perfmon Templates/zu ~/Perfmon/Perfmon Templates geringfügig veränderte. Also habe ich den C# -Code für die Repository-Webseite geöffnet und den relativen Pfad für den Hyperlink geändert, um die Pfadänderungen widerzuspiegeln. Nach dem Kopieren der CS-Code-Datei und der ASPX-Auslagerungsdatei zurück auf den Server, habe ich den Test erneut ausgeführt und keine Änderung im Hyperlink-Pfad gefunden.
Mein erster Gedanke war zu diesem Zeitpunkt, dass die C# -Datei irgendwo zwischengespeichert werden muss, also versuchte ich ein STRG + F5 im Browser, um zu sehen, ob das das Problem behoben hat. Es hat nicht.
Also ging ich zurück zu der lokalen Kopie, die ich auf meinem Rechner habe und versuchte, die aktualisierte Seite im Debug-Modus auf meinem lokalen Rechner laufen zu lassen. Ich habe Breakpoints gesetzt, wo die Hyperlinks erstellt werden, und habe versichert, dass der relative Pfad auf den Hyperlinks auf den aktualisierten Speicherort verweist. Ich habe dann das Debuggen gestartet, aber festgestellt, dass die Site meine Breakpoints überhaupt nicht verarbeitet, unabhängig davon, ob ich das Debugging über das Debug-Menü gestartet habe oder ob ich auf die Schaltfläche "Play" geklickt habe, um sie zu starten.
Nachdem das nicht funktionierte, habe ich versucht, alle Zeilen des C# -Codes, die die Erstellung der Hyperlinks steuern und Debugging neu zu kommentieren. Zu meinem Schrecken und Überraschung war der alte Hyperlink-Pfad immer noch auf der Seite vorhanden.
Es scheint, als würde die Seite nicht einmal die C# -Code-Behind-Datei lesen, aber ich weiß, dass sie den Code von irgendwo bekommen muss und dass Code-Behind-Datei der einzige Ort in meiner Lösung ist, wo der Hyperlink-Pfad ist sogar erwähnt.
Hier ist der Code aus dem C# -Code hinter der Datei, der die Erstellung des Hyperlinks steuert. Ich bin mir nicht sicher, ob es helfen wird, das Problem zu lösen, da ich fast alles an einem Punkt kommentiert habe und es immer noch keinen Unterschied machte.
HyperLink fileLink = new HyperLink();
fileLink.NavigateUrl = "~/Perfmon/Perfmon Templates/" + f.Name.ToString();
fileLink.Text = f.Name.ToString();
fileLink.Visible = true;
fileLink.Style.Add("color", "#111111");
fileLink.Style.Add("text-decoration", "none");
string perfCounterList = string.Join(Environment.NewLine, counters);
string perfCounters = Regex.Replace(perfCounterList, @"\r\n?|\n", "<br />");
//dt.Rows.Add(Count, "<a href='/Perfmon/Perfmon Templates/" + f.Name.ToString() + "'>" + f.Name.ToString() + "</a>", perfCounters);
dt.Rows.Add(Count, fileLink, perfCounters);
Kann mir bitte jemand sagen, wo ich falsch liege? Ich habe die Datei web.config überprüft, um sicherzustellen, dass das Debugging aktiviert ist. Ich habe den STRG + F5-Trick ausprobiert, um zu sehen, ob der Browser-Cache störend war. Keines dieser Dinge scheint mir zu helfen. Gibt es noch etwas, das ich ausprobieren kann?
Haben Sie versucht, die Lösung zu reinigen und neu aufzubauen? Stellen Sie auch die neu erstellte DLL bereit. – Luca
Sie haben ** Webanwendung ** Projekt. Sie müssen die Anwendung neu erstellen und '.dll' aus dem' bin'-Ordner hochladen. Wenn es ** Website ** -Projekt wäre, würde es ausreichen, '.aspx'- und' .cs'-Dateien hochzuladen. –
Danke Jungs, das war nicht die ganze Antwort, die ich brauchte, aber es war genug Informationen, um mich auf den richtigen Weg zu bringen, um das Problem zu lösen. Stellt sich heraus, es war meine Schuld (Überraschung!). Ich habe das Build-Ausgabeverzeichnis geändert, und so wurden die Änderungen bei der Neuerstellung der Lösung nicht berücksichtigt, da sich die Build-Ausgabedateien an einer anderen Stelle befanden.Ich habe das Build-Ausgabeverzeichnis auf den Standard zurückgesetzt, aber das hat Application Insights zerstört. Am Ende musste ich ein neues Projekt erstellen und alle Dateien vom alten Projekt in das neue kopieren. Danach scheint alles zu funktionieren –