【问题标题】:Error loading the webpart '' of type ''加载类型为“”的 Web 部件“”时出错
【发布时间】:2018-07-04 17:21:21
【问题描述】:

在本地工作,但在部署到 dev 时不起作用,在本地和 dev 上使用相同的 kentico 配置设置。本地更改直接应用于开发人员。

所以我正在开发一个使用 Kentico 的现有项目。我创建了一个新的 Web 部件和模板,当尝试进入新页面(Web 部件)时,我收到此错误。

加载“”类型的 Web 部件“”时出错

<%@ Control Language="C#" AutoEventWireup="true" 
Inherits="CMSWebParts_General_ResetPassword" 
CodeBehind="~/CMSWebParts/General/ResetPassword.ascx.cs" %>

<div id="reset-password-page" class="col-md-12">
    <div class="col-md-3">
    </div>
    <div class="col-md-6">
    <h1 style="color: white; margin-top: 0px;">Reset Password</h1>
    <div style="margin-top: 30px; color: #eb770a!important; padding-left: 20px;" class="row">
        <div class="form-group row">
            <span style="color: red; position: relative; left: 12px;" id="validation"></span>
        </div>
        <div class="form-group row">
            <asp:Label ID="lblPassword" runat="server" Text="Password:" CssClass="col-sm-3 control-label">Password:</asp:Label>
            <div class="col-sm-9">
                <asp:TextBox ID="txtPassword" runat="server" Text="" TextMode="Password" CssClass="form-control" ClientIDMode="Static" Monitor="Monitor" data-rel="password"></asp:TextBox>
            </div>
        </div>
        <div class="form-group row">
            <asp:Label ID="lblPassword2" runat="server" Text="Repeat Password:" CssClass="col-sm-3 control-label">Repeat Password:</asp:Label>
            <div class="col-sm-9">
                <asp:TextBox ID="txtPassword2" runat="server" Text="" TextMode="Password" CssClass="form-control" ClientIDMode="Static" Monitor="Monitor" data-rel="password"></asp:TextBox>
            </div>
        </div>
        <div class="form-group row">
            <div class="offset-sm-2 col-sm-10" id="reset">
                <asp:Button ID="ResetBtn" runat="server" CssClass="btn caseFileButton" Text="Reset" CausesValidation="True" />
            </div>
        </div>
    </div>
</div>
<div class="col-md-3"></div>

这是本质上的视图,但这是旧版本的 ASP - 因此是 .ascx 文件。

这一直有效,但非常不一致,如果有任何 Kentico 专家或 ASP 专家,将不胜感激。

我创建了一个代码隐藏文件,ResetPassword.ascx.cs

public partial class CMSWebParts_General_ResetPassword : CMSAbstractWebPart
{

    protected void Page_Load(Object sender, EventArgs e)
    {

这是在事件日志中

消息:无法加载类型“CMSWebParts_General_ResetPassword”

【问题讨论】:

  • 您正在采取哪些步骤来创建 Web 部件?
  • 我创建了一个模板,然后创建了 Web 部件。这可以在本地工作并且我的 Web 部件会加载,但是一旦部署到开发服务器,Web 部件就会停止在 dev 上工作。
  • @kallen,您将不得不提供更多代码或更多有关您收到的设置和错误的详细信息,以便提供某种解决方案。
  • 我很抱歉,但不幸的是,Kentico 似乎提供了最通用的错误,这可能是由简单的语法问题引起的。当我转到 kentico 开发站点上的页面并转到新页面并单击设计时,我收到此错误加载类型为“ResetPassword_1”的 Web 部件“ResetPassword”
  • 代码确定编译了吗?该错误表明CMSWebParts_General_ResetPassword 后面的代码不在加载的程序集中。 (对不起,如果是这样,但我只想说清楚)。

标签: c# asp.net .net web kentico


【解决方案1】:

您是否也创建了代码隐藏文件? IE。 ~/CMSWebParts/General/ResetPassword.ascx.cs。你也需要这个(如果你的项目是 web 应用程序而不是 web 项目,你可能需要在 Visual Studio 中构建它)。

听起来很像 DLL 不包含后面的 Web 部件代码的类。如果您确定代码是在您的本地环境中编译的,您应该查看部署到您的开发环境的方式。确保已从源代码管理中提取了最新代码,并且在将文件部署到服务器之前已正确构建解决方案。

如果您不确定(在这种情况下由其他人进行部署),检查此问题的好/快速方法是查看 bin\cmsapp.dll 并确保文件的日期和时间反映最近的更新(即可能包括您的更改)。

如果您的部署是通过文件复制进行的,您可能希望考虑使用 publish options in Visual Studio 的一部分。

【讨论】:

  • 您好,我已经创建了代码隐藏文件,只是由于安全问题没有粘贴代码。
【解决方案2】:

现已修复 - 问题是 CMSApp.dll 未正确编译。

例如,通过版本控制获取最新版本的代码后,如果正在从文件系统部署到服务器,则需要加载解决方案并构建它以重新编译dll。

重新部署并修复!

【讨论】:

  • 好的,很高兴知道它已修复并且代码未部署。否则,它最终会成为一个更复杂的问题。鉴于 cmets 中关于您原始问题的对话,是否介意我编辑我的答案以反映对话并且您将其标记为正确?
  • 加油!您的评论使我找到了我的解决方案,因此您获得了支持!
  • 谢谢。我已经更新了答案,以传达您问题中 cmets 中的详细信息。
猜你喜欢
  • 2013-03-14
  • 2013-01-25
  • 2011-01-17
  • 1970-01-01
  • 1970-01-01
  • 2012-10-29
  • 2012-12-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多