WAP 转换期间无法解析 .aspx

Posted

技术标签:

【中文标题】WAP 转换期间无法解析 .aspx【英文标题】:Cannot Parse .aspx during WAP Conversion 【发布时间】:2011-10-11 12:53:14 【问题描述】:

我已将网站文件复制到一个新的 WAP 项目中。确保它可以编译并且可以编译。我遇到的问题是当我执行转换为 WAP 时它无法解析 .aspx 页面。该错误只是说它无法解析 .aspx 页面。

当我查看其中一个 .aspx 页面时,我有 page 指令,但它无法识别该命名空间。这是我用于新 WAP 项目的命名空间。

我的代码隐藏页面都有命名空间 Instant.Web,并且项目属性设置为 Instant.Web 作为主命名空间。

因此,例如,当我转到某个页面时,它无法识别我的 Inherits 的 Web.Attachment 部分。

这是一个例子(稍微修改了隐私的措辞):

SomeAspxPage.aspx

<%@ Page Language="C#" Inherits="Instant.Web.Attachment" Codebehind="SomeAspxPage.aspx.cs" %>
<asp:Content ID="ctlContent" ContentPlaceHolderID="ctlContentPlaceHolder" runat="Server">
    <Frm:Attachment ID="Attachment1" runat="server"/>
</asp:Content>

SomeaspxPage.aspx.cs

namespace Instant.Web

    public partial class Attachment : Instant.InstantFrm.Pages.Base.UserPage
    

    

由于某种原因,代码隐藏中的 UserPage 没有显示为您可以右键单击并转到源代码的类。不知道为什么,因为该程序集肯定在这个 WAP 项目中,而且它是 Instant.InstantFrm 的最新程序集

【问题讨论】:

【参考方案1】:

    不知道它是否与您的实际情况相关,但对于您的示例,您有一个属性 Codebehind="Attachment.aspx.cs" 查找文件 Attachment.aspx.cs,但文件名是 SomeaspxPage.aspx 。CS。通常“文件无法解析”是指向导找不到匹配的代码隐藏文件并且无法转换页面。

    顺便说一句,here 的另一条注释:

在转换项目文件之前,添加对 Web 的引用 Bin 文件夹中存在的程序集的应用程序项目 帮助防止错误。

从您的描述中不清楚您是否添加了对自定义 UserPage 的引用。如果没有,并且该程序集只是被复制到 WAP 项目的某个位置,它也可能导致转换错误。

【讨论】:

不,这只是一个发布错误。我重命名了这个线程的页面,但也忘了在那里重命名。不是实际的代码问题,只是在这里发布问题。 我已经添加了对所需 WAP 项目的 bin 的引用,因此它们已经添加到该 Web 项目中。 只是为了明确一点:您是在什么时候遇到问题的?你在皈依的那一刻这么说。但通常网站项目中的页面具有属性 CodeFile,在您的示例中,它已经是 Codebehind(如果转换成功,则会自动重命名)。您是否手动重命名了此属性?还有一件事:您是否尝试将类命名为与文件名相同的名称,例如Inherits="Instant.Web.Attachment" Codebehind="Attachment.aspx.cs"?因为在这种情况下,我也遇到过不同名字的麻烦。 您是否尝试使用继承自常规 System.Web.UI.Page 的代码隐藏类转换页面? 如果您的转换过程说它无法解析特定的 .aspx 页面(一般不是所有页面),您可以尝试such a solution。【参考方案2】:

尝试在您的项目中添加一个新的空白页面,检查是否可以解析。

然后以小步骤添加功能,直到您获得与给您错误的页面相同的页面。

这应该可以让您确定问题所在。

【讨论】:

看起来主要问题是警告 126 无法识别的标记前缀或设备过滤器“asp”。因此,例如它不识别任何 接下来要检查的是在 IIS 中启用了 asp 没关系......这些都不是。 IIS 7 默认启用 .aspx。这与为什么 VS 无法解析 标签无关。 您能否检查一下您是否引用了所有必需的 dll。有时项目编译但由于您缺少一些扩展方法而无法工作。还要检查您引用的 dll 的 .net 版本。 是的,它引用了所有需要的 dll,因为整个解决方案编译得很好。我所做的只是将它转换为 VS 2010,它是一个 VB.NET 项目到 C#。参考文献都在那里。【参考方案3】:

根据其中一个 cmets 中的 Warning 126 Unrecognized tag prefix or device filter 'asp' 引用,听起来您的 CSProj 文件中缺少程序集引用。

验证您在项目的 References 文件夹中是否有 System.Web。

如果存在,请验证它从中提取的版本(目录)与您的项目所针对的 .NET 版本相同。

【讨论】:

整个解决方案都会编译,所以我不会丢失任何 dll。是的 System.Web 在那里,否则这个东西无论如何都不会编译。【参考方案4】:

保存并关闭解决方案,然后重新打开并重试。

我推测 VS 正在缓存一些东西,需要重新加载项目。

【讨论】:

【参考方案5】:

对于 WAP 站点,我将完全删除 ASPX 布局(第一行除外,这是必需的)并在代码隐藏中使用 Response.Write 输出内容。 除了简单之外,这还提供了更清晰的输出和对过程的精细控制。

【讨论】:

这似乎没有帮助,因为问题在于将 ASPX 和代码隐藏文件链接在一起,而您的方法仍然需要这样做。所以你完全将你的视图/演示/布局与你的业务逻辑交织在一起?这与 ASP.NET WebForms、MVC 或 WebPages 的设计是对立的。

以上是关于WAP 转换期间无法解析 .aspx的主要内容,如果未能解决你的问题,请参考以下文章

从 IPersistMoniker 加载需要很长时间才能加载无法解析的 URL

无法解析 JSONArray 无法转换为 JSONObject

解析 JSON - JSONException:整数无法转换为 JSONObject

在 JQuery 中从 VS 2005 的 .aspx 页面解析 XML 响应时一无所获

为啥我在 ReSharper 中收到错误“无法解析符号 <symbolname>”?

Android JSON解析字符串无法转换为jsonobject