[VB.NET to C#]App code in C# achter site werkt niet

Pagina: 1
Acties:
  • 39 views sinds 30-01-2008

  • DarkShadow
  • Registratie: Juli 2000
  • Laatst online: 10:59
Ik heb dus een soort webapplicatie met een grafiekje in dotnet. Nu moet dat geintegreerd worden in een andere dotnet site. Deze heeft al zijn app code etc in C# (om een vrij vage reden), terwijl de rest van de site gewoon vb.net is. In ieder geval betekend dit dat ik mijn app code ook naar C# zal moeten omzetten. Aangezien ik absoluut geen programmeer wonder ben heb ik gewoon een converter gepakt en geprobeert het om te zetten, maar als ik dan de site probeer te gebruiken krijg ik helaas een foutmelding. Hier de beide stukjes code:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
Imports System
Imports System.Web.SessionState
Imports System.IO
Imports System.Web

Namespace AspNetResources.Owc
    Public Class ChartHandler

        Implements IHttpHandler
        Implements IReadOnlySessionState

        Public ReadOnly Property IsReusable() As Boolean _
                Implements IHttpHandler.IsReusable
            Get
                Return True
            End Get
        End Property

        Public Sub ProcessRequest(ByVal ctx As HttpContext) _
              Implements IHttpHandler.ProcessRequest

            Dim chartID As String = ctx.Request.QueryString(0)
            

            ctx.ClearError()
            ctx.Response.Expires = 0
            ctx.Response.Buffer = True
            ctx.Response.Clear()

            Dim memStream As MemoryStream = New MemoryStream(DirectCast(ctx.Session(chartID), Byte()))
            memStream.WriteTo(ctx.Response.OutputStream)
            memStream.Close()

            ctx.Response.ContentType = "image/png"
            ctx.Response.StatusCode = 200
            ctx.Response.End()

        End Sub

    End Class
End Namespace


code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
namespace AspNetResources.Owc
{
    using System.Web;
    using System.IO;
    using System.Web.SessionState;
    using System;


    public class ChartHandler : IHttpHandler, IReadOnlySessionState
    {

        public bool IsReusable
        {
            get
            {
                return true;
            }
        }

        public void ProcessRequest(HttpContext ctx)
        {
            string chartID = ctx.Request.QueryString[0];
            ctx.ClearError();
            ctx.Response.Expires = 0;
            ctx.Response.Buffer = true;
            ctx.Response.Clear();
            [b]MemoryStream memStream = new MemoryStream(DirectCast, ctx.Session(chartID), Byte());[/b]
            memStream.WriteTo(ctx.Response.OutputStream);
            memStream.Close();
            ctx.Response.ContentType = "image/png";
            ctx.Response.StatusCode = 200;
            ctx.Response.End();
        }
    }
}


Het gaat fout in de vetgedrukte zin in de C# code, daarbij krijg ik deze foutmelding:
Compiler Error Message: CS0103: The name 'DirectCast' does not exist in the current context
Iemand die enig idee heeft hoe dit op te lossen? Alvast bedankt! :)

  • pjvandesande
  • Registratie: Maart 2004
  • Laatst online: 06-10 13:51

pjvandesande

GC.Collect(head);

C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
namespace AspNetResources.Owc
{
    using System.Web;
    using System.IO;
    using System.Web.SessionState;
    using System;


    public class ChartHandler : IHttpHandler, IReadOnlySessionState
    {

        public bool IsReusable
        {
            get
            {
                return true;
            }
        }

        public void ProcessRequest(HttpContext ctx)
        {
            string chartID = ctx.Request.QueryString[0];
            ctx.ClearError();
            ctx.Response.Expires = 0;
            ctx.Response.Buffer = true;
            ctx.Response.Clear();
            MemoryStream memStream = new MemoryStream((byte[])ctx.Session(chartID));
            memStream.WriteTo(ctx.Response.OutputStream);
            memStream.Close();
            ctx.Response.ContentType = "image/png";
            ctx.Response.StatusCode = 200;
            ctx.Response.End();
        }
    }
}


Een cast in C# heeft een anderen syntax in VB.NET.

  • whoami
  • Registratie: December 2000
  • Laatst online: 18:04
Dit is gewoon een compiler error, en deze kan je oplossen door de foutmelding eens goed te lezen en te interpreteren.
Het keyword DirectCast bestaat dus niet in C#, dus je zal het C# equivalent moeten vinden van het VB.NET keyword; zoals pjvandesande al zegt, zal je op een andere manier moeten casten, nl. op de C - manier. Dit staat trouwens ook in de MSDN.

https://fgheysels.github.io/


Dit topic is gesloten.