Avatar billede ha9953 Nybegynder
25. august 2004 - 11:54 Der er 6 kommentarer og
1 løsning

Problemer med Casche og dll

Jeg har følgende funktion som jeg forsøgr at kompile:

        Public function xmlcashe(xmlfil as string) as boolean
            dim filnavn as string                            
            filnavn = ConfigurationSettings.AppSettings("server") & ConfigurationSettings.AppSettings("write") & "xml/" & xmlfil & ".xml"

            If (IsNothing(Cache(xmlfil))) Then
                Dim myDataSet as New DataSet()
                myDataSet.ReadXml(filnavn)               
                Cache.Insert(xmlfil, myDataSet, New CacheDependency(filnavn))               
            End If
        end function

Men desværre får jeg følgende 2 fejl:

'Cache' is a type and cannot be used as an expression:
If (IsNothing(Cache(xmlfil))) Then

Reference to a non-shared member requires an object reference.
Cache.Insert(xmlfil, myDataSet, New CacheDependency(filnavn))


Er der nogen der kan hjælpe :-(
Avatar billede arne_v Ekspert
25. august 2004 - 12:23 #1
Hvis din code behind klasse arver fra System.Web.UI.Page så har du Cache.

Hvis det er en "utility" klasse, så kan du smide Cache med over som argument
fra selve code behind klassen.
Avatar billede arne_v Ekspert
25. august 2004 - 12:23 #2
Og typen er System.Web.Caching.Cache
Avatar billede ha9953 Nybegynder
25. august 2004 - 12:31 #3
Hmm - ok - når jeg nu bruger min funktion i en codebeind siger den så at "Cache is not available " ?
Avatar billede ha9953 Nybegynder
25. august 2004 - 12:38 #4
hele koden er her (den kompiles):

Imports System.Web.UI
Imports System.Web.UI.WebControls
Imports Microsoft.VisualBasic
Imports System.IO
Imports System.Data
Imports System.Configuration
Imports System.XML
Imports System.Web.Caching

Namespace xmlfunk

    Public Class Funktioner

        Public function xmlcashe(xmlfil as string) as boolean
            dim filnavn as string                            
            filnavn = ConfigurationSettings.AppSettings("server") & ConfigurationSettings.AppSettings("write") & "xml/" & xmlfil & ".xml"
            If File.Exists(filnavn) Then   
                If (IsNothing(System.Web.Caching.Cache(xmlfil))) Then
                    try
                        Dim DScache as New DataSet()
                        DScache.ReadXml(filnavn)               
                        System.Web.Caching.Cache.Insert(xmlfil, DScache, New CacheDependency(filnavn))               
                    catch t as exception
                        return false
                    end try
                else
                    return true               
                End If
            Else
                return false
            end if
        end function

    End Class

end namespace
Avatar billede arne_v Ekspert
25. august 2004 - 12:43 #5
Det er jo ikke selve code behind klasse.

Så du bør ændre metoden til:

Public function xmlcashe(xmlfil as string, cch As Cache) as boolean

og

      cch.Insert(xmlfil, DScache, New CacheDependency(filnavn)) 

Og så i din rigtige code behind klasse (eller i aspx filen) kalde

= xmlcashe(filnavn, Cache)
Avatar billede ha9953 Nybegynder
25. august 2004 - 12:55 #6
Perfekt  - smid lige et svar :-) - og tak for hjælpen
Avatar billede arne_v Ekspert
25. august 2004 - 12:58 #7
svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester