我在EPiServer 7.5(MVC4框架)中遇到了一些SignalR 2.0的问题.我得到的只是404错误
获取http://web.com/signalr/hubs 404(未找到)
我在Windows 2012 R2服务器上托管所有内容.另外值得注意的是,当从Visual Studio中运行IIS Express中的所有内容时,该解决方案仍然有效,但在IIS 8.5中则无法运行.
到目前为止我所做的是添加SingalR参考.
Startup.cs
启动是在应用程序启动时初始化的,所以似乎工作.
[assembly: OwinStartup(typeof(Web.Startup))]
namespace Web
{
public class Startup
{
#region Local variables
private static readonly ILog Logger = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
#endregion
#region Methods
/// <summary>
/// Configure SignalR
/// </summary>
/// <param name="app"></param>
public void Configuration(IAppBuilder app)
{
try
{
Logger.MethodCallEntry();
// Any connection or hub wire up and configuration should go here …Run Code Online (Sandbox Code Playgroud) 我有一个问题,我在最后几天一直在努力.我正在尝试理解在使用MVC时块的渲染如何在Episerver 7中工作.
我目前的实际设置如下:
我创建了一个名为"TeaserBlock"的块类型,它具有以下几个属性:
[ContentType(DisplayName = "TeaserBlock", GUID = "571582c4-6b99-4c0a-b000-f62265e312a9", Description = "A Teaser Block for show!")]
public class TeaserBlock : BlockData
{
[Display( GroupName = SystemTabNames.Content, Order = 1)]
public virtual string TeaserHeading { get; set; }
[Display(GroupName = SystemTabNames.Content, Order = 2)]
public virtual string TeaserText { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
为此,我在Views/Shared /中有一个相应的局部视图,名为TeaserBlock.cshtml.我想这个以视图模式渲染块?
我最大的问题是让"页面编辑"工作,经过一些尝试和谷歌搜索后,我终于使用以下代码:
[TemplateDescriptor(Inherited = true,
Tags = new string[] { RenderingTags.Preview },
TemplateTypeCategory = TemplateTypeCategories.MvcController)]
public class PreviewBlockController : ActionControllerBase, IRenderTemplate<BlockData>
{
public ActionResult Index(BlockData currentBlock) …Run Code Online (Sandbox Code Playgroud) 我在EPiServer 6 R2中看到了一些用于仪表板的自定义小工具和一个管理模式的插件,可以让您重建搜索索引.
EPiServer 7有哪些选择?
是否有任何我尚未发现的官方插件/小工具或其他内置功能?
是否可以在没有任何小工具/插件的情况下手动重建整个索引?怎么样?
什么是最常用的方法?
我需要使用起始页上的链接按钮绑定博客页面的LinkURL.我所做的实际上是找到了Page ID并使用它获取了一个Page Reference.
PageReference BlogPageReference = new PageReference(21);
PageData BlogPage = GetPage(BlogPageReference);
var url = BlogPage.LinkURL;
Run Code Online (Sandbox Code Playgroud)
这非常简单,但我不满意页面ID是硬编码的.有没有更好的方法来实现这一点,例如获取Page by Page名称?或任何其他方式?
提前致谢 :)
有谁知道BlockData类为什么不直接实现IContent?我知道在从数据库中检索BlockData期间,由Castle创建的代理实现了IContent.
如果StackOverflow不适合此类问题,请移动它.
我一直在加速EPiServer 7 MVC并且已经通过了Joel Abrahamsson的Alloy MVC模板.在看了自定义预览控制器之后,它预览了4种不同"尺寸"的块,它可以渲染,我有一个想法是创建一个特定于某个块"大小"的属性,以便标题文本,例如,可以根据块渲染的"大小"显示不同的内容.从本质上讲,这将是一个字典,其中Key是'size',Value将包含字符串内容.
有没有人制作过这样的词典属性?
我已经尝试了一些方法并且每个方法都遇到了问题:
自定义属性类型/自定义值类型.按照创建自定义属性类型的示例(http://joelabrahamsson.com/creating-a-custom-episerver-property-with-a-custom-class-as-value/),我创建了一个自定义属性类型(PropertyDicitionaryString) )和自定义值类型(DictionaryString).我可以通过实现显示模板来显示值,该显示模板接收具有大小的标签,然后将Model.MyDictionaryString [ViewData ["Tag"]呈现为字符串].但是,我还没有弄清楚如何让内联编辑工作,因为不支持调用@ Html.EditAttributes(x => x.MyDictionaryString [ViewData ["Tag"] as string]); 该方法不支持lambda表达式中的索引或方法调用). 有谁知道如何创建这样的内联编辑器?
自定义属性类型/基元类型.我重写了上面的自定义属性类型,让我们调用它(PropertyDictionaryStringAsPrimitive),以便Value属性返回一个字符串.这允许我将我的模型定义为:
[BackingType(typeof(PropertyDictionaryStringAsPrimitive)]
public virtual string SizeSpecificString{get;set;}
当调用Value方法以确保它返回正确的值时,我不得不破解PropertyDictionaryStringAsPrimitive以便在当前渲染上下文中接收'size'.我能够通过实现自定义ContentDataInterceptor来实现这一点,该ContentDataInterceptor查找对PropertyDictionaryStringAsPrimitive.Value的调用并适当地设置Key.所以现在显示的值工作正常,但内联编辑也不太有效.当进行ajax保存调用时,我需要添加一些状态信息,这样我就可以告诉PropertyDictionaryStringAsPrimitive使用哪个Key来保存更改. 任何人都知道如何在内联编辑ajax保存请求期间传回其他状态信息?
我看了看[CultureSpecific]属性.如果我可以使用与CultureSpecific类似的机制来保持值的"大小"特定实例,那将会很有趣.在反编译器中花费一些时间试图解决hwo CultureSpecific的神奇之处,我将属性跟踪到CotnentDataAttributeScanningAssigner.AssignValuesToPropertyDefinition,将PropertyDefinitionModel.CultureSpecific标志设置为true,PropertyDefinitionSynchronizer.CreatePropertyDefintion用于将PropertyDefintiionModel.CultureSpecificValue设置为Enum.但是我找不到这个设置如何影响加载哪个值. 任何人都知道如何使用属性级别属性动态更改值?
我使用visual studio创建了一个EPIServer CMS站点.我可以使用编辑模式访问该网站.我想在该网站上添加一些图片.但是,当我尝试使用上传选项上传图像时,它显示失败的消息.为什么会发生这种情况你知道吗?但是当我从EPIServer团队提供的demp'Aloy Site'上传图像时,它已成功上传.请告诉我这可能的原因.
感谢并关注Utpal Maity
我有一个基于EPiServer 7.1构建的MVC 4应用程序.EPiServer使用StructureMap作为IoC框架,这可能与我的问题有关.无论如何,这就是我所做的:
添加Glimpse后,所有请求都会因NullReferenceException而失败,例如,如下所示:

我已尝试通过在web.config的Glimpse部分中的'logging level ="Trace"'中进行注释来启用Glimpse日志记录,但无法在Windows事件日志或log4net日志文件中找到任何日志记录.
关于如何进一步排除故障或提示解决方案的想法?
我有一个问题限制在ContentArea中插入什么类型的块.我想要的是SliderBlock的ContentArea属性只能插入一个SlideItemBlock.
[ContentType(...)]
public class SlideItemBlock : BlockData
{
[Required]
Display(Name = "Image")]
public virtual string Image { get; set;}
}
[ContentType(...)]
public class SliderBlock : BlockData
{
[Required]
[Display(Name = "Slides")]
public virtual ContentArea Slides { get; set; }
//Should only accept insertion of SlideItemBlock
}
Run Code Online (Sandbox Code Playgroud)
或者这是否是错误的方法来实现我试图限制编辑器不拖放错误的块类型?
截至目前,我可以创建一个SliderBlock并在其中插入一个SlideItemBlocks.如果我然后在新的SliderBlock中插入创建的SliderBlock,我会得到一个永远的循环,它会打破网站.这就是我想要控制的.
我在 EPIServer 中创建了一个包含 4 个页面的 CMS 站点。现在我想将 id '5' 的页面设置为起始页面。在 episerver.config 部分中,我没有找到 sitesettings 部分。我正在开发.NET提供的MVC应用程序模板。但没有获得任何设置 pagestarid 的选项。在 episever.config 文件中设置 taht 的位置。
我的配置文件是这样的:
<episerver xmlns="http://EPiServer.Configuration.EPiServerSection">
<workflowSettings>
<workflowHost type="EPiServer.WorkflowFoundation.AspNetWorkflowManager,EPiServer.WorkflowFoundation" />
<definitions>
<!-- definition: Workflow definitions that should be predefined, that is if no definition with
specified type exists it will be created-->
<!--
<definition name="Sequential Approval" description="A sequential approval workflow for pages" type="EPiServer.WorkflowFoundation.Workflows.SequentialApproval,EPiServer.WorkflowFoundation"/>
<definition name="Parallel Approval" description="A paralell approval workflow for pages" type="EPiServer.WorkflowFoundation.Workflows.ParallelApproval,EPiServer.WorkflowFoundation"/>
<definition name="Request for feedback" description="Assigns request for feedback tasks to …Run Code Online (Sandbox Code Playgroud) 我打电话FindPagesWithCriteria(PageReference pageLink, PropertyCriteriaCollection criterias)的注入DataFactory,我得到一个NullReferenceException在DefaultPageCriteriaQueryService.GetProviderQueryService():
[NullReferenceException:对象引用未设置为对象的实例.]
EPiServer.Core.DefaultPageCriteriaQueryService.GetProviderQueryService(ContentProvider provider)+44
EPiServer.Core.DefaultPageCriteriaQueryService.FindPagesWithCriteriaInternal(PageReference pageLink,PropertyCriteriaCollection criterias,String languageBranch,ILanguageSelector selector,FindPagesWithCriteriaDelegate findPagesDelegate )+293
EPiServer.Core.DefaultPageCriteriaQueryService.FindPagesWithCriteria(PageReference pageLink,PropertyCriteriaCollection Criterias,String languageBranch,ILanguageSelector selector)+124
EPiServer.DataFactory.FindPagesWithCriteria(PageReference pageLink,PropertyCriteriaCollection standarderias)+115
...
我已经连接了Episerver符号服务器并逐步完成了代码,深入了解DefaultPageCriteriaQueryService我可以看到ContentProvider传入的GetProviderQueryService()是null,导致NRE.调用此方法的行是这样的:
case TypeOfSearch.Local:
return findPagesDelegate(pageLink, tempCriteria, languageBranch, selector, this.GetProviderQueryService(this._providerManager.ProviderMap.GetDefaultProvider()));
Run Code Online (Sandbox Code Playgroud)
罪魁祸首是_providerManager.ProviderMap.GetDefaultProvider()返回null因为_providerManager.ProviderMap是空的.我之前从未遇到过这个问题,如果应该初始化,我找不到有关ProviderMap的任何相关信息.
为什么我会遇到这个问题?为什么我的ProviderMap为空?我的ProviderMap应该有默认提供商吗?