BC30451:未声明名称“RouteTable”

时间:2013-06-11 14:40:47

标签: asp.net system.web system.web.routing

我正在我的global.asax中尝试一些URL重写 - 类似于这篇微软文章http://msdn.microsoft.com/en-us/library/system.web.routing.routetable.routes.aspx中的内容

我一直收到错误“BC30451:未声明名称'RouteTable'。”

我已将以下内容导入global.asax文件:

<%@ Import Namespace="System.Web.Routing" %>
<%@ Import Namespace="System.Web.Routing.Route" %>
<%@ Import Namespace="System.Web" %>


Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs)

    RegisterRoutes(RouteTable.Routes) ' the problem occurs here

End Sub

..但它似乎没有认出“RouteTable”。

我已经与我的托管服务提供商核实了我在.net 3.5上 - 虽然我不相信错误信息的底部是这样说的:

版本信息:Microsoft .NET Framework版本:2.0.50727.4234; ASP.NET版本:2.0.50727.4223

他们告诉我:

We have receive an update from our system engineers, net 3.5 is basically version 2 with a few add -ons. Similarly 4.5 is references as version 4.
They have also checked other sites on the server and they are also reflected as 2

这是否正确,因为我不确定我是否可以这样做而不是3.5?

谢谢,

2 个答案:

答案 0 :(得分:1)

好吧,即使Microsoft .NET Framework版本:2.0.50727.4234,也会出现这种情况。可能会出现在屏幕上,仍然可以安装版本asp.net 3.5。我在网上查了几个来源,包括这个“asp.net版疯狂”:

http://blogs.msdn.com/b/jamesche/archive/2007/09/25/asp-net-version-madness.aspx

所以我不相信现在因运行较低版本而导致错误。

至于我得到的错误,我想我需要将它添加到我的web.config:

    <add assembly="System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>

答案 1 :(得分:0)

您必须运行3.5 SP1或更高版本才能使用RouteTable。我认为在Service Pack 1之前的3.5中没有路由,所以我建议您验证您至少在3.5 SP1上。

System.Environment.Version将为您提供此信息,以便您可以尝试在您的代码中检查您的.net版本号:

Response.Write(System.Environment.Version.ToString());
Response.End();

或者在你的aspx页面中:

<% Response.Write("Version: " + System.Environment.Version.ToString() ) %>