"在应用程序级别之外使用注册为 allowDefinition='MachineToApplication' 的节是错误的。如果在 IIS 中没有将虚拟目录配置为应用程序,则可能导致此错误。"
我要这个问题是修改了web.config文件来解决的(修改下后缀就行,不用删除),因为一个项目里面的web.config太多了,而且iis网站运行的时候会再生成一个web.config,就会产生冲突,当然,其余的解决方法你也可以尝试下,我之前还尝试了添加虚拟目录。
需要注意的问题:
部署网站的时候,最好将网站项目放到wwwroot 下!
IIS指向的物理路径我们需要指定正确!要不然会出现一系列的问题,比如:分析器问题——分析器错误消息: 文件“/iis_1._Default”不存在
iis配置网站
如果没有对项目的文件夹区分,举个例子:
我们创建一个简单的mvc网站(图4),直接在iis中添加网站,物理目录就填写VS下的目录(一般都是与pakage文件夹是同级目录,之前我还担心没有把pakage文件给包含进去会出错,事实证明我错了,我们直接填写项目的路径就可以)
如果做了分级(图3):
将WebUI文件夹(即包含Views的文件夹)设置为物理目录就OK.IIS配置MVC项目与配置webform项目最大的不同在于默认文档的配置,asp.net webform项目的aspx对应的就是一个文件一个视图,而asp.net mvc下的cshtml,它只是一个视图模板,其路由是有Controller下的action决定的,这点是要注意的,我们可以看看IIS下的处理程序映射:
从上面两图的对比就能看出IIS 的处理程序映射模块对aspx有直接的处理,而相比较cshtml,IIS直接就是NOTFOUND.这就很坑了。ASP.NET MVC的路由机制会处理这些,因此,在配置MVC的项目时,我们不需要处理默认文档,直接交给MVC的路由模块的相关dll来处理就行。
在web.config 的数据库连接节,我们最好使用
connectionString="server=.;uid=sa;pwd=XXXXX;database=SportStore;"
这种格式,以免部署到服务器上的时候出现问题(具体是啥我忘了)