我尝试将我的项目部署到Azure中,并且在发布成功的同时,我总是得到“在建立与SQL Server的连接时发生与网络相关或特定于实例的错误。”(提供程序:SQL网络接口,错误:26 - 错误查找指定的服务器/实例)“错误。
我阅读/观看了一些关于通过Visual Studio发布asp.net项目的教程,我注意到我的项目与教程中的项目有所区别:
虽然其他人在其“发布”窗口的“设置”部分只有一个数据库,但我有两个,我不知道为什么。我认为这可能是我收到错误的原因。
这是我的窗口:
这是教程中的一个:
我真的没有这个,因为我应该只有一个数据库,比如我的服务器资源管理器显示:
在我的web.config文件中,只定义了一个连接字符串,这是DefaultConnection:
<connectionStrings>
<add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=aspnet-vocab_2-20130928092402;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnet-vocab_2-20130928092402.mdf" providerName="System.Data.SqlClient" />
</connectionStrings>
我想我的DbContext派生的VocabModel类也是相关的:
public class VocabModel : DbContext
{
public VocabModel() : base("name=DefaultConnection")
{
if (Membership.GetUser()!=null)
{this.currentuser = UserProfiles.Find((int)Membership.GetUser().ProviderUserKey);}
}
public DbSet<UserProfile> UserProfiles { get; set; }
public DbSet<ForeignExpression> ForeignExpressions { get; set; }
public DbSet<PracticeResult> latestResults { get; set; }
}
那有什么不对?我是否在实体框架中犯了一个根本性的错误? (这是我第一次使用它)
答案 0 :(得分:0)
嗯,那是
if (Membership.GetUser()!=null)
{this.currentuser = UserProfiles.Find((int)Membership.GetUser().ProviderUserKey);}
参与我模型的构造函数。我将此代码移动到currentuser属性的get方法(无论如何更合乎逻辑),现在它按预期工作。任何解释仍然会受到赞赏。 (为什么该部分在发布期间会导致额外的数据库?)