webForumDet fria alternativet

Login failed..

8 svar · 521 visningar · startad av Stojjan

StojjanMedlem sedan maj 200470 inlägg
#1

Försöker komma igång med testfiler via ms.net framework, det som kallas quickstart,
och där finns en test-webshop som kopplas till sql-server och som heter grocertogo.
Får detta mess när jag kör den

 Login failed for user 'STOJJAN\ASPNET'.
Description: An unhandled exception occurred during the execution of the current web request. 
Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.Data.SqlClient.SqlException: Login failed for user 'STOJJAN\ASPNET'.

Source Error:

Line 91: 
Line 92:            int categoryID = Int32.Parse(CategoryList.Items[CategoryList.SelectedIndex].Value);
Line 93:            ProductListing.DataSource = market.GetProducts(categoryID).DefaultView;
Line 94:            ProductListing.DataBind();
Line 95: 

Source File: C:\Program\Microsoft Visual Studio .NET\FrameworkSDK\Samples\QuickStart\aspplus\samples\grocertogo\CS\grocertogo.aspx    Line: 93

Stack Trace:

[SqlException: Login failed for user 'STOJJAN\ASPNET'.]
   System.Data.SqlClient.SqlConnection.Open() +761
   System.Data.Common.DbDataAdapter.QuietOpen(IDbConnection connection, ConnectionState& originalState) +44
   System.Data.Common.DbDataAdapter.Fill(Object data, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) +98
   System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) +77
   System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, String srcTable) +36
   Market.InventoryDB.GetProducts(Int32 categoryID) in E:\temp1\samples\QuickStart\aspplus\samples\grocertogo\CS\Market.cs:16
   ASP.GrocerToGo_aspx.UpdateProducts() in C:\Program\Microsoft Visual Studio .NET\FrameworkSDK\Samples\QuickStart\aspplus\samples\grocertogo\CS\grocertogo.aspx:93
   ASP.GrocerToGo_aspx.Page_Load(Object sender, EventArgs e) in C:\Program\Microsoft Visual Studio .NET\FrameworkSDK\Samples\QuickStart\aspplus\samples\grocertogo\CS\grocertogo.aspx:23
   System.Web.UI.Control.OnLoad(EventArgs e) +67
   System.Web.UI.Control.LoadRecursive() +29
   System.Web.UI.Page.ProcessRequestMain() +724

Jag kan köra dom andra exemplen under "tutorialen,
men inte dom där databaser används..
Vad ska jag ställa in, och var, för att det ska fungera?

JonMedlem sedan juli 20011 304 inlägg
#2

Du använder nog integrated sequrity i connectionsträngen till databasen. Då måste användaren STOJJAN\ASPNET finnas i databasen och ha rättigheter.

StojjanMedlem sedan maj 200470 inlägg
#3

Ok.. Var kollar jag det, eller ändrar det? Ursäkta dumma frågor..

StojjanMedlem sedan maj 200470 inlägg
StojjanMedlem sedan maj 200470 inlägg
#5

Jag kör med windows authentication mode... kan det ha något med saken att göra?

JonMedlem sedan juli 20011 304 inlägg
#6

Jag kör med windows authentication mode... kan det ha något med saken att göra?

Det tror jag inte. Eftersom ditt felmeddelande säger att det är fel i sql-kllientens inlggning.

Använder du sql-server eller msde?

Har du sql-server kan du gå in i enterprise-konsollen och skapa användaren.

Själva connectionsträngen finns i web.config
Den har namnet GTGString.

Den hämtas upp såhär i koden

System.Configuration.ConfigurationSettings.AppSettings("GTGString").ToString()
JonMedlem sedan juli 20011 304 inlägg
#7

Saxar lite från nätet för en förklaring för msde :)

Login failed for user /
If you are using SQL Server or MSDE and you get this error, it's most likely due to the fact that you're using Integrated Security in your login to the database. For this to work, the ASPNet account needs to have access to the database. This means the ASPNet account must be a user assigned in the database.
You can go to the command prompt and enter the following, based on your own machine's configuration:
osql -E -S (local)\NetSDK -d puthereyourdatabasename -Q "sp_grantdbaccess 'YourServer\ASPNET'" 

AND THE SECOND ONE 

osql -E -S (local)\NetSDK -d puthereyourdatabasename -Q 
"sp_addrolemember 'db_owner', 'YourServer\ASPNET'" 

One other way to get around it is to use an explicit login and NOT use Integrated Security: ("server=YourServer;uid=YourUID;pwd=YourPWD;database=YourDatabase")
StojjanMedlem sedan maj 200470 inlägg
#8

Tack för hjälpen, har sql-server.. Verkar funka nu, efter att jag la till usern som du sa.. Plus lite trixande med permissions

GladhMedlem sedan maj 20012 812 inlägg
#9

'STOJJAN\ASPNET'

Stojjan är namnet på din webserver och ASPNET är det konto som används av webservern för att exekvera din ASP.NET kod.

Om du INTE har en rad som säger att Impersonate = True i din web.config / machine.config så kommer dina websidora alltid att köras som ASPNET kontot, oberoend av vilken login method du använder dig av.

Har du då satt Intergrated Security i din connectionstring till databasen så kommer webservern försöka att använda ASPNET kontot för att logga in mot databasen, vilket inte kommer att lyckas eftersom denna användare inte finns med (default) i databasen. Det man kan göra är att antingen lägga till ASPNET kontot i databasen, eller så sätter man att Impersonate = true i webconfig filen. Då kommer webservern att använda sig av det kontot som du har loggat in med. Så om du loggar in med NISSE så kommer webserver använda kontot NISSE istället för ASPNET för att koppla sig mot databasen.

Om du inte har impersonate = true så används ASPNET konto även om du loggat in som NISSE för att komma åt sidan.

- Magnus

134 ms totalt · 3 externa anrop · v20260731065814-full.cf67ef55
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)