2010-05-10 120 views
10

我嘗試部署ASP.NET MVC 2項目(VS2010)贏得Server 2008 R2的未能加載類型 'System.Web.Mvc.ViewUserControl <SOMETYPE>'

它完美的dev的機器。但是在Server 2008 R2中會出現奇怪的錯誤: 當.ascx文件具有使用泛型類型頭:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<MyProj.Web.Models.RangeViewModel>" %> 

Server報告未能加載類型「System.Web.Mvc.ViewUserControl < MyProj.Web.Models。 RangeViewModel >'。

但是,當我宣佈在某處cs文件類型像

public class AA : System.Web.Mvc.ViewUserControl<MyProj.Web.Models.RangeViewModel> 
{ 
} 

<%@控制頭用它來代替。然後,它就像它應該那樣工作。

我錯過了什麼嗎?

UPDATE

我在兩個步驟中(在服務器)部署應用程式:

  1. 使用命令行的MSBuild(用於.NET 4)重建從源VS溶液
  2. 發射定製的msbuild任務(具有publih.msbuild文件)執行兩個目標:Targets =「ResolveReferences; _CopyWebApplication」
+0

你是如何部署? – 2010-05-10 14:34:02

+0

已更新我的初始帖子 – Evgenyt 2010-05-10 14:39:00

+0

您是否試過'Inherits =「System.Web.Mvc.ViewUserControl'1 [[MyProj.Web.Models.RangeViewModel]]''? – 2010-05-10 14:41:07

回答

0

可能會搞砸在服務器上安裝ASP.NET MVC。我建議卸載MVC並使用Web Platform Installer重新安裝。當我使用下載的設置文件進行安裝時,我也遇到了問題,因此我刪除了所有內容並使用Web Platform Installer進行了安裝。

另一個建議是製作一個新的新服務器盒 - 可以是虛擬的 - 然後在那裏嘗試。

此外重建解決方案可以幫助和檢查web.config也可以。

也嘗試如果MvcDiagnostics.aspx工具顯示任何異常。退房this博客文章

讓我們知道是否有幫助。

14

我看到視圖引擎在繼承屬性中編譯強類型基類時出現問題。我有同樣的問題,Web.Config中的「頁面」部分更新到這有助於:

<pages 
     validateRequest="false" 
     pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" 
     pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" 
     userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> 
     <controls> 
      <add assembly="System.Web.Mvc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" namespace="System.Web.Mvc" tagPrefix="mvc" /> 
     </controls> 
     <!-- rest of your pages section --> 
</pages> 
+0

是的,但是對於MVC 2 – Evgenyt 2010-05-10 14:48:44

+0

是的 - 對於MVC2它應該是「版本= 2.0.0.0」。理所當然 - 如果MVC項目正確構建併發布,「頁面」部分的調整不是必須的。在實踐中,當在不同版本和MVC版本之間遷移時,它是修復項目的最簡單方法 – PanJanek 2010-05-10 14:55:30

+1

同樣 - 如果您部署了新的「區域」並忘記複製該區域的「web.config」,則可能會看到此錯誤。剛剛發生在我身上。 – bendytree 2014-02-11 14:39:07

5

找不到爲什麼,但下面的幫助(web.config中):

<pages 
     pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" 
     pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" 
     userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> 

最初發現類似的asp.net mvc 1

+0

您的項目或其構建有問題,因爲web.config中並不要求ASP.NET MVC應用程序在本地或在服務器上工作。 – mare 2010-05-10 14:52:04

+0

@mare你是正確的一個重選,它不應該是必需的,但在一個例子中,我們不能沒有添加頁面標籤描述的應用程序執行。我很想知道真正的問題,mayby machine.config正在做些什麼? – Jafin 2011-04-06 04:25:40

1

我有類似的問題。有幾個要點

  1. 括號和類型名稱之間的必需空格。
  2. 需要爲您的模型類型投射模型。

這裏是我

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl <MyNamespace.MyModel>" %> 
<%@ Import Namespace="MyNamespace" %> 
<% var model = (MyModel)Model; %> 

<h1><% model.MyField %></h1> 
相關問題