Avatar billede cogitans Nybegynder
17. juli 2004 - 15:31 Der er 30 kommentarer og
1 løsning

Hvordan angiver man en sti over et netværk?

Et lille spørgsmål:
hvordan skal jeg skrive, for at jeg peger på en fil over et netværk?

Et lille udpluk af min kodestump er:

"
public void run(System.Web.UI.Page fromPage, string filNavn) 
        {  //c://Inetpub//wwwroot//New//databaseFil.mdb";
            string strDSN = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=http:///b211//New//databaseFil.mdb";
            string tid1=String.Format(DateTime.Now.Day + "/" + DateTime.Now.Month + " Kl: " + DateTime.Now.Hour + ":" + DateTime.Now.Minute);
"

c://Inetpub//wwwroot//New//databaseFil.mdb"; fungerer når jeg tester klassen, men ikke når andre computere tilgår min computer over netværket, og tester klassen.
Så derfor prøvede jeg med:
Source=http:///b211//New//databaseFil.mdb";
men ved kørsel får man vist ikke fat i filen....?
Avatar billede arne_v Ekspert
17. juli 2004 - 15:36 #1
Du kan ikke accesse en database via HTTP protokollen.

disk:\dir\navn.typ for lokale filer

\\server\share\dir\navn.typ for netværks filer

Jeg formoder at vi snakker om:

browser--(netværk)--ASP.NET side--(lokal)--database

Hvilken fejl får du ?

Et gæt ville være noget security relateret.
Avatar billede cogitans Nybegynder
17. juli 2004 - 15:36 #2
Ahh...Source=http://b211/New/databaseFil.mdb"; fungerer vist...
Avatar billede cogitans Nybegynder
17. juli 2004 - 15:40 #3
Jeg får ikke nogen fejlmeddelelse...ellers skal jeg i hvert fald lede efter den et sted.
Jeg kan blot konstatere, at databasen ikke har ændret sig ved kørsel af asp.net-sden over netværk, hvlket den gør, når jeg selv kører siden.
Hvorfor kan jeg ikke accesse databasen gennem en HTTP protokol?
Avatar billede cogitans Nybegynder
17. juli 2004 - 15:40 #4
Source=http://b211/New/databaseFil.mdb fungerer som et link ine i Visual Studio...det var blot dét, jeg mente.
Avatar billede arne_v Ekspert
17. juli 2004 - 15:48 #5
Access er en fil database d.v.s. at når man skal finde data i databasen skal
man læse og opdatere filen. Læse og opdatere filen med random access. Det
kan HTTP protokollen ikke klare.
Avatar billede arne_v Ekspert
17. juli 2004 - 15:51 #6
Mit bedste gæt er stadig noget security relateret.

Men jeg ved faktisk ikke hvordan du kommer videre i fejlsøgningen (jeg ved
for lidt om IIS og ASP.NET environment).
Avatar billede cogitans Nybegynder
17. juli 2004 - 16:01 #7
hmmm...det fungerer faktisk. Men kun når jeg første gang trykker på et filnavn. Hvis jeg først går ind i et bibliotek, og så trykker på et filnavn, så vil den ikke (det er en FTP-lignende ting jeg leger med).
Den interessante kode ser således ud:

        private void lbtn_Click(object sender, EventArgs e)
        {
            if(((LinkButton)sender).CommandName == "DirectoryInfo")
            {
                LastPath = CurrentPath;
                CurrentPath = ((LinkButton)sender).CommandArgument;                           

                Response.Redirect(Request.RawUrl);   
            }           
            else if(((LinkButton)sender).CommandName == "FileInfo")
            {
                DatabaseFtpManagement instans=new DatabaseFtpManagement();
                string filNavn=(string)((LinkButton)sender).CommandArgument;
                instans.run(this, filNavn);
                Response.Redirect(((LinkButton)sender).CommandArgument);
            }
        }

Hjalp det på det?
Avatar billede arne_v Ekspert
17. juli 2004 - 16:06 #8
Næ - jeg er bare totalt lost. Jeg mangler helt koblingen mellem den database
connection string og ovenstående kode.
Avatar billede cogitans Nybegynder
17. juli 2004 - 16:13 #9
Alt forbindelseshaløj klares i klasses DatabaseFtpManagement. Og den må da gøre det godt nok, når det fungerer med et filnavn. Problemet er, at hvis min aspx-side bliver reloaded (altså hvis man vælger et bibliotek i stedet for en fil), så fungerer det ikke. Det er da mærkelgt, synes jeg...?
Avatar billede cogitans Nybegynder
17. juli 2004 - 16:15 #10
Men du kan da godt få klassen af den grund:

using System;
using System.Data;
using System.Data.Odbc;
using System.Data.OleDb;
using System.Collections;
using System.Collections.Specialized;
using System.Web.Services.Description;
using System.Web.UI;

namespace New
{
    public class DatabaseFtpManagement
    {   
        public DatabaseFtpManagement()
        { 
        }
       
        public void run(System.Web.UI.Page fromPage, string filNavn) 
        {  //http://b211/New/databaseFil.mdb";
            string strDSN = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c://Inetpub//wwwroot//New//databaseFil.mdb";
            string tid1=String.Format(DateTime.Now.Day + "/" + DateTime.Now.Month + " Kl: " + DateTime.Now.Hour + ":" + DateTime.Now.Minute);
            string temp=fromPage.Request.ServerVariables["REMOTE_HOST"];//string temp=System.Environment.MachineName;//B211
            string temp1=System.Environment.UserDomainName;//LucifersChild
            string temp3=temp1 + "(" + temp + ")";
            string temp5=fromPage.Request.UserHostName;
            string strSQL = "INSERT INTO Forbindelser(ComputerNavn, TidStart, BeroertFil) VALUES ('" + temp3 + "', '" + tid1 + "', '" + filNavn + "')" ;

            // create Objects of ADOConnection and ADOCommand 
            OleDbConnection myConn = new OleDbConnection(strDSN); 
            OleDbCommand myCmd = new OleDbCommand( strSQL, myConn ); 
            try 
            { 
                myConn.Open(); 
                myCmd.ExecuteNonQuery(); 
            } 
            catch (Exception e) 
            { 
                Console.WriteLine("Oooops. I did it again:\n{0}", e.Message); 
            } 
            finally 
            { 
                myConn.Close(); 
            }
        }
    }
}
Avatar billede snepnet Nybegynder
17. juli 2004 - 16:23 #11
Du laver ikke noget op mod databasen når dit CommandName == "DirectoryInfo", så der skulle ikke så gerne proppes noget ned i databasen i den situation :o)
Avatar billede cogitans Nybegynder
17. juli 2004 - 16:25 #12
Enig - det er kun når (((LinkButton)sender).CommandName == "FileInfo"), at er gemmes.
Avatar billede cogitans Nybegynder
17. juli 2004 - 16:37 #13
Jeg har lige benyttet debuggeren i Visual Studio, og der ser alt ud til, at være i orden. SQL'en bliver formet rgtgt, og det hele. Altså gør programet, hvad det skal. Men når jeg åbner Access, så er strengen ikke sat ind. Så fik jeg lige den ide: kan det være fordi, at strengen er for lang til, at Access kan håndtere den? Fndes der en begrænsnng fra Access's sde?
Avatar billede cogitans Nybegynder
17. juli 2004 - 16:40 #14
...måske noget med alle de backslash'er, som findes i en sti? Næh, for der er backslash'es i strengen, når man blot trykker på et filnavn også...
Avatar billede snepnet Nybegynder
17. juli 2004 - 16:48 #15
Altså cogitans... Du har lidt højere oppe skrevet :

"Problemet er, at hvis min aspx-side bliver reloaded (altså hvis man vælger et bibliotek i stedet for en fil), så fungerer det ikke. Det er da mærkelgt, synes jeg...?"

Og hvis der er tale om et directory så har du ikke noget kode der gør at der skulle blive sat noget i basen, så hvad er det du spørger om ?

Har du sørget for at der også bliver skrevet i basen når CommandName=="DirectoryInfo", med noget tilsvarende kode som under CommandName=="FileInfo" ?
Avatar billede cogitans Nybegynder
17. juli 2004 - 16:49 #16
AAAhhh...selvfølgelig. Jeg har løst problemet. Det var fieldsize i Access, som var sat tl 50. Den satte jeg så til 100, og nu fungerer det ;-)
Avatar billede snepnet Nybegynder
17. juli 2004 - 16:51 #17
Du kan være lidt halvsvær at følge en gang imellem :o)
Avatar billede cogitans Nybegynder
17. juli 2004 - 16:52 #18
snepnet:
Nej, men selvom jeg går videre ind i nogle bibliotekker, og så vælger en fil derind, så skulle hele den sti (+filnavnet) jo også gerne gemmes i databasen. Og det var det, som ikke skete. Men alt er som sagt  orden nu :-)
Avatar billede cogitans Nybegynder
17. juli 2004 - 16:56 #19
Nu vi er ved det...fungerer min aspx-side med tilhørene database så også over nettet, når jeg angiver stien til databasen i en c#-fil således:
c://Inetpub//wwwroot//New//databaseFil.mdb

eller skal man skrive:
http://b211/New/databaseFil.mdb";
???
Avatar billede cogitans Nybegynder
17. juli 2004 - 16:59 #20
Juhuu? Er der stadig hul igennem?
Avatar billede arne_v Ekspert
17. juli 2004 - 17:04 #21
Ja C: må være den rigtige syntax fordi access databasen er lokal i forhold til
ASP.NET siden.
Avatar billede arne_v Ekspert
17. juli 2004 - 17:04 #22
(og som sagt duer HTTP ikke til access databaser)
Avatar billede cogitans Nybegynder
17. juli 2004 - 17:10 #23
Jo, men bliver instansen af DatabaseFtpManagement så også oprettet ved mig (serveren), eller bliver den et på klienten?
Duer HTTP heller ikke, når det jo er DatabaseFtpManagement-filen, som gør det - og den ligger jo på serveren?
Avatar billede arne_v Ekspert
17. juli 2004 - 17:12 #24
Al din ASP.NET kode udføres server side (bortset fra evt. JavaScript og VBScript
som outputtes.
Avatar billede arne_v Ekspert
17. juli 2004 - 17:13 #25
Hvis HTTP virker lokalt så er det fordi .NET vælger at ignorere det.
Avatar billede cogitans Nybegynder
17. juli 2004 - 17:15 #26
Okay - jeg var bare i tvivl, om instanserne oprettes ved klienten eller ved serveren. Ved java foregår det a ved klienten - men i c# sker det altså så ved serveren...(?)
Avatar billede arne_v Ekspert
17. juli 2004 - 17:18 #27
Både ved ASP.NET (C#) og JSP/servlet (Java) oprettes instans på server.

Både ved smart client eller hvad det nu er det hedder (C#) og applets (Java)
oprettes instans på client.
Avatar billede cogitans Nybegynder
17. juli 2004 - 17:24 #28
C# (=c-sharp) omfatter da både ASP.NET og cs-fler.
Mit projekt er lavet i ASP.NET, men indeholder også cs-filer.
Og så synes jeg, da du modsger sg selv oven over:
ASP.NET (C#)=instans på server
smart client(C#)= instans på client

???
Avatar billede arne_v Ekspert
17. juli 2004 - 17:28 #29
Med ASP.NET (C#) mener jeg både .aspx og .cs filer som køres server side på IIS.

Smart client (C#) er en EXE fil som downloades af browseren og køres på client.

Man kan lave begge slags kode i C#, men det er helt forskelligt teknologi.

Svarer som sagt til applet og JSP/Servlet i Java verdenen som også er helt forskellige.
Avatar billede cogitans Nybegynder
17. juli 2004 - 17:30 #30
ah - okay. Jamen, så må det jo fungere med den interne sti.
Avatar billede arne_v Ekspert
31. juli 2004 - 23:40 #31
Tid at få afsluttet spørgsmålet ?

Og et svar fra mig såfremt nogle af mine forklaringer var interessante (selvom
problenet var et helt andet)
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