none
C# code in eine Datei .asp einfügen RRS feed

  • Frage

  • Hallo,

    ich habe eine Datei .asp bekommen, in der ich mein C# CODE einfügen muss. Diese Datei .asp erzeugt eine Seite mit einigen Graphiken und wurde mit der Sprache "Javascript" geschrieben. Ich habe mit C# eine Graphik Chart control erstellt. und ich sollte jetzt mein Code in dieser .asp datei einfügen, so dass bei Ausführung meine Graphik(von C#) auf der generierten Seite angezeigt wird.

    Wie kann ich das machen?

    Vielen Dank im Voraus

    Dienstag, 27. Januar 2015 11:54

Antworten

Alle Antworten

  • Hi,

    das, was Du vor hast, geht nicht. Du kannst in eine Classic ASP Datei, egal, ob diese mit JScript oder VBScript geschrieben wurde, keinen C# Code einfügen und erwarten, dass das läuft.

    Du kannst lediglich aus deinem C# Code eine Assembly erstellen, die dann ihre Klassen und Eigenschaften per COM bereitstellt. Siehe dazu:

      http://www.codeproject.com/Articles/612604/Best-Practice-in-Writing-a-COM-Visible-Assembly-Cs

      http://www.jagjot.com/2014/01/register-c-vb-net-dll-regasm-gacutil/

    Sobald diese dann korrekt auf dem Webserver registriert wurde, kannst Du bspw. per:

    var Irgendwas = Server.CreateObject( "Deine.ProgId" );

    eine Instanz einer deiner Klassen erstellen und dann damit arbeiten.

    Dem sind allerdings natürlich auch Grenzen gesetzt, da man mit Classic ASP natürlich lange nicht alles machen kann, was in .NET auch möglich ist. Daher sollten die Ein- und Ausgabeparameter sowie die Methoden, ... sorgfältig gewählt und insbesondere für das Zusammenspiel mit Classic ASP/Script ordentlich gestestet werden.

    ---

    Alternativ kannst Du auch einfach ein zusätzliches ASP.NET Projekt erstellen, deine C# Klasse(n) dort einfügen und dann in der HTML Ausgabe der Classic ASP Anwendung einfach einen URL im img Tag angeben, der auf eben dieses ASP.NET Projekt verweist.

    <img src"/ImageCreator/GenerateImage.ashx?<Parameter>" ... />

    Ein Beispiel für einen solchen Handler findest Du hier:

      https://social.msdn.microsoft.com/Forums/de-DE/3fdd636c-eb1c-4b50-a44a-7548940ede3d/dynamische-grafik-mit-ajax?forum=aspnetajaxmvcde#f8a3ccac-6f31-4fe0-a5fb-e9d405fee98a

    Ist zwar VB.NET, das für dich relevante sollte aber problemlos umbaubar sein.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community



    Dienstag, 27. Januar 2015 12:03
    Moderator
  • Hallo,

    Vielen Dank. Ich probiere deinen Vorschlag und melde mich wieder.

    Lg

    Dienstag, 27. Januar 2015 13:01
  • Hallo,

    Ich habe eine zusätliches ASP.NET Projekt erstellt.

    Visual Studio -> New Projekt -> Visual C# -> ASP.Net WebApplication ->Template(Empty) -> File -> New File->HTLM Page

    Ich versuche seit heute Morgen meine C# Klassen dort hinzufügen. Aber ich weiß nicht, wie das geht.

    Veilleicht hat jemand ein beispiel CODE, wie man das macht

    Danke

    Mittwoch, 28. Januar 2015 11:15
  • Hallo,

    ich habe gedacht, eine DLL in meiner code einbinden und dann diese DLL mit der Datei .asp einbinden.

    wie kann ich diese Chart_Ansicht.dll in div.asp einbinden?

    Danke

    Mittwoch, 28. Januar 2015 13:11
  • Hi,

    es kommt darauf an, wie Du es nun machen willst. Per COM oder als ASP.NET Handler, der dann im src Attribut eines img Tags eingebaut wird?

    Für beide Varianten hatte ich dir oben bereits Links gepostet. Welche Schwierigkeiten hast Du denn genau?


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Mittwoch, 28. Januar 2015 15:57
    Moderator
  • Hallo,

    Ich habe folgende zeile in asp dateien geschrieben
    Code:
     <%@ Assembly Src="C:\Users\GMa\Desktop\Chart1\Chart1\bin\Debug" %>
    ich bekomme folgende fehler
    The @ command can only be used once within the Active Server Page.
    /internal/TestAngel/anonymous/div.asp, line 939
    
    
    die div.asp dateien fängt so an:
    <%@  language="JScript" %>
    
    <script language="javascript" runat="server"></script>
    
    <%
        var cn = Server.CreateObject("ADODB.Connection");
        var ProvStr = "Provider=SQLNCLI10; Data Source=sql3; Initial Catalog=BarForce; Integrated Security=SSPI;"
        cn.Open(ProvStr);
    USW.....................
    ...................
    ..................
    Welche Befehle muss ich in der asp datei schreiben, um mein dll von C# einzubinden?
    Für Ihre Hilfe werde ich sehr Dankbar
    Gruß

    Mittwoch, 28. Januar 2015 16:16
  • Hi,

    wie bereits im ersten Posting geschrieben: Das geht nicht. Du kannst nicht ASP und [ASP].NET vermischen. Die Technologien haben rein gar nichts miteinander zu tun.

    Schau dir bitte mein erstes Posting nochmal genau an und gehe insbesondere die dort enthaltenen Links durch. Dort steht letztendlich alles, was Du brauchst.

    Deine .NET Assembly musst Du als COM Komponente bereitstellen, diese dann auf dem Webserver hinterlegen und korrekt registrieren. Danach kannst Du dann, wie von mir gezeigt, diese Komponente ähnlich wie deine Zeile mit ADODB.Connection, verwenden.

    Eine Grundlagenschulung hierzu sprengt den Rahmen des Forums bei weitem. Wenn es gar nicht geht, kann ich dir anbieten, dich dabei individuell aber kostenpflichtig zu unterstützen. Es wäre daher für dich wahrscheinlich sinnvoller, dich mit den Links nochmal eingehend zu beschäftigen und meine Ratschläge zu beherzigen.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Mittwoch, 28. Januar 2015 16:44
    Moderator
  • Hallo Stefan,

    Ich möchte jetzt Per COM machen. Wie bei folgende Link http://www.codeproject.com/Articles/612604/Best-Practice-in-Writing-a-COM-Visible-Assembly-Cs      möchte ich meine Assembly als COM bereitstellen. bei der erste Klasse bekomme ich folgende Fehler.  Ich mache eine Bild von meinem Class View. Danke im voraus

    Error	2	The type or namespace name 'BarfocedataSet' could not be found (are you missing a using directive or an assembly reference?)

    Donnerstag, 29. Januar 2015 09:42
  • Hi,

    die Klasse, von der Du ableiten willst, heißt ja auch nicht so. zum einen fehlt ein "r", zum anderen stimmt die Groß- und Kleinschreibung nicht. Prüf das bitte nochmal. Wenn ich das richtig sehe, sollte BarForceDataSet lauten.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Donnerstag, 29. Januar 2015 10:26
    Moderator
  • Hallo Stefan,

    mein .NET Assembly habe ich schon  als COM Komponente gestellt.

    Jetzt habe ich schwierigkeiten diese Assembly  auf dem Webserver hinzulegen und zu registrieren. Welche Befehle muss ich bei cmd.exe geben, um von  "C:\Users\Matsak>" auf "C:\WINDOWS\Microsoft.NET\Framework\v3.5>" zu Wechseln?

    Der regasm.exe steht bei mir auf folgende link ( C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727).

    ich muss jetzt damit mein DLL in C:\WINDOWS\Assemby speicher

    Danke

    Freitag, 30. Januar 2015 16:25
  • Hallo,

    ich habe  aus dem C# Code eine Assembly erstellt und korrekt auf dem WebServer registriert. Aber mein Assembly wurde auf C:\Windows\Microsoft.NET\assembly\GAC_MSIL\TestDot\v4.0_1.0.0.0__7d9ae505f47c15ea\TestDot.dll installiert, anstelle von C: \ Windows \ Assembly \. Grund dafür ist: ich benutze ein .Net 4.0 Assembly und die Framework-Version 4.0 hat einen neuen separaten GAC an dieser Stelle.

    Wie ich in meinen erstes Postinggesagt habe, ich kenne mich nicht mit ASP. Ich habe die ASP Datei nur von jemandem bekommen, der nicht mehr da ist.

    Welche code muss ich jetzt in div.asp geben, um mein dll auszuführen?

    Vielen Dank im voraus

    Montag, 2. Februar 2015 13:44