我有一个数据库,我想通过.NET Web应用程序访问.我可以很容易地加密web.config中的连接字符串,但任何有权访问该框的开发人员都可以使用几行代码对其进行解密 - 他们可以访问该框,因此可以访问存储在计算机中的加密密钥.配置.
虽然我可以通过拒绝他们的用户帐户访问来锁定数据库,但是网络应用程序拥有众所周知的密钥并没有帮助.任何人都知道允许Web应用程序访问数据库的好方法,而不会让精明的开发人员使用Web应用程序使用的SQL帐户吗?
当使用单独的项目来处理mvc项目中的数据库操作时,我应该将连接字符串存储在dbproject中(使用app.config)还是应该将连接字符串保存在mvc项目的web.config中,并将其注入存储库(由dbproject提供)实例化时?
asp.net-mvc connection-string repository-pattern n-tier-architecture
我刚刚将我的网站部署在提供商的远程服务器上somee.com,但我无法连接到我的SQL Server数据库.
我将*.mdf和*.ldf文件附加到我在提供者端创建的数据库,它要求我用这个更新我的连接字符串(当然我隐藏了id和密码):
workstation id=MoviesDBtest.mssql.somee.com;packet size=4096;user
id=xxxxx;pwd=xxxxxxxx;data source=MoviesDBtest.mssql.somee.com;persist security
info=False;initial catalog=MoviesDBtest
Run Code Online (Sandbox Code Playgroud)
现在,我知道我必须更新我的Web.config文件,但我不知道在哪里将这些属性添加到我的原始标记:
<connectionStrings>
<add name="ApplicationServices" connectionString="workstation
ID=MoviesDBtest.mssql.somee.com;packet size=4096;user id=dalya;pwd=02038800;data
source=MoviesDBtest.mssql.somee.com;persist security info=False;initial
catalog=MoviesDBtest;Integrated
Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true"
providerName="System.Data.SqlClient" /><add name="MovieDBEntities"
connectionString="workstation ID=MoviesDBtest.mssql.somee.com;packet size=4096;user
id=dalya;pwd=02038800;data source=MoviesDBtest.mssql.somee.com;persist security
info=False;initialcatalog=MoviesDBtest;metadata=res://*/Models.MoviesDBModel.csdl|res://*/M
odels.MoviesDBMode
l.ssdl|res://*/Models.MoviesDBModel.msl;provider=System.Data.SqlClient;provider
connection string="AttachDbFilename=|DataDirectory|\Database1.mdf;Integrated
Security=True;User Instance=True;MultipleActiveResultSets=True""
providerName="System.Data.EntityClient" /><add name="MoviesDBEntities"
connectionString="workstation ID=MoviesDBtest.mssql.somee.com;packet size=4096;user
id=dalya;pwd=02038800;data source=MoviesDBtest.mssql.somee.com;persist security
info=False;initial
catalog=MoviesDBtest;metadata=res://*/Models.Model1.csdl|res://*/Models.Model1.ssdl|res://
*/Models.Model1.msl;provider=System.Data.SqlClient;provider connection
string="AttachDbFilename=|DataDirectory|\Database1.mdf;Integrated
Security=True;User Instance=True;MultipleActiveResultSets=True""
providerName="System.Data.EntityClient" /><add name="MoviesDataBEntities"
connectionString="workstation ID=MoviesDBtest.mssql.somee.com;packet size=4096;user
id=dalya;pwd=02038800;data source=MoviesDBtest.mssql.somee.com;persist security
info=False;initial
catalog=MoviesDBtest;metadata=res://*/Models.MoviesDBModel.csdl|res://*/Models.MoviesDBMode
l.ssdl|res://*/Models.MoviesDBModel.msl;provider=System.Data.SqlClient;provider
connection string="AttachDbFilename=|DataDirectory|\Database1.mdf;Integrated
Security=True;User Instance=True;MultipleActiveResultSets=True""
providerName="System.Data.EntityClient" /><add name="WTFEntities"
connectionString="workstation ID=MoviesDBtest.mssql.somee.com;packet …Run Code Online (Sandbox Code Playgroud) 我从未使用镜像,群集或其他故障转移技术.但我正在调查调整我的DAL是多么容易,以便SQLNativeClient透明客户端重定向对我们有效,如果我的客户决定使用带或不带见证的镜像.
有人可以解释一个客户端应用程序的实用过程,该应用程序可能位于数百个桌面上,这些桌面将连接到一个镜像的实例并可能会故障转移?
我正在考虑为这100台台式机提供零维护方法.我目前的想法是,如果发现过程不是自动的,我将不得不有一个互联网/内联网文件/服务,描述哪个服务器是主体,哪个是镜像,哪些应用程序可以读取.
背景:我已经阅读了多篇文章,涉及使用SQL_COPT_SS_FAILOVER_PARTNER连接属性,并且您必须在连接字符串中指定镜像到alllow SQLNCLI透明客户端重定向,但这一切似乎都有点回到前面.为什么程序员或最终用户必须参与其中?网络基础设施可能会改变.
我希望尝试连接主要的OR镜像或见证会将我重新路由到正确的校长,然后"知道"镜子是什么.我了解证人可以管理多个数据库镜像会话,因此可能需要其他内容.
那么,我如何发现镜像或主服务器开始?我不希望用户输入它,因为它可能会改变.我是否必须先连接到正在运行的主体,从主体中提取已注册的镜像,然后使用这些参数重新连接,或者我可以稍后设置连接attirbute?
我期待一些启蒙!
sql-server odbc connection-string mirroring sql-server-native-client
我正在用C#开发一个MVC3应用程序.
该应用程序有几个项目.由于我想测试存储库的行为,因此相关项目是存储库项目本身和单元测试项目.
我在测试阶段遇到了一个问题,因为每次运行测试时都会启动异常
测试方法UnitTest1.Repository_IsNotNull引发异常:System.ArgumentException:在配置中找不到指定的命名连接,不打算与EntityClient提供程序一起使用,或者无效.
我已经在其他时候遇到过这个异常,我唯一要做的就是将ConnectionString从引用的项目web/app/.config文件(这种情况下是Repository)复制到引用它(在本例中为UnitTest).
在这种情况下的问题是UnitTest项目既没有app.config也没有web.config文件.
这个问题的原因是什么以及如何解决?
有没有办法根据生产或登台环境使用不同的ConnectionString?怎么样 ?
谢谢
用户'Chacha102' 在2010年发布了以下代码以回答这个问题.我喜欢他的代码(如下所示),但是想了解如何避免让数据库连接凭据出现在代码中的多个位置.
这是他的代码:
$cb_db = new cb_db(USER, PASSWORD, NAME, HOST);
$cb_user = new cb_user($cb_db);
class cb_user {
public __construct(cb_db $database)
{
$this->database = $database
}
protected function find_by_sql( $sql ) {
$this->database = new cb_db(USER, PASSWORD, NAME, HOST);
$result_set = $cb_db->query( $sql );
$object_array = array();
while( $row = $cb_db->fetch_array( $result_set ) ) {
$object_array[] = self::instantiate( $row );
}
return $object_array;
}
}
Run Code Online (Sandbox Code Playgroud)
问题是我将有许多类和函数,并且不希望用户名密码硬编码到每个类中.如果必要的话,我可以在一个地方更新它.
请问最好的方法是什么?
php connection-string database-connection class global-variables
我有一个ASP.NET/Razor 3 Web应用程序,它通过MS EntityFramework使用SQL Server数据库.
如果/当我想要更改数据库连接字符串时,例如更改密码或指向其他数据库(例如test vs live),则需要在项目的三个不同XML配置文件中的大约七个位置替换该字符串(app.config,web.config和app.release.config),这是一个容易出错的痛苦.
更糟糕的是,未处理异常的默认Web服务器行为可能包括向Web用户显示配置文件的各个部分,这实际上导致Web服务器显示通过Web显示数据库路径和密码的行.不好.
出于这两个原因,并且因为这不是任何人都可以编辑服务器上的配置文件的产品(任何变化都很多,也可能是一个构建操作),我更喜欢拥有数据库连接信息编译到Web应用程序中并从代码而不是配置文件加载,并且能够执行此操作,以便在我想更改数据库信息时,我可以在一个地方而不是七个地方执行此操作.
我怎么做到这一点?
好吧,我想做的事听起来很简单.我想加载一个表单并在表单加载调用一个sql语句,返回1项并将其放在TextBox1中.这是我到目前为止所拥有的.
Private Sub Form_Load()
Call openTheDatabase
End Sub
Public Function openTheDatabase() As Boolean
'-- Here we want to open the database
Dim sConnectionString As String
Dim strSQLStmt As String
'-- Build the connection string
sConnectionString = "PROVIDER = MSDASQL;driver={SQL Server};database=databasename ;server=servername;uid=;pwd=;"
strSQLStmt = "SELECT chvDealerName " & _
"From dbo.tblDealers Where chrVSCAcctNum = '90442001'"
TextBox1.Text = strSQLStmt
End Function
Run Code Online (Sandbox Code Playgroud)
编辑
好的是Text1.Text,但现在我只是在文本框中获取字符串,而不是实际的数据库条目
据我了解实体框架6,它神奇地实现了app.config/web.config中的连接字符串.从DbContext文档,部分备注:
如果从派生上下文调用无参数DbContext构造函数,则派生上下文的名称用于在app.config或web.config文件中查找连接字符串
对于无参数构造函数的情况,或者对于具有连接字符串名称的情况:
也可以通过将名称传递给采用字符串的DbContext构造函数之一来显式指定连接/数据库名称,而不是使用派生的上下文名称.该名称也可以以"name = myname"的形式传递,在这种情况下,必须在配置文件中找到该名称,否则将抛出异常.
但是,在DNX项目中,我没有app.config或web.config.如何在DNX项目中的Entity Framework 6中指定连接?
sql-server ×2
.net ×1
asp.net ×1
asp.net-mvc ×1
azure ×1
class ×1
database ×1
dnx ×1
encryption ×1
mirroring ×1
odbc ×1
php ×1
razor ×1
unit-testing ×1
vb6 ×1
web-config ×1