![](/img/trans.png)
[英]Why I can't see the debug output when I run a test in Visual Studio 2012?
[英]Why does this work when I debug from Visual Studio but doesn't after I deploy to IIS?
好的,所以这真的变得令人沮丧,我希望有人可以帮助我。 我刚刚开始阅读一些SignalR教程,所有这些工作都很棒。 然后,我决定为对SignalR项目的某些数据访问添加MVC实体框架模型,以便我可以存储已发送到我的测试聊天消息中心的名称和消息。
这是令人沮丧的部分,当我从Visual Studio运行调试时,这一切都很有效但是当我发布到我的IIS服务器时,我的消息中心中的实体框架代码停止工作并抛出此错误:ProviderIncompatibleException
内部异常: “ {”从数据库获取提供者信息时发生错误。 这可能是由实体框架使用不正确的连接字符串引起的。 检查内部异常以获取详细信息,并确保连接字符串正确。“}”
Next Inner Exception: {“提供程序未返回ProviderManifestToken字符串。”}
最后一个内部异常: {“与SQL Server建立连接时发生与网络相关或特定于实例的错误。未找到或无法访问服务器。验证实例名称是否正确以及SQL Server是否配置为允许远程连接。(提供程序:SQL网络接口,错误:50 - 发生本地数据库运行时错误。在LocalDB实例启动期间发生错误:SQL Server进程无法启动。\\ r \\ n)“}
在“ db.Database.Initialize(false);”上引发此错误。 行在我的消息中心代码中。
这让我非常沮丧,以至于我昨晚一直在研究这些错误信息,直到凌晨1点。 我真的很感谢任何帮助。 最令人沮丧的是,这段代码是如此简单,应该可以正常工作……
谢谢。
这是我的消息中心的代码:
public class BPACustomerServiceMessageHub : Hub
{
public void Send(string name, string message)
{
Database.SetInitializer(new CreateDatabaseIfNotExists<MessagesContext>());
using (MessagesContext db = new MessagesContext())
{
db.Database.Initialize(false);
Messages omsg = new Messages();
omsg.name = name;
omsg.message = message;
db.Messages.Add(omsg);
db.SaveChanges();
db.Dispose();
}
// Call the broadcastMessage method to update clients.
Clients.All.broadcastMessage(name, message);
SendParams mparams = new SendParams();
mparams.Name = name;
mparams.Message = message;
Clients.All.broadcastMessage2(mparams);
}
}
public class SendParams
{
public string Name { get; set; }
public string Message { get; set; }
}
这是我的模型和上下文的代码:
public class Messages
{
[Key]
public int id { get; set; }
public string name { get; set; }
public string message { get; set; }
}
public class MessagesContext : DbContext
{
public DbSet<Messages> Messages { get; set; }
}
这是我的web.config中的连接字符串:
<connectionStrings>
<add name="MessagesContext"
connectionString="Data Source=(LocalDB)\v11.0;
database=Messages;
AttachDbFilename=|DataDirectory|\Messages.mdf;
Initial Catalog=Messages;
Integrated Security=True"
providerName="System.Data.SqlClient" />
根据Jimmy的建议,我将Release web.config中的连接字符串更改为:
<connectionStrings>
<add name="MessagesContext"
connectionString="Data Source=.\SQLEXPRESS;
database=Messages;
Initial Catalog=Messages;
Integrated Security=True"
providerName="System.Data.SqlClient" />
再次感谢。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.