如何使用 localDB 将 ASP.NET MVC 4 应用程序部署到 Windows 7 上的本地 IIS?

Posted

技术标签:

【中文标题】如何使用 localDB 将 ASP.NET MVC 4 应用程序部署到 Windows 7 上的本地 IIS?【英文标题】:How to deploy ASP.NET MVC 4 application using localDB to local IIS on Windows 7? 【发布时间】:2014-05-09 08:43:30 【问题描述】:

当我尝试在带有 Visual Studio 2013 的 Windows 7 上使用本地 IIS 运行我的 ASP.NET MVC 4 应用程序时。当应用程序尝试连接到 localDB\v11.0 时遇到以下错误

“/”应用程序中的服务器错误。

发生网络相关或特定于实例的错误,同时 建立与 SQL Server 的连接。服务器没有 找到或无法访问。验证实例名称是否正确 并且 SQL Server 配置为允许远程连接。 (提供者:SQL 网络接口,错误:50 - 本地数据库运行时 错误发生。无法创建自动实例。见窗 错误详细信息的应用程序事件日志。 )

2 个事件日志是

尝试访问 LocalDB 实例时发生意外错误 注册表配置。请参阅 Windows 应用程序事件日志以了解 错误详情。

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

我在网上找到的大多数解决方案都参考了这篇文章:http://blogs.msdn.com/b/sqlexpress/archive/2011/12/09/using-localdb-with-full-iis-part-1-user-profile.aspx

我看到的描述的情况和我的情况之间的唯一区别是描述的错误代码是 0,而我的错误代码是 50。但是,建议的解决方案对我不起作用。

即使我将 modify setProfileEnvironment 设置为 true,我也无法克服这个错误,并且我已经花费了数小时来处理不同的 processModel 参数和应用程序池。

【问题讨论】:

【参考方案1】:

我也遇到了同样的问题,但是有解决办法。

转到 IIS 服务器,然后转到运行应用程序的应用程序池。在应用程序池的高级设置中有一个“进程模型”选项,在该选项下有一个“身份”选项。默认情况下,这是应用程序池标识。将其更改为本地系统,您就完成了。

记得把 App_Data 文件夹放到 IIS 服务器的 WWW 文件夹中

【讨论】:

Neeraj,如果站点在 WWW 或服务器上的其他文件夹中,这有什么关系? @IrishChieftain 没关系,但为了简单起见,我们将其放在 WWW 文件夹中 那是一个很难理解的指令..但它确实有效! :) 这不是个好主意,请看这个答案:***.com/questions/5729264/…【参考方案2】:

试试这个,这会解决你的问题:

编辑 %windir%\system32\inetsrv\config\ 中的 applicationHost.config 文件,特别是 ApplicationPools 部分。

将 IdentityType 更改为 NetworkService 以使用新创建的数据库。

<add name="ASP.NET v4.0" managedRuntimeVersion="v4.0">
   <processModel identityType="NetworkService" loadUserProfile="true" setProfileEnvironment="true" />
</add>

【讨论】:

【参考方案3】:

确保应用程序池使用的身份可以访问所需的 LocalDB 实例。

然后在应用程序的身份验证设置中禁用 ASP.NET 模拟。否则,应用程序使用IUSR_MachineName 帐户访问数据库。

此设置可能不适合生产环境,但足以用于数据库和应用程序开发。

【讨论】:

“在应用程序的身份验证设置中禁用 ASP.NET 模拟”那在哪里? @shim: 它在站点下的 iis 管理器中 -> -> 身份验证 这是最简单、最清晰的解决方案。我推荐它。 IUSR_MachineName 可能是我的机器名称? Windows 找不到此用户。【参考方案4】:

也许这会对某人有所帮助。我在安装一个空的 Epise3rver 7.5+ 版本时遇到了同样的问题,但很明显它与任何设置或配置无关,因为我的同事没有这个问题。我结束了卸载所有与 MSSQL 相关的应用程序并重新安装了 MsSQL Express 2014。它成功了!我之前尝试安装 2014,但它没有改变任何东西,所以说我在再次安装 2014 之前卸载了所有与 MsSQL 相关的东西。希望对您有所帮助。

【讨论】:

【参考方案5】:

使用 MVC 5.2.3.0 我遇到了类似的问题...将此添加到我的 web.config。

<!-- Configure the Sql Membership Provider -->  
<membership defaultProvider="SqlMembershipProvider" userIsOnlineTimeWindow="15">  
  <providers>  
    <clear />  
      <add   
        name="SqlMembershipProvider"   
        type="System.Web.Security.SqlMembershipProvider"   
        connectionStringName="SqlConn"  
        applicationName="MembershipAndRoleProviderSample"  
        enablePasswordRetrieval="false"  
        enablePasswordReset="false"  
        requiresQuestionAndAnswer="false"  
        requiresUniqueEmail="true"  
        passwordFormat="Hashed" />  
  </providers>  
</membership>  

https://docs.microsoft.com/en-us/dotnet/framework/wcf/feature-details/how-to-use-the-aspnet-membership-provider

【讨论】:

以上是关于如何使用 localDB 将 ASP.NET MVC 4 应用程序部署到 Windows 7 上的本地 IIS?的主要内容,如果未能解决你的问题,请参考以下文章

将用户相关数据传递给 ASP.NET MVC 4 中的视图

使用asp.net mv在ado.net中选择带有where子句的查询

ASP.NET 4.5 尚未在 Web 服务器上注册

ASP.NET MVC 表单和双字段

错误:50 - 发生本地数据库运行时错误。指定的 LocalDB 实例名称在 JETBRAIN RIDER 上无效

在 ASP.NET MVC Preview 4 中使用路由引擎进行表单提交