webForumDet fria alternativet

Vad tror ni är smartast!

.NET

92 svar · 2 300 visningar · startad av Nickemannen · sida 4 av 5

Frågan, av Nickemannen

Vad tror ni är smartast! Lägga datbaskopplingsträngen i global filen eller tar det för mycket minne? eller ha med en include fil? kan ju bli jobbigt om man skall byta lösenord eller något senare. OBS! jag menar bara strängen t.e.x String strConn = "server=(local)\\NetSDK;database=pubs;TrustedConnection=yes";

Läs frågan i sin helhet →
Medlem sedan apr. 20012 266 inlägg
#61

ok, nog om detta nu :)

Medlem sedan juni 20011 732 inlägg
#62

Om man får lägga sig i den intensiva uppkopplingsdebatten ;) så finns en annan smidig lösning om ni inte vill kompilera om vid eventuella ändringar... nämligen att lägga in en nyckel i registret och hämta sökvägar och annat skit till databasen från denna. Smidigare än att skapa en xml-fil i alla fall... tycker jag.

Medlem sedan juni 20001 257 inlägg
#63

I registret? Om man programmerar en webbsida?

Medlem sedan mars 20007 896 inlägg
#64

Det låter inte som en enkel lösning, eftersom att man då måste ändra i registret på alla burkar som sidan ska köras på. Komponenter och XML-filer är ju bara att tanka upp. :)

Medlem sedan juni 20011 732 inlägg
#65

Vi använder registret hela tiden, det finns många fördelar med den metoden, inte minst om du ska sälja applikationen och göra installationsfiler och liknande. Ett alternativt sätt att lösa det på är det i alla fall... helst då tillsammans med en klass mot databasen naturligtvis.

Jag skulle inte vilja kalla det för "programmera en webbsida" ... programmera en webbapplikation låter mycket trevligare. Det är mer program än "en sida på internet", numera. :)

Medlem sedan aug. 20003 575 inlägg
#66

Okej, men då beror det ju på vad du skall ha det till. Antar att ditt
exempel är bäst om man skall göra ett intranet.

Och att den inte är det om man gör en såkallad vanlig hemsida?

Medlem sedan dec. 19991 072 inlägg
#67

Ett annat sätt som jag anser vara det kanske bästa om man vill skydda sin Databas-sträng, är att lägga den i COM+.

Skapa en klass som refererar in "System.EnterpriseServices" och som implementerar "construct"-metoden. Typ:

Public Class ComPlusConnStr
    Inherits System.EnterpriseServices.ServicedComponent
    Public Shared strVal As String

    Protected Overrides Sub construct(ByVal strConstructVal As String)
        strVal = strConstructVal
    End Sub
End Class

Skapa sen en "Strong-key" i .Net prompten:
sn -k c:\connStr.snk

...och lägg till den i "AsseblyInfo.vb" i klassen som "AssemblyKeyFile":

<Assembly: AssemblyKeyFile("C:\connStr.snk")>

Lägg till Asseblyn i COM+ via .net Prompten:

regsvc /appname:ComPlusConnStr comPlusConnstr.dll

En ny applikation har nu skapats i COM+ där Assemblyn ligger.
Högerklicka på Assemblyn i COM+ välj Properties och Activation.
Kryssa i "Enable Object Construct" och skriv i Databas-stängen i "Constructor string".

Skapa nu ett nytt projekt och referera in både Assemblyt och System.EnterpriseServices.

Nu kan du hämta ut stängen från COM+:

Dim obj As New ClsComPlusConnStr.ComPlusConnStr()
MsgBox(obj.strVal)

På det sättet kan Sys.Adm. skydda databasstängen, inte bara från olaga intrång, utan även från "obehörigt" folk som kan råkas finnas på kontoret (praktikanter osv).

Lite mer jobb i steg 1, men sen funkar det klockrent!

Medlem sedan apr. 20012 266 inlägg
#68

