J'ai une application ASP.NET MVC où la base de données est sur un serveur IBM i-Series. J'ai le développement d'applications d'achèvement quand j'ai commencé à obtenir une erreur The ConnectionString property is invalid.
apparaître:"La propriété ConnectionString n'est pas valide." quand je sais que c'est valide
- uniquement lors de la connexion sur
- après la première connexion réussie sur après la reconstruction
- quelqu'un connecté peut encore fonctionner normalement
Notez également que ce problème n'apparaît que pour un projet dans ma solution. L'autre projet utilise exactement la même chaîne de connexion et n'a pas ce problème (copié et collé pour être sûr à 100%). Je suis en développement actif sur ces projets, mais je n'ai pas touché les chaînes de connexion, ni travaillé avec les classes AccountController
et les classes de modèles associées après avoir obtenu le login. Je utilise Visual Studio 2008 et .NET version 3.5.
Chaîne de connexion:
<connectionStrings>
<add name="IbmIConnectionString" connectionString="DataSource=192.168.50.200;DefaultCollection=QMFILES;Naming=sql;UserID=XXX;Password=XXXX;"/>
</connectionStrings>
contrôleur compte méthode de connexion:
[HttpPost]
public ActionResult LogOn(LogOnModel model, string returnUrl)
{
string fullName = String.Empty;
string employeeId = String.Empty;
if (ModelState.IsValid)
{
if (MembershipService.ValidateUser(model.UserName, model.Password))
{
FormsService.SignIn(model.UserName, model.RememberMe);
EmployeeLoginModel elm = new EmployeeLoginModel();
elm.GetUserInfo(model.UserName, model.Password, out fullName, out employeeId);
// Update the AuthCookie to include the last 4 digits of the SSN.
string userDataString = String.Format("{0}|{1}|{2}", model.Password, fullName.Trim(), employeeId.Trim());
HttpCookie authCookie = FormsAuthentication.GetAuthCookie(model.UserName, model.RememberMe);
FormsAuthenticationTicket ticket = FormsAuthentication.Decrypt(authCookie.Value);
FormsAuthenticationTicket newTicket = new FormsAuthenticationTicket(ticket.Version, ticket.Name, ticket.IssueDate, ticket.Expiration, ticket.IsPersistent, userDataString);
authCookie.Value = FormsAuthentication.Encrypt(newTicket);
Response.Cookies.Add(authCookie);
if (!String.IsNullOrEmpty(returnUrl))
{
return Redirect(returnUrl);
}
else
{
return RedirectToAction("Index", "Home");
}
}
else
{
ModelState.AddModelError("", "The user name or password provided is incorrect.");
}
}
// If we got this far, something failed, redisplay form
return View(model);
}
Connexion Employé Modèle:
public class EmployeeLoginModel
{
public string UserName { set; get; }
public string Password { set; get; }
private iDB2Connection conn;
/// <summary>
/// Initializes a new instance of the <see cref="EmployeeLoginModel"/> class.
/// </summary>
public EmployeeLoginModel()
{
conn = new iDB2Connection(ConfigurationManager.ConnectionStrings["IbmIConnectionString"].ConnectionString);
}
/// <summary>
/// Determines whether [is valid user] [the specified username].
/// </summary>
/// <param name="username">The username.</param>
/// <param name="password">The password.</param>
/// <returns>
/// <c>true</c> if [is valid user] [the specified username]; otherwise, <c>false</c>.
/// </returns>
public bool IsValidUser(string username, string password)
{
int count = 0;
// Get the data from the iSeries
using (conn)
{
string sqlStatement = "SELECT COUNT(XXXXX) FROM XXXXX WHERE UPPER(XXXXXX) = @1 AND XXXXXX = @2";
iDB2Command cmd = new iDB2Command(sqlStatement, conn);
cmd.CommandType = CommandType.Text;
cmd.Parameters.Add("@1", username.ToUpper());
cmd.Parameters.Add("@2", password);
conn.Open();
count = (Int32)cmd.ExecuteScalar();
conn.Close();
}
return ((count == 0) ? false : true);
}
Plus de détails? Peut-être la chaîne de connexion, comment vous récupérez la chaîne de connexion, à quoi ressemble votre contrôleur de compte? Postez vos logs SVN aussi, je ne crois plus jamais "je n'y ai plus touché". ;) – jfar
BTW voulez-vous vraiment que votre mot de passe soit listé ici? Si c'est votre vrai mot de passe, je vous suggère de le changer immédiatement ... (Le fait d'éditer votre article ici n'aidera pas car les gens peuvent voir l'historique des modifications.) – Eilon
Je n'ai pas de journaux SVN car il n'est pas sous contrôle de version encore. –