Jag får inte rätt på server.mappath, här är koden: <code> Jag trodde att det fungerade, men när jag kompilerade stod det nu att HttpContext ej var deklarerad!!! Mitt förslag skulle vara att inte alls söka efter pathen i klassen utan ha en variabel i klassen som innehåller path. Variabeln skulle initieras i klasskonstruktorn ex. Jag hade så klart glömt det att importera System.Web men resultatet blir detsamma när jag kompilerar. Hur är det förresten med att ange sökvägar i global.asax, jag vet att det var skilda meningar om detta när det gällde vanliga ASP. I ASP.NET tycker jag att man skall försöka använda sig av web.config filen som man kan ha i sina applikationer. Personligen tycker jag att man ska låta datalagret ha sin egen config fil/reg nyckel för inställningar. Vad menar du med minwebbplats i server.MapPath argument .Server.MapPath i en klass
<code>
Imports System
Imports System.Data
Imports System.Data.OleDb
Namespace SkadeBas
Public Class UserDetails
Public UserID As Integer
Public UserName As String
Public Password As String
Public FirstName As String
Public Lastname As String
Public UserLevel As Integer
Public UserIsActive As Boolean
Public AutoLogin As Boolean
Public Address As String
Public Zip As String
Public City As String
Public Phone As String
Public Fax As String
Public Email As String
Public AccountCreatedDate As Date
Public CreatedBy As Integer
Public AccountUpdatedDate As Date
Public UpdatedBy As Integer
Public CompanyName As String
End Class
'***********************************************************************************************
' Klass som hanterar användarinloggning
'***********************************************************************************************
Public Class User
'--- sökväg till databasen
------------------------FELET = Server is not declared-----------------------------------------
Dim strDbPath As String = Server.MapPath("/minwebbplats/system/db_access/MinDatabas.mdb")
--------------------------------------------------------------------------------------------------
'--- kopplingssträng
Dim objConn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strDbPath)
'---> inloggningsfunktion
Public Function Login(ByVal strUserName As String, ByVal strPassword As String) As Integer
Dim intID As Integer
'--- anropar en stored procedure
Dim objCmd As New OleDbCommand("spValidateUser", objConn)
objCmd.CommandType = CommandType.StoredProcedure
'--- parametervärde
Dim objParam As New OleDbParameter("@UserName", OleDbType.Char)
objParam.Value = strUserName
objCmd.Parameters.Add(objParam)
'--- parametervärde
objParam = New OleDbParameter("@Password", OleDbType.Char)
objParam.Value = strPassword
objCmd.Parameters.Add(objParam)
'--- kontroll
Try
objConn.Open()
intID = CType(objCmd.ExecuteScalar, Integer)
objConn.Close()
Catch Ex As Exception
Throw Ex
End Try
If intID.ToString = "" Then
Return 0
End If
Return intID
End Function
End Class
End Namespace
</code>Sv: Server.MapPath i en klass
Imports System
Imports System.Data
Imports System.Data.OleDb
Imports System.Web
Namespace SkadeBas
Public Class UserDetails
Public UserID As Integer
Public UserName As String
Public Password As String
Public FirstName As String
Public Lastname As String
Public UserLevel As Integer
Public UserIsActive As Boolean
Public AutoLogin As Boolean
Public Address As String
Public Zip As String
Public City As String
Public Phone As String
Public Fax As String
Public Email As String
Public AccountCreatedDate As Date
Public CreatedBy As Integer
Public AccountUpdatedDate As Date
Public UpdatedBy As Integer
Public CompanyName As String
End Class
'***********************************************************************************************
' Klass som hanterar användarinloggning
'***********************************************************************************************
Public Class User
'--- sökväg till databasen
------------------------FELET = Server is not declared-----------------------------------------
Dim strDbPath As String = HttpContext.Current.Server.MapPath("/minwebbplats/system/db_access/MinDatabas.mdb")
--------------------------------------------------------------------------------------------------
'--- kopplingssträng
Dim objConn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strDbPath)
'---> inloggningsfunktion
Public Function Login(ByVal strUserName As String, ByVal strPassword As String) As Integer
Dim intID As Integer
'--- anropar en stored procedure
Dim objCmd As New OleDbCommand("spValidateUser", objConn)
objCmd.CommandType = CommandType.StoredProcedure
'--- parametervärde
Dim objParam As New OleDbParameter("@UserName", OleDbType.Char)
objParam.Value = strUserName
objCmd.Parameters.Add(objParam)
'--- parametervärde
objParam = New OleDbParameter("@Password", OleDbType.Char)
objParam.Value = strPassword
objCmd.Parameters.Add(objParam)
'--- kontroll
Try
objConn.Open()
intID = CType(objCmd.ExecuteScalar, Integer)
objConn.Close()
Catch Ex As Exception
Throw Ex
End Try
If intID.ToString = "" Then
Return 0
End If
Return intID
End Function
End Class
End Namespace
</code>Sv: Server.MapPath i en klass
Sv: Server.MapPath i en klass
<code>
public class Aclass
private _strConn as string
public sub new( strConn as string )
_strConn = strConn
end sub
end class
</code>
OSV. På så sätt måste din klass inte kompileras om när ifall du flyttar på din applikation eller byter databas...
Mappath kör du i webbapplikationen när du initierar klassen.
mvh,
PhilipSv: Server.MapPath i en klass
Sv: Server.MapPath i en klass
Sv: Server.MapPath i en klass
<code>
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="DSN" value="Data Source=localhost;Database=databasename;User ID=root;Password="/>
</appSettings>
</configuration>
</code>
Vill man använda sig av sökvägen i en asp.net applikation skriver man:
<code>
Private strConn As String = ConfigurationSettings.AppSettings("DSN")
</code>
That's it!
mvh,
PhilipSv: Server.MapPath i en klass
av den anledningen att presentationslagret inte ska behöva veta varifrån datalagret hämtar sin data.
presentationslagret ska bara veta att det finns dataklasser (eller bis klasser), och kunna hämta data via deras funktioner.
om sedan datalagret använder en eller 20 databaser ska den som kodar sajten inte behöva veta...
//RogerSv: Server.MapPath i en klass
Om du menar nån slag \www.dinserver.se\ eller nån länk . tror jag inte det kommer att fungera .
min gisning är kanske att Server.MapPath söker efter den katalog eller undekatalog var databasen finns i samma server var ASP.NET-sida körs ifrån .