Registret blir problem om man har grejerna liggandes på ett webhotell. Tror inte de tillåter att man ändrar registret. Den bästa lösningen om man har det liggandes på ett webhotell med bara FTP åtkomst är att lägga det krypterad i appSetting i web.config. Att ha det i konstruktorn för ett databasobjekt i en .aspx sida är lika osäkert som att ha den i web.config.

Medlem sedan dec. 19991 072 inlägg
#69

Varför skulle det vara osäkert att ha det i konstruktorn?

Medlem sedan apr. 20012 266 inlägg
#70

eftersom om något går snett med .NET som övervakar alla request mot IIS så skulle en .aspx sida kunna visas i klartext. Då kommer ConnectingStringen att stå i klartext med lösenord(om man använder det dvs.) och allt.

Medlem sedan juni 20011 732 inlägg
#71

Hm, om något går snett i .net så utgår jag från att den ändå inte av misstag kastar fram hela sidan, VÄL!? Använder du dessutom code-behind så har du ju ingen kod i din .aspx-sida... försök att få fram något ur en dll-fil och du är duktig (om du mot förmodan överhuvudtaget får fram filerna alls).

Medlem sedan apr. 20012 266 inlägg
#72

jag använder CodeBehind, men det exempel SPiN pratade om var utan det vad jag förstod. Det jag menar med går snett är att om t.ex .NET skulle sluta fungera så kommer .aspx sidan behandlas som vilken annan text fil som helst och därmed spotta ur sig hela koden.

Medlem sedan dec. 19991 072 inlägg
#73

Renholm och NETWork:
Den ligger som tidigare sagt i kontruktorn för COM+ objektet. Inte i kontruktorn för aspx-klassen...

Enda sättet att komma åt den är att starta COM+ hanteraren och därigenom ändra strängen.

I aspx koden skriver man bara:

Dim obj As New ClsComPlusConnStr.ComPlusConnStr()
Dim strDBStr = obj.strVal

Det är alltså inte kontstruktorn för aspx-klassen.
Fördelen är då även att det är enkelt att ändra databas-sträng (För den om har behörighet till COM+) utan att behöva ändra några assemblys.

Medlem sedan apr. 20012 266 inlägg
#74

ok, men när jag skrev mina inlägg så hade de inget med din COM+ lösning att göra... men den är bra, ska kika mer på sådant.

Medlem sedan dec. 19991 072 inlägg
#75

Ok! Sorry :)

Medlem sedan apr. 20012 266 inlägg
#76

inga problem :)

men vart exakt placerar man connectionstringen i ditt exempel? :)

Medlem sedan dec. 19991 072 inlägg
#77

Man lägger in det via COM+ (står i mitt exempel, se några inlägg tidigare...)

Högerklicka på Assemblyn i COM+ välj Properties och Activation.
Kryssa i "Enable Object Construct" och skriv i Databas-stängen i "Constructor string".

Medlem sedan apr. 20012 266 inlägg
#78

Har du något färdigt exempel hur en sådan lösning kan se ut, en hel lösning där COM+ används för att hämta och skriva data.

Medlem sedan dec. 19991 072 inlägg
#79

Om du följer instruktionen i mitt föregående exempel:
http://www.webforum.nu/showthread.php?s=&threadid=46514&perpage=25&pagenumber=3#post399776

så får du all logik i både Assemblyn och i klienten för att använda "Object Construction" från COM+.

I det exemplet gjorde jag bara msgbox på värdet, men det kan lika gärna användas för att öppna en datakälla. ex.

Dim obj As New ClsComPlusConnStr.ComPlusConnStr()
Dim cnObj as new sqlConnection(obj.strVal)
Medlem sedan mars 20002 836 inlägg
#80

Om vart man ska spara ConnectionStringen så såg jag detta på www.asp.net:

9. Update the Web.config 'connectionString' setting in <installpath> to point to the database and to use the uid/pwd of your

I installationsanvisningarna för ASP.NET Forum

cya,
PatrikB

388 ms totalt · 4 externa anrop · v20260731065814-full.2f471f9e
156 ms — deklarationer (db)
0 ms — hämta statistik (cache)
229 ms — hämta tråd, inlägg och bilagor (db)
153 ms — ändringar (db)