如何在网站的子文件夹中部署.Net应用程序?

时间:2012-07-16 22:57:17

标签: asp.net .net iis-7

我有一个名为 BasicTestProject 的.Net 4.0项目,它包含一个名为默认的网络表单。

Default.aspx的:

<%@ Page Language="C#" AutoEventWireup="true" 
         CodeBehind="Default.aspx.cs" Inherits="BasicTestProject.Default" %>

Default.aspx.cs:

namespace BasicTestProject 
{
    public partial class Default : System.Web.UI.Page 
    {
       ...
    }
}

我想将此应用程序的编译版本放在网站的子文件夹中:

  • 网站Root
    • 子文件夹
      • BasicTestProject

在网站根目录我有一个基本的web.config:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.web>
        <compilation targetFramework="4.0" />
    </system.web>
</configuration>

我对上面的示例进行了测试,当我尝试访问子文件夹中的网站时( http://WebsiteRoot/SubFolder/BasicTestProject/Default.aspx ),这就是错误我我得到了:

Parser Error 

Description: An error occurred during the parsing of a resource required to service this request. Please review the following specific parse error details and modify your source file appropriately. 

Parser Error Message: Could not load type 'BasicTestProject.Default'.

Source Error: 

Line 1:  <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="BasicTestProject.Default" %>
Line 2:  
Line 3:  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

Source File: /*WebsiteRoot*/*SubFolder*/BasicTestProject/default.aspx    Line: 1 

--------------------------------------------------------------------------------
Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.272 

另外,我应该提一下,我已经尝试将我编译的BasicTestProject放在它自己的IP地址上,以便它位于根文件夹中。这按预期工作,我可以访问Default.aspx。

更新(回答):

在IIS7中,我右键单击BasicTestProject并将其转换为应用程序。

  • 网站Root
    • 子文件夹
      • BasicTestProject

我还必须向ApplicationTestProject文件夹授予应用程序池用户权限。它现在是独立运行的。

2 个答案:

答案 0 :(得分:1)

您是否将该子文件夹配置为IIS中的应用程序?

答案 1 :(得分:1)

我将详细阐述@MikeC的答案:在IIS中有“应用程序范围”的概念,它是文件系统树的子层次结构,它属于同一个概念性的“应用程序” ”

每个IIS网站的根目录也标记为新应用程序范围的根。在作用域中执行的任何服务器端代码都在作用域所属的应用程序池中运行(例如,在作用域池的标识下启​​动CGI和FastCGI进程)。 ASP.NET通过将应用程序范围的根定义为它希望找到bin目录的位置以及允许定义更多web.config选项来进一步实现这一点。

正如我所说,这适用于文件系统层次结构,因此如果您正在使用URL重写或ASP.NET URL路由,那么它会使事情变得复杂。

(这最初是对Mike的回答的评论回复,但它超过了消息的长度)。