ASP.NET MVC3数据库部署

时间:2011-03-15 22:42:22

标签: asp.net-mvc-3

我在mvc3中创建了应用程序,并且我为用户使用了默认帐户控制器。 我按照http://www.asp.net/mvc/tutorials/authenticating-users-with-forms-authentication-cs的说明将所有表(来自aspnetdb)放在一个数据库中。

我的麻烦是如何设置webconfig和连接字符串corectly? 我将conn字符串设置为我的数据库,但如果我尝试注册Visual Studio创建aspnetdb并将我的用户信息放在那里。 我试图找到停止vs创建aspnetdb的解决方案。 我的托管服务提供商是http://www.inside.hr,它是来自克罗地亚的托管公司

2 个答案:

答案 0 :(得分:1)

如果共享托管环境仅允许您使用一个数据库,则可以将ASP.NET成员资格数据库表添加到现有数据库。 Joe Stagner详细介绍了如何做到这一点here

您可以更新您的问题,告诉我们您的托管位置吗?这会有所帮助。

答案 1 :(得分:0)

我不确定我是否正确地关注了你,但你是否尝试过这样的事情:

<connectionStrings>
  <add name="ApplicationServices" connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true"
   providerName="System.Data.SqlClient" />
  <add name="MyDevArmyDB" connectionString="Data Source=DATASOURCE;Initial Catalog=devarmydb;Persist Security Info=True;User ID=USERID;Password=PASSWORDSTRING"
   providerName="System.Data.SqlClient" />
 </connectionStrings>

DATASOURCE-替换为您的数据库地址 USERID-替换为实际的用户ID PASSWORDSTRING-用实际密码替换

访问数据库的方式如下:

public class SqlUserRepository : IUserRepository
{
    private DataContext dataContext;
    private Table<User> usersTable;

    public IQueryable<User> Users { get { return usersTable; } }

    public SqlUsersRepository(string databaseName)
    {
        HttpRequestWrapper request = new HttpRequestWrapper(System.Web.HttpContext.Current.Request);
        Configuration config = WebConfigurationManager.OpenWebConfiguration(request.ApplicationPath);
        dataContext = new DataContext(config.GetConnetionString(databaseName));
    }
}

请注意,GetConnectionString是一个扩展函数,它支持连接字符串的加密/解密(如果您决定保护连接字符串):

public static class ConfigExtension
{
    public static string GetConnetionString(this Configuration config, string databaseName, string provider = "RSAProtectedConfigurationProvider")
    {
        string sectionName = "connectionStrings";
        ConfigurationSection section = config.GetSection(sectionName);
        if (section != null && !section.SectionInformation.IsProtected)
        {
            section.SectionInformation.ProtectSection(provider);
            config.Save();
        }

        return WebConfigurationManager.ConnectionStrings[databaseName].ConnectionString;
    }
}