MVC4发布的应用程序账户登录页面无法加载。

9 浏览
0 Comments

MVC4发布的应用程序账户登录页面无法加载。

我使用标准的Internet应用程序模板创建了一个MVC 4应用程序。

我添加了一些其他的控制器、视图、模型和与我的自己的SQL数据库的连接,这一切都正常工作。

当我将它发布到一个文件位置,通过我的Windows 2012服务器上的IIS8访问时,除了点击登录或注册链接之外,应用程序都可以正常工作。

我没有对应用程序的注册或登录部分进行任何更改,因此Account控制器和模型保持不变,webconfig文件中的DefaultConnection字符串也保持不变,如下所示:

enter 

我有一些注册会员,并且有一些视图和控制器需要授权用户才能正确运行。

当我尝试访问Account/Logon或Account/Register时,我收到的错误是:

在'/'应用程序中发生了与网络或特定实例相关的错误,

在建立与SQL Server的连接时发生了错误。找不到服务器或无法访问。请验证实例名称是否正确,并验证SQL Server是否配置为允许远程连接。(提供程序:SQL Network Interfaces,错误:50 - 发生了本地数据库运行时错误。无法创建自动实例。请参阅Windows应用程序事件日志获取错误详细信息。)

两个事件日志是

尝试访问LocalDB实例注册表配置时发生意外错误。请参阅Windows应用程序事件日志获取错误详细信息。

无法获取本地应用程序数据路径。很可能是用户配置文件没有加载。如果在IIS下执行LocalDB,请确保为当前用户启用了配置文件加载。

有其他人遇到过这个问题吗,或者有任何有用的解决方案链接吗?

该应用程序发布到我的Windows服务器的公共文档文件夹中,目前正在同一局域网上的机器上访问。

0
0 Comments

问题出现的原因是MVC4发布的应用程序的帐户登录页面无法加载。解决方法是在IIS服务器中找到运行应用程序的应用程序池,然后在应用程序池的高级设置中找到进程模型选项,在该选项下找到身份标识,默认为应用程序池标识,将其更改为本地系统即可解决问题。另外,还需要将App_Data文件夹放在IIS服务器的WWW文件夹中。这个答案是唯一对我有效的解决方法,非常感谢。请您将这个答案发布到stackoverflow.com/questions/22737373/…,以便我可以接受它。也许您可以解释一下为什么本地系统可以工作,而应用程序池标识不行。

0
0 Comments

问题出现的原因是使用了MVC 4发布的应用程序帐户登录页面无法加载。出现这个问题的原因是SimpleMembership作为成员资格提供程序并自动连接。如果没有对基本配置进行任何更改,则SimpleMembership在web.config中配置为使用本地数据库(localDB)。SimpleMembership使用EF代码优先和惰性初始化。因此,它会在您首次尝试访问其方法(如登录和注册)时检查数据库是否可用。如果数据库不可用,则尝试创建它。这些错误消息可能表示它无法创建此数据库。猜测一下,您在部署到的服务器上没有适当的特权来创建localDB。它试图在App_Data文件夹中创建它。请检查应用程序是否具有在此文件夹中创建文件的特权。对于生产应用程序,更好的解决方案是使用SQL Server,并将连接字符串更改为指向它。

如果我改变默认连接的连接字符串为SQL Server,表会自动创建。还是在修改连接之前必须创建结构?

SimpleMembership使用的连接字符串是在WebSecurity.InitializeDatabaseConnection方法的第一个参数中指定的。如果您没有更改Internet模板生成的代码,则它会在Filters文件夹中的InitializeSimpleMembershipAttribute中调用。找到连接字符串的名称并修改该连接字符串,使其指向您的SQL Server所在的位置。如果在调用InitializeDatabaseConnection方法时数据库不存在,则EF将自动为您创建它。

我已经改变了连接字符串。现在发布时出现错误**无法找到请求的 .Net Framework Data Provider. 可能未安装。] WebMatrix.Data.DbProviderFactoryWrapper.CreateConnection(String connectionString) +32476**

我已检查了我的IIS8应用程序池,它正在使用默认池,并且已安装了.NET 4.5。我的连接字符串现在是<add name="DefaultConnection" connectionString="metadata=res://*/Models.mvcdevModels.csdl|res://*/Models.mvcdevModels.ssdl|res://*/Models.mvcdevModels.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=SAM;initial catalog=MVC_Development;user id=;password=;multipleactiveresultsets=True;application name=EntityFramework&quot;" providerName="System.Data.EntityClient" />

您正在使用适用于模型优先或数据库优先的连接字符串,您可能没有配置设置来使用实体客户端。您的配置字符串应该类似于这样:<add name="DefaultConnection" connectionString="Server=MyServerName;Database=MyDbName;Trusted_Connection=True;" providerName="System.Data.SqlClient" />

0