在普通文件夹下部署ASP.NET程序的方法

在普通文件夹下部署ASP.NET程序的方法

问题描述:

一个asp.net的web程序(路径为d:\proj\WebTest),如果使用一个虚拟目录(例如:virtualapp)指向它(d:\proj\WebTest),通过http://localhost/virtualapp/index.aspx可以正常访问。但是如果把web程序下移到另外一个文件夹中(d:\proj\WebTest\abc), http://localhost/virtualapp/abc/index.aspx,则不能正常访问。出现以下错误提示。

 

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

--------------------------------------------------------------------------------

 

配置错误 

说明: 在处理向该请求提供服务所需的配置文件时出错。请检查下面的特定错误详细信息并适当地修改配置文件。 

 

分析器错误信息: 在应用程序级别以外使用注册为 allowDefinition='MachineToApplication' 的节是错误的。导致该错误的原因可能是在 IIS 中没有将虚拟目录作为应用程序进行配置。

 

源错误: 

 

 

行 23:           “Forms”、“Passport”和“None”

行 24:     -->

行 25:     <authenticationmode="Windows" /> 

行 26: 

行 27: 

 

源文件:E:\aspnet\WebApplicationCSharp\web.config   行: 25

 

如果在web.config文件把<authenticationmode="Windows" />注释掉,则又提示web程序编译之后生成的dll文件找不到(CodeFile方式)或相应的页面代码文件不能读入(CodeBehind方式)的错误。

难道asp.net程序就必须部署到虚拟目录中吗?如果是购买的服务空间,空间服务商又不放开多个虚拟目录,那在一个网站上该如何部署多个应用呢?

 

发生原因:

虚拟目录的实质就是“应用程序域”。应用程序在执行的时候,会到执行目录下的bin目录中去寻找执行代码。由于bin目录在d:\proj\WebTest\abc目录下,而应用程序的执行目录是d:\proj\WebTest,所以才会出现dll找不到的错误。

 

解决办法:

把应用的bin目录移动到应用程序的执行目录中,如果是多个web应用则需要注意dll文件的命名冲突问题。具体到该问题,就是把d:\proj\WebTest\abc目录下的bin目录复制到d:\proj\WebTest目录下,问题即可解决。

 


阅读更多
个人分类: 03_ASP.NET
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