我正在使用我的数据库和其他存储在azure云存储上。我正在使用实体代码首次使用但问题是当我尝试使用 CloudConfigurationManager.GetSetting()从云存储中读取连接字符串时我得到以下错误:
错误:参数'nameOrConnectionString'不能为null,为空或仅包含空格。 EntityFramework.dll中出现“System.ArgumentException”类型的异常,但未在用户代码中处理
这是我的Azure项目:Demo.Web.Azure
它有2个配置文件:
1)ServiceConfiguration.Cloud.cscfg:
<Role name="Demo.Web">
<Setting name="MyConnectionString"
value="Server=----;Database=DemoEntity;User ID=---;Password=---&w;Trusted_Connection=False;
Encrypt=True;MultipleActiveResultSets=True;" />
<Setting name="Demo.Storage"
value="DefaultEndpointsProtocol=https;AccountName=---;AccountKey=------"
/>
2)ServiceConfiguration.Local.cscfg:
<Role name="Demo.Worker">
<Setting name="Demo.Storage"
value="DefaultEndpointsProtocol=https;AccountName=---;AccountKey=------"
/>
3)ServiceDefinition.csdef中:
<ServiceDefinition name="Demo.Web.Azure" schemaVersion="2014-06.2.4">
<WebRole name="RepuGuard.Web" vmsize="Small">
<ConfigurationSettings>
<Setting name="MyConnectionString" />
<Setting name="Demo.Storage" />
</ConfigurationSettings>
</WebRole>
<WorkerRole name="Demo.Worker" vmsize="Small">
<ConfigurationSettings>
<Setting name="MyConnectionString" />
<Setting name="Demo.Storage" />
</ConfigurationSettings>
</WorkerRole>
</ServiceDefinition>
这是我的Context文件,它读取数据库连接字符串:
public partial class MyDemoDBContext : DbContext, IDisposable
{
public ObjectContext Context { get; set; }
public MyDemoDBContext()
: base(CloudConfigurationManager.GetSetting("MyConnectionString"))//Getting Error here
{
Context = ((IObjectContextAdapter)this).ObjectContext;
}
public MyDemoDBContext (string connectionString)
: base(connectionString)
{
Context = ((IObjectContextAdapter)this).ObjectContext;
}
}
在此处收到错误:
public MyDemoDBContext()
: base(CloudConfigurationManager.GetSetting("MyConnectionString"))
{
Context = ((IObjectContextAdapter)this).ObjectContext;
}
答案 0 :(得分:7)
如果您有多个项目正在解决方案,尝试设置启动项目将解决此问题。(sry延迟)
答案 1 :(得分:0)
appsettings.json
中的拼写错误对我造成了同样的System.ArgumentException
。我发现字符串"ConnectionStrings"
变成"CondfSnectionStrings"
我不知道为什么。我的目光只是掩盖了这个问题,直到另一位程序员向我指出。