我在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,它是来自克罗地亚的托管公司
答案 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;
}
}