0

ASP.net MVC を使用しています。ということで、あこがれの時のユーザーロールを設定したいと思います。

これが私のコントローラーです

public ActionResult LogOn(LogOnModel model, string returnUrl)
{
    if (ModelState.IsValid)
    {                
        var user = GetuserByname(model.UserName);
        if (user.ToList().Count == 1)
        {
            string dbPassword = user.First().UserPassword.ToString();
            string enterPassword = CreatePasswordHash(model.Password, user.First().Salt.ToString());

            if (dbPassword.ToString().Trim() == enterPassword.ToString().Trim())
            {
                FormsAuthentication.SetAuthCookie(user.First().tblUserRole.RoleName, model.RememberMe);
                Session["logged"] = user.First().Username;


                string roleName = user.First().tblUserRole.RoleName;
                Roles.AddUserToRole(model.UserName, roleName);
                return RedirectToAction("Index", "Home");
            }
        }                
    }            
    return View(model);
}

これは私のwebconfigファイルです

<?xml version="1.0" encoding="utf-8"?>

<configuration>

    <connectionStrings>
        <add name="ApplicationServices1" connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true" providerName="System.Data.SqlClient" />
        <add name="ApplicationServices" connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true" providerName="System.Data.SqlClient" />
        <add name="SKGEntities" connectionString="metadata=res://*/Models.Model1.csdl|res://*/Models.Model1.ssdl|res://*/Models.Model1.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=(local);Initial Catalog=SKG;Integrated Security=True;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" />
    </connectionStrings>

    <authentication mode="Forms">
        <forms loginUrl="~/Login/LogOn" timeout="2880" />
    </authentication>

    <membership>
        <providers>
            <clear />
            <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="ApplicationServices" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="3" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/" />
        </providers>
    </membership>

    <profile>
        <providers>
            <clear />
            <add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="ApplicationServices" applicationName="/" />
        </providers>
    </profile>

    <roleManager enabled="true">
        <providers>
            <clear />
            <add name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="ApplicationServices" applicationName="/" />
            <add name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" applicationName="/" />
        </providers>
    </roleManager>

</configuration>

しかし、エラーがあり、それは言う...

SQL Server への接続の確立中に、ネットワーク関連またはインスタンス固有のエラーが発生しました

…直し方がわからない。

また、どのように設定すれば...

 Roles.AddUserToRole(xxx, yyy);

...私のコントローラーで?

ありがとうございました。

4

1 に答える 1

3

エラー メッセージは、データベース (SQL サーバー) にアクセスできないことを示しています。

プロバイダー (ロール、メンバーシップ、プロファイル) は、次のApplicationServices接続文字列を使用するように設定されています。

data source=.\SQLEXPRESS;
Integrated Security=SSPI;
AttachDBFilename=|DataDirectory|aspnetdb.mdf;
User Instance=true

...ただし、他の接続文字列は

Data Source=(local);
Initial Catalog=SKG;
Integrated Security=True;
MultipleActiveResultSets=True

...これは完全に別のデータベース サーバーです。

プロバイダー構成を変更して、正しいデータベース サーバーを使用します。

于 2013-03-22T01:04:40.490 に答える