首先一句话介绍LocalDB。LocalDB是SQLServer的文件数据库,类似于SQLite。它拥有SQLServer的绝大部分功能,简单易用。但部署LocalDB到生产系统是不推荐的。本文部署是一个内部微系统,数据库仅仅只用来做一个最基本的用户认证而不做其他。基于此,决定直接试用LocalDB部署。

之前对LocalDB并不了解,虽然说其类似于SQLite,但SQLite是 一个生产用数据库,而LocalDB更像是基于体验的。系统经过基本调试、验证后,直接试用Visual Studio发布到远程的Windows 2008 SP1系统。打开网站,网站报错。

A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. 
Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SQL Network Interfaces, error: 50 - Local
Database Runtime error occurred. Cannot create an automatic instance. See the Windows Application event log for error details.

经过搜索,在StackOverflow以及MSDN上都有相关的描述。主要是LocalDB与Full IIS应用不兼容,需要按照某一个补丁,进行额外设置。我不确定最新的IIS是否已经兼容,至少在Windows 2008 Serve R2上的IIS版本不兼容。在Using LocalDB with Full IIS, Part 1: User Profile[1]一问中有更加详细的描述。按照其Part1的设置,网站依然没有跑起来。在Windows 7 SP1 causes IntelliTrace Collection to fail on IIS[2]提到了不兼容的补丁信息,以及如何解决。

着急之下,直接在服务器上安装SQLServer Express。如果LocalDB不建议部署,准备直接迁移到Express。在一些参考上,又提到SQL Server Runtime,可能是没有安装Express的原因。安装完SQLServer Express,网站依然无法正常工作。在下载Express时,看到还有一个下载选项为CHS\x64\SqlLocalDB.msi 。可能此程序才是LocalDB的Runtime。遂卸载 SQLServer Express,安装SQlLocalDB。再次运行网站,错误信息变为如下:

//大概是这个意思
找不到SQLServer进程
无法启动实例

看来LocalDB还需要与SqlServer Express协同工作。安装好之后,再次启动网站,错误依旧。

A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance
name is correct and that SQL Server is configured to allow remote connections. (provider: SQL Network Interfaces, error: 50 - Local Database Runtime error occurred. 在 LocalDB
实例启动期间出错: 无法启动 SQL Server 进程。
)

在[1][2]中提到还需要设置IIS的应程序池信息,之前没有改变是因为我以试用Administrator身份运行此程序。按照[1][2]的方法,增加应用程序池设置。

<add name="ASP.NET v4.0" autoStart="true" managedRuntimeVersion="v4.0">
<processModel identityType="SpecificUser" userName="administrator" password="**********" loadUserProfile="true" setProfileEnvironment="true" />
</add>

本Web App主要进行服务器管理,与操作系统(Win32 Api)交互较多,部分Api需要很高权限。在以上设置中增加了loadUserProfile="true" setProfileEnvironment="true" ,赋予程序池读取用户配置、环境参数的能力。重新启动应用程序池,App正常运行。

回过头来看,如果要部署LocalDB到IIS 可以参考Deployment of SQL Express LocalDB on IIS[3]。就此次实践来说,大概要经过这么几部:

  1. 环境为Widnows 2008 R2
  2. 需要安装SQL Server Express,安装SqlLocalDB.
  3. 需要配置C:\Windows\System32\inetsrv\config\applicationHost.cof,赋予应用程序池读取用户数据、环境数据的信息。

网站开始正常工作了,可本地调试的LocalDB的文件并不能复用,必须新建否则会报错。内置的管理员账户没有了,数据如何导入LocalDB呢?

参考:

[1]Using LocalDB with Full IIS, Part 1: User Profile, https://blogs.msdn.microsoft.com/sqlexpress/2011/12/08/using-localdb-with-full-iis-part-1-user-profile/

[2]Windows 7 SP1 causes IntelliTrace Collection to fail on IIS, https://support.microsoft.com/zh-cn/kb/2547655

[3]Deployment of SQL Express LocalDB on IIS, https://blogs.msdn.microsoft.com/gaurav/2013/12/21/deployment-of-sql-express-localdb-on-iis/

[3]Stack Overflow上的提问, http://stackoverflow.com/questions/26248293/sql-network-interfaces-error-50-local-database-runtime-error-occurred-canno

使用LocalDB部署Asp.Net MVC网站时遇到的问题的更多相关文章

  1. 阿里云 Windows Server 2012 r2 部署asp.net mvc网站 平坑之旅

    做了多年的Web开发工作,网站部署也不在话下,可每次部署却并不是十分顺利,将本次在阿里云服务器上部署asp.net mvc网站遇到的问题记录如下. 平台是阿里云ECS,操作系统是 Windows Se ...

  2. IIS部署asp.net mvc网站

    iis配置简单的ASP.NET MVC网站编译器:VS 2013本地IIS:IIS 7操作系统:win 7MVC版本:ASP.NET MVC4sql server版本: 2008 r2 打开VS 20 ...

  3. IIS 7.5 部署ASP.Net MVC 网站

    請務必註冊 ASP.NET 4.0:若是 32 位元則是 %WINDIR%\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis -ir 1.首先确定已经安 ...

  4. 利用Powershell自动部署asp.net mvc网站项目 (一)

    这一篇中我们会写一些关于自动化部署的代码.我们会使用 Powershell 书写这类代码. 你将发现这篇文章中涉及的东西非常具体,有的要求甚至相当苛刻且可能不具有通用性.这是因为部署从来都是跟环境打交 ...

  5. jexus部署ASP.NET MVC网站

    1.新建项目,我这里新建的空项目中的MCV 2.用nuget删除这两个类库 Microsoft.CodeDom.Providers.DotNetCompilerPlatform Microsoft.N ...

  6. 【转载】Asp.Net MVC网站提交富文本HTML标签内容抛出异常

    今天开发一个ASP.NET MVC网站时,有个页面使用到了FCKEditor富文本编辑器,通过Post方式提交内容时候抛出异常,仔细分析后得出应该是服务器阻止了带有HTML标签内容的提交操作,ASP. ...

  7. 【转载】 Asp.Net MVC网站提交富文本HTML标签内容抛出异常

    今天开发一个ASP.NET MVC网站时,有个页面使用到了FCKEditor富文本编辑器,通过Post方式提交内容时候抛出异常,仔细分析后得出应该是服务器阻止了带有HTML标签内容的提交操作,ASP. ...

  8. 总结一下ASP.NET MVC 网站的部署问题

    总结一下ASP.NET MVC 网站的部署问题 近日,准备把MVC建了一个新的测试站点部署到IIS上面,结果没想到出现了一系列的问题和错误,准备记录一下. 第一个问题,就是如何将MVC的站点部署到II ...

  9. Linux(CentOS)中使用Mono+jexus部署Asp.net4.5网站

    一.效果: 二.安装步骤: 1.安装系统CentOS,我这是用CentOs7测试的. 2.接下来安装libgdiplus.Mono.Jexus有问题可以参考安装工具的官网: Libgdiplus下载官 ...

随机推荐

  1. 时间插件,js格式化,js某月天数,js某月最后一天日期

    //时间格式化 Date.prototype.format = function(fmt) { var o = { "M+": this.getMonth() + 1, //月份 ...

  2. DATASNAP压缩过滤器的使用

    ZLIBCOMPRESSION FILTER 作为范例,我们使用已随D2010提供的DataSnap过滤器.可用于在客户端和服务端压缩数据流.这里说的ZlibCompression过滤器可以在DbxC ...

  3. Pixhawk---超声波模块加入说明(I2C方式)

    1 说明   在Pixhawk的固件中,已经实现了串口和i2c的底层驱动,并不须要自己去写驱动.通过串口的方式加入超声波的缺点是串口不够.不能加入多个超声波模块,此时须要用到i2c的方式去加入了.在P ...

  4. C++学习之动态数组类的封装

    动态数组(Dynamic Array)是指动态分配的.可以根据需求动态增长占用内存的数组.为了实现一个动态数组类的封装,我们需要考虑几个问题:new/delete的使用.内存分配策略.类的四大函数(构 ...

  5. HttpClient的Post和Get訪问网页

    一.基础JAR包 Mavenproject下pom.xml需配置的jar包 <dependencies> <dependency> <groupId>junit&l ...

  6. css高级:flash嵌入

    1,由flash创建的object/embed标签的标准集.缺点:他们与各种无效属性和元素在一起被加载,破坏文档对web标准的依从性, 因为embed是人生w3c规范没有的专有元素. 2,迂回解决方案 ...

  7. 浅析js的函数的按值传递参数

    js的函数传参的方式是按值传递,正常情况下,改变函数参数的值,并不会对函数外部的变量造成影响.例如: 'use strict';var list = [1, 2, 3]; list.forEach(f ...

  8. poj1201 Intervals——差分约束

    题目:http://poj.org/problem?id=1201 差分约束裸题: 设 s[i] 表示到 i 选了数的个数前缀和: 根据题意,可以建立以下三个限制关系: s[bi] >= s[a ...

  9. android 中activity 属性说明(转载)

    转自:http://liuwuhen.iteye.com/blog/1759796 activity是android中使用非常平凡的一种组件,我们除了需要掌握activity中的生命周期以外,还需要掌 ...

  10. Linux必知必会的目录结构

    1.目录结构 /bin 二进制文件 命令 /sbin 超级命令 只有root用户可以使用 /boot 系统的引导文件 系统内核 /dev 设备文件 光盘 硬盘分区 /etc 系统配置文件 /home ...