Laden...

ImageUrl im Code gesetzt: Wird nicht geladen weil Bild nicht gefunden - 404 Not Found

Erstellt von Taraxacuma vor 6 Jahren Letzter Beitrag vor 6 Jahren 2.139 Views
T
Taraxacuma Themenstarter:in
15 Beiträge seit 2015
vor 6 Jahren
ImageUrl im Code gesetzt: Wird nicht geladen weil Bild nicht gefunden - 404 Not Found

Hallo ihr Lieben,

bin jetzt schon mehr als zwei Tage am googeln, ich finde einfach meinen Fehler nicht. Wenn ihr bitte mal schauen könntet?

Und zwar, ich habe hier ein Image (png) das in der Projektmappe unter einem Ordner img hinterlegt ist. Das Image möchte ich auf Buttonclick angezeigt bekommen. Nur funktioniert das nicht. Eine Fehlermeldung bekomme ich nur im Browser (F12) angezeigt. Vielleicht wisst ihr ja was ich da übersehe, ich weiß so langsam nichtmehr wo ich noch suchen soll....

Fehlermeldung:
Fehler im Browser: Failed to load resource: the server responded with a status of 404 (Not Found)


using System.Web.UI.WebControls;

namespace LinkVersuch.View.Form
{
    public partial class Test1 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }

        protected void btnImage_Click(object sender, EventArgs e)
        {
            try
            {
                img1.ImageUrl = @"~/LinkVersuch/img/Test1.png";
            }
            catch (Exception ex)
            {

                throw new ApplicationException(string.Format(ex.ToString()));
            }
            

            // http://localhost:61673/LinkVersuch/img/Test1.png
            // http://localhost:61673/View/Form/Test1.aspx 

        }


    }
}


<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Test1.aspx.cs" Inherits="LinkVersuch.View.Form.Test1" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <a href="javascript:void(0)" onclick="window.open('Test2.aspx', 'Nutzungsbedingungen', 'width=200, height=400, status=yes, location=no, scrollbars=yes')">
            <asp:CheckBox ID="checkOpen" runat="server" />
           Ich bin mit den Nutzungsbedingungen einverstanden.
        </a>
         
    </div>
        <div>
        <asp:Button ID="btnImage" OnClick="btnImage_Click" runat="server" Text="Imageklick" />
            <asp:Image ID="img1" runat="server" Height="343px" Width="277px" />

        </div>
        


    </form>
</body>
</html>

16.807 Beiträge seit 2008
vor 6 Jahren

Bei Deiner Recherche müsstest Du aber auf die MapPath Methode getroffen sein, mit denen man URIs korrekterweise umsetzt und nicht mit String Frickelei.

T
Taraxacuma Themenstarter:in
15 Beiträge seit 2015
vor 6 Jahren

Hm...danke für die schnelle Antwort, habe das jetzt mal ergänzt, bekomme jetzt aber eine andere Fehlermeldung....


 protected void btnImage_Click(object sender, EventArgs e)
        {
            try
            {
                img1.ImageUrl = Server.MapPath(@"~/img/Test1.png");
            }
            catch (Exception ex)
            {

                throw new ApplicationException(string.Format(ex.ToString()));
            }

Fehlermeldung:
Not allowed to load local resource: file:///C:/users/nimanz/documents/visual%20studio%202015/Projects/LinkVersuch/LinkVersuch/img/Test1.png

Und angezeigt wird das Bild deshalb noch immer nicht.

16.807 Beiträge seit 2008
vor 6 Jahren

(~~

img1.Source = new BitmapImage(new Uri(Server.MapPath(@"~/img/Test1.png")));

~~){gray}

T
Taraxacuma Themenstarter:in
15 Beiträge seit 2015
vor 6 Jahren

Was muss ich denn meinem asp.net Webforms Projekt zufügen damit das BitmapImage funktioniert?

System.Windows.Media.Imaging.BitmapImage ~ findet er nicht .

Danke für deine Hilfe, also so doof hätte ich mich eigentlich nicht eingeschätzt. 🙁 X(

3.170 Beiträge seit 2006
vor 6 Jahren

Hallo,

das BitmapImage kann an der Stelle nicht funktionieren - das ist WPF und hat mit WebForms nichts zu tun.

Du könntest es mal versuchen mit

img1.ImageUrl = ResolveClientUrl("~/img/Test1.png");

Allerdings hast Du ja schon ein serverseitiges Control, in dem Du das versuchst. Das sollte den Pfad eigentlich automatisch auflösen, wenn Du es so wie im Startbeitrag machst. Könnte allerdings sein, dass das Auflösen erst passiert, wenn ein DataBind-Aufruf erfolgt. Hast Du so einen irgendwo in Deiner Page?

Wenn das alles nichts hilft, poste doch bitte mal den fertig gerenderten HTML-Code (Quelltextansicht im Browser), damit man genau sieht, was er aus Deinem Pfad bastelt.

Gruß, MarsStein

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

16.807 Beiträge seit 2008
vor 6 Jahren

Stimmt, war mein Gedankenfehler des Forms Bindings.
In WebForms war glaube ich die einfachste Variante beim Code Behind Base64, nicht BitmapImage.

img1.ImageUrl = "data:image/jpeg;base64," + Convert.ToBase64String(<Byte Array Picture>)

oder eben data:image/png wenn es ein PNG statt jpeg sein sollte.

Wenn "~/img/Test1.png" nicht gefunden wird, dann liegt das Bild evtl. nicht da, wo es liegen sollte.

T
Taraxacuma Themenstarter:in
15 Beiträge seit 2015
vor 6 Jahren

Klappt wunderbar mit


img1.ImageUrl = ResolveClientUrl(@"~/img/Test1.png");

Vielen Dank........

Bin jetzt sowas von erleichtert....

Danke 🙂