2010-05-12 37 views
8
  1. 我们在IIS 6.0上部署了一个.net 4 asp.net站点。
  2. Default.aspx被配置为默认文档之一。
  3. 当我们使用以下URL

http://testsiteDefault.aspx与IIS 6.0和.Net 4?

访问该网站,我们希望它来渲染

http://testsite/Default.aspx

但是相反,我们得到404 Not found error。我们在.Net 2.0上部署时没有遇到这个问题。只有在服务器上发生变化的是我们使用.NET 4而不是.NET 2.0。

UPDATE:我尝试了下面的链接,但没有奏效。

Getting an ASP.NET 4 application to work on IIS6

服务器上的框架版本.NET 4 RC。如果我们在服务器上安装最新的.NET 4版本,它会有帮助吗?

更新:现在问题已解决。问题是我们使用的第三方上传控件在Web.Config中添加了自己的HttpHandler。此HttpHandler在.NET 4中启动失败。

+0

只是为了仔细检查,你通过进入网站的属性,“文件”选项卡,并增加“设置默认文件default.aspx'到列表的顶部?说'默认文档'确实使它听起来像你在IIS 7上。0 – Kelly 2010-05-12 18:26:17

+0

@Kellls:我们也可以为IIS 6.0设置Default文档。 – Amitabh 2010-05-13 08:38:06

+0

@Amitabh:是的,在6.0中设置默认文档是我在之前的评论中概述的过程。我只是说'默认文档'更像是IIS7.0术语。在IIS6.0中,它被标记为“默认内容页面”。我只是想仔细检查你是否使用IIS 6.0。 – Kelly 2010-05-13 15:24:11

回答

2

检查服务器日志,他们可能会更好地了解正在发生的事情。

您可以通过右键单击IIS中的网站并转到属性来找到日志文件的路径。然后转到“网站”选项卡,在“启用日志记录”下单击属性,将显示日志记录属性窗口,其中显示日志文件的路径。

0

我想在4.0中默认的页面设置实际上是存储在web.config中的。通过IIS 7.0,IIS读取web.config,确定如何为默认页面执行操作。我认为IIS 6.0不读取设置。

28

使用新的.NET 4框架,如果您在IIS 6 Windows Server上运行它,会出现一些问题。 IIS 6不允许在同一个实例中运行多个框架,例如可以创建面向不同框架的应用程序池的IIS7。 当IIS 6在ASP.NET 2.0下运行时(3.0和3.5是超集,而不是框架),如果应用程序是4.0,则会发生此错误012,316,1610,配置错误 说明:在处理配置文件服务这个请求。请查看下面的具体错误细节并适当修改您的配置文件。 解析器错误消息:无法识别的属性'targetFramework'。请注意,属性名称区分大小写。

Source Error: 
Line 11:  </configSections> 
Line 12:  <system.web> 
Line 13:   <compilation debug="true" targetFramework="4.0"> 
Line 14:   </compilation> 
Line 15:   <pages controlRenderingCompatibilityVersion="3.5" clientIDMode="AutoID"/> </ system.web> 

你有几个选择;

  1. 将.NET应用程序降级到3.5,使Visual Studio 2010变得非常简单。只需进入网站属性 - >应用程序选项卡,并在所有框架版本下拉列表中选择3.5,VS2010将重新加载项目并修改网页。config,如果添加了Web服务引用,则可能需要删除它们并在3.5下重新添加它们。
  2. 配置IIS6和Web配置以解决问题。 我处理第二部分:

  3. 在IIS 6控制台中,您需要右键单击您的项目并单击该属性并检查ASP.Net选项卡是否选择框架4。如果没有选择框架4.

但仍然可能因为应用程序池而面临相同的错误;您可能拥有两个不同框架Web应用程序的相同应用程序池。 IIS 6不允许您在同一实例中运行时拥有多个框架(意味着单个应用程序池不能用于两个不同的框架),如可以创建面向不同框架的应用程序池的IIS7。

  1. 要解决此问题,您需要创建应用程序池并将此应用程序池分配给您的framework 4 Web应用程序。 要分配应用程序池,请在IIS控制台中打开Web应用程序的属性部分,然后单击您之前从下拉列表中创建的“主目录”选项卡和选择应用程序池。
  2. 这两个现在可能完全有时解决您的问题。你可以得到错误 “找不到404页面”。 虽然您现在可能在开发时遇到任何问题。
  3. 基本上找不到页面问题是由IIS6隐藏的其他问题的原因。但你需要看到真正的原因。你在这里做的是去IIS6控制台打开“Web服务扩展节点”,它是在“默认网站”节点的正下方。你会在那里看到整个ASP.Net框架列表,默认情况下这些框架可能被禁止,所以请选择ASP.Net Framework 4并点击允许按钮。 现在浏览您的网站,您会在“找不到404页面”旁边出现其他错误。您可能会得到如下所示的错误:
  4. 提供程序选项中'compilerVersion'属性的值必须为'v4.0' 浏览网站时会看到以下错误 'compilerVersion'如果您正在编译.NET Framework 4.0或更高版本,则提供程序选项中的属性必须为“v4.0”或更高版本。要为.NET Framework 3.5或更低版本编译此Web应用程序,请从Web.config文件的元素中删除“targetFramework”属性。 为了解决这个问题,你需要如下修改你的网络配置文件:因此,根据上述错误信息

此前,CompilerVersion值设置为V3.5,但我们已经改变了我们targetFranework到4如果您正在编译.NET Framework 4.0或更高版本,提供程序选项中的“compilerVersion”属性必须为“v4.0”或更高版本。

Hence your new setting will be as below: 

    <providerOption name="CompilerVersion" value="v3.5"/> 

希望这将解决您在IIS6上的ASP.Net 4迁移和托管问题。

+0

感谢您宝贵的解决方案,我在IIS 2.0配置下有一个用于托管.Net4.0站点的问题。虚拟导演y在Default Web Site下,并将其绑定到单独的应用程序池。它的工作! – Sunil 2012-03-19 06:22:38

+1

thx!第二#3为我做了。 – Trev 2012-10-02 21:32:55

+2

这解决了我的问题:“默认情况下,这些框架可能会被禁止,所以请选择ASP.Net Framework 4并单击允许按钮”。谢谢。 – Fanda 2012-11-30 08:17:06