我刚刚在 ASP.Net MVC 4 中部署了一个新应用程序。我使用 SQL Server 2008 R2(不是 SQL Express)。
前 10 分钟效果很好,然后我对代码做了一些更改并重新部署。
现在,每当我尝试访问使用 SimpleMembership 的页面时,都会收到此错误:
建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。 (提供商:SQL 网络接口,错误:26 - 定位指定的服务器/实例时出错)
描述:执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其在代码中的来源的更多信息。
SQLExpress数据库文件自动创建错误:
连接字符串使用应用程序的 App_Data 目录中的数据库位置指定本地 Sql Server Express 实例。提供程序尝试自动创建应用程序服务数据库,因为提供程序确定该数据库不存在。要成功检查应用程序服务数据库是否存在并自动创建应用程序服务数据库,需要以下配置要求:
但是我愿意not使用 SQL Server Express。在我的web.config
我已将所有连接字符串设置如下:
<add name="ApplicationServices"
connectionString="Server=myServer;Database=myDB;User Id=myUserID;Password=myPWD;"
providerName="System.Data.SqlClient" />
<add name="ApplicationServices"
connectionString="Server=myServer;Database=myDB;User Id=myUserID;Password=myPWD;"
providerName="System.Data.SqlClient" />
为什么它不断尝试创建 SQL ServerEXPRESS数据库?
当我遇到这个错误时,发现事情很简单。我终于发现在我的 _Layout.cshtml 中我引用了User.IsInRole("role")
但经过一个Request.isAuthenticated
。我的代码看起来像@if (Request.isAuthenticated && User.IsInRole("role"))
。所以基本上如果我没有登录主页就会呈现,因为它不会遍历到IsInRole()
调用(这需要初始化简单的成员资格,否则我会收到您在此处提到的错误。所以基本上我需要确保每个使用扩展 _Layout 文件的视图并可能拥有未经身份验证的用户的控制器都需要A[InitializeSimpleMembership]
。或者初始化简单成员资格的各种方法之一。
所以像
namespace ProjectName.Controllers
{
[InitializeSimpleMembership]
public class HomeController : Controller {
...
另外,我经常使用 Ctrl + F5 启动应用程序,然后使用“重建解决方案”。当我刷新不是根主页的页面时,我会收到错误,直到我调用根主页。到那时,一切都会重新开始。
希望这会对您或某人有所帮助。我撞了至少一两个小时的头。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)