我首先在VB.Net中创建了一个Web应用程序。现在,我正在使用Ionic框架创建其移动应用程序。语言是c#。
在Web应用程序中,我用来从Registry
获取连接字符串,并将其保存在会话中。我曾经在global.asax
中做到过。
global.asax:
Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs)
Dim mDBConnector As String = String.Empty
With Application
.Add("ProductRegistryKey", "Accord 2.0")
.Add("ProductGUID", "ea3asue4n43-mbk3-3nmn-n34n4h3j4n4n3")
.Add("ProductId", "1")
mDBConnector = WebHelper.GetDBConnector(Application.Item("ProductRegistryKey")
End With
End Sub
我没有在我的API中使用任何会话,因为我已经知道API是无状态的,所以这不是一个好习惯。那么我该如何在我的API中实现呢?
答案 0 :(得分:0)
第五个DBName
在连接字符串配置中不存在,因此,调用ConfigurationManager.ConnectionStrings[DBName]
时它将返回 null ,当您尝试执行以下操作时将导致空引用错误在空对象上调用成员。
检查以确保被调用的名称存在于 web.config 中。
<connectionStrings>
<!-- ... -->
<add name="FifthDbName" ...... />
</connectionStrings>
您还应该进行一些防御性编码,并在尝试访问该属性之前检查 null 。
var setting = ConfigurationManager.ConnectionStrings[DBName];
if(setting != null) {
string DbConnector = setting.ConnectionString;
bool Connection1 = DbConnector.ToLower().StartWith("metadata");
if (Connection1 == true)
{
System.Data.Entity.Core.EntityClient.EntityConnectionStringBuilder
efBuilder = new
System.Data.Entity.Core.EntityClient.EntityConnectionStringBuilder(DbConnector);
DbConnector = efBuilder.ProviderConnectionString;
}
}
//...