问题标签 [umbraco8]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
413 浏览

umbraco8 - 如何在 HttpHandler 中获取 UmbracoHelper?

在 Umbraco 7 中,您可以使用UmbracoContext.EnsureContext()一些技巧来获取UmbracoHelperUmbraco 上下文的外部,例如在 HttpHandler 中。在 Umbraco 8UmbracoContext.EnsureContext()中已被删除,那么我们现在该怎么做呢?

具体来说,我想在我的 HttpHandler 中获取根节点,例如

但我不知道如何实现CreateUmbracoHelper().

0 投票
1 回答
223 浏览

c# - 单元测试 Umbraco 8 Composers

我对单元测试还很陌生,所以请放轻松!我正在尝试使用一个相当简单的 Umbraco 8 项目作为测试平台。我目前一直在尝试测试注册依赖项的作曲家,并且很难弄清楚如何测试它。

代码可能会说话,所以不用多说,这是我想测试的作曲家。如您所见,它只是注册了一个针对接口编码的服务:

在玩了很多之后,我在 Umbraco 源代码中找到了一些代码,这意味着我可以根据注册类型的想法获得测试通过。但是,这绝不是在ServicesComposer课程的背景下。因此,这不会影响我的代码覆盖率和实际测试类,而不是注册某些东西的能力。无论如何,这是代码:

下面的代码显示了我目前的位置,并且可能接近测试的样子(如果目前有点混乱)。我可能在这里偏离了目标,所以任何帮助都会风靡一时!

我还尝试模拟合成,看看我是否可以验证该Register方法已运行,但由于这是一个静态方法,我收到以下错误:

这是让我遇到该错误的代码:

最终,我失败了(可能我的目标太高了!),我不能 100% 确定要在这里测试什么。我的想法是我想测试运行IPapermoonContentTypeContainerService后是否可解析,_serviceComposer.Compose即它不是 null 以确保它已注册到容器中。在这一点上这可能是不可能的,我想知道composition.Register<IPapermoonContentTypeContainerService, PapermoonContentTypeContainerService>();被调用的测试是否足够(因为实际的注册部分是第三方的,因此不被测试)。或者,我是不是找错了树,实际上根本不应该对其进行测试?

谢谢!

0 投票
1 回答
795 浏览

c# - 尝试使用 NPoco 在数据库中插入值时出错

我正在使用Umbraco 文档中的这个示例,当我尝试将值保存到数据库表时,我收到此错误:无法将值 NULL 插入列“Id”,表“petapoco.dbo.BlogComments”;列不允许空值。插入失败。该语句已终止。

此外,在创建表并在数据库中检查它之后,我可以看到没有为 id 字段设置主键和自动增量选项。

这就是我插入值的方式:

0 投票
1 回答
1200 浏览

dependency-injection - Umbraco 8 和 IoC

我安装了 Umbraco 8.1.3,我正在尝试在这篇文章之后配置依赖注入,但不起作用。我的代码是:

控制器:

服务:

DI配置:

错误是:

“Message”:“发生错误。”,“ExceptionMessage”:“尝试创建'ContactController'类型的控制器时发生错误。确保控制器具有无参数的公共构造函数。”,“ExceptionType”:“ System.InvalidOperationException", "StackTrace": " 在 System.Web.Http.Dispatcher.DefaultHttpControllerActivator.Create(HttpRequestMessage 请求,HttpControllerDescriptor controllerDescriptor,类型 controllerType)\r\n 在 System.Web.Http.Dispatcher.HttpControllerDispatcher.d__15.MoveNext ()", "InnerException": { "Message": "发生错误。", "ExceptionMessage": "无法解析类型:MySite.Controllers.ContactController,服务名称:", "ExceptionType": "System.InvalidOperationException", "StackTrace": " at LightInject.ServiceContainer.CreateDelegate(Type serviceType, String serviceName, Boolean throwError) in C:\projects\lightinject\src\LightInject\LightInject.cs:line 4748\r \n 在 LightInject.ServiceContainer.CreateDefaultDelegate(Type serviceType, Boolean throwError) 在 C:\projects\lightinject\src\LightInject\LightInject.cs:line 4705\r\n 在 LightInject.ServiceContainer.TryGetInstance(Type serviceType) 在 C: \projects\lightinject\src\LightInject\LightInject.cs:line 3493\r\n 在 System.Web.Http.Dispatcher.DefaultHttpControllerActivator.GetInstanceOrActivator(HttpRequestMessage 请求,类型 controllerType,FuncCreateDelegate(Type serviceType, String serviceName, Boolean throwError) in C:\projects\lightinject\src\LightInject\LightInject.cs:line 4748\r\n at LightInject.ServiceContainer.CreateDefaultDelegate(Type serviceType, Boolean throwError) in C:\ projects\lightinject\src\LightInject\LightInject.cs:line 4705\r\n at LightInject.ServiceContainer.TryGetInstance(Type serviceType) in C:\projects\lightinject\src\LightInject\LightInject.cs:line 3493\r\n在 System.Web.Http.Dispatcher.DefaultHttpControllerActivator.GetInstanceOrActivator(HttpRequestMessage 请求,类型 controllerType,FuncCreateDelegate(Type serviceType, String serviceName, Boolean throwError) in C:\projects\lightinject\src\LightInject\LightInject.cs:line 4748\r\n at LightInject.ServiceContainer.CreateDefaultDelegate(Type serviceType, Boolean throwError) in C:\ projects\lightinject\src\LightInject\LightInject.cs:line 4705\r\n at LightInject.ServiceContainer.TryGetInstance(Type serviceType) in C:\projects\lightinject\src\LightInject\LightInject.cs:line 3493\r\n在 System.Web.Http.Dispatcher.DefaultHttpControllerActivator.GetInstanceOrActivator(HttpRequestMessage 请求,类型 controllerType,Func\projects\lightinject\src\LightInject\LightInject.cs:line 4705\r\n at LightInject.ServiceContainer.TryGetInstance(Type serviceType) in C:\projects\lightinject\src\LightInject\LightInject.cs:line 3493\r\ n 在 System.Web.Http.Dispatcher.DefaultHttpControllerActivator.GetInstanceOrActivator(HttpRequestMessage 请求,类型 controllerType,Func\projects\lightinject\src\LightInject\LightInject.cs:line 4705\r\n at LightInject.ServiceContainer.TryGetInstance(Type serviceType) in C:\projects\lightinject\src\LightInject\LightInject.cs:line 3493\r\ n 在 System.Web.Http.Dispatcher.DefaultHttpControllerActivator.GetInstanceOrActivator(HttpRequestMessage 请求,类型 controllerType,Func1& activator)\r\n at System.Web.Http.Dispatcher.DefaultHttpControllerActivator.Create(HttpRequestMessage request, HttpControllerDescriptor controllerDescriptor, Type controllerType)", "InnerException": { "Message": "An error has occurred.", "ExceptionMessage": "Unresolved dependency [Target Type: MySite.Controllers.ContactController], [Parameter: contactService(IServices.Contacts.IContactService)], [Requested dependency: ServiceType:IServices.Contacts.IContactService, ServiceName:]", "ExceptionType": "System.InvalidOperationException", "StackTrace": " at LightInject.ServiceContainer.EmitConstructorDependency(IEmitter emitter, Dependency dependency) in C:\\projects\\lightinject\\src\\LightInject\\LightInject.cs:line 4163\r\n at LightInject.ServiceContainer.EmitConstructorDependencies(ConstructionInfo constructionInfo, IEmitter emitter, Action1 decoratorTargetEmitter) 在 C:\projects\lightinject\src\LightInject\LightInject.cs:line 4120\r\n 在 LightInject.ServiceContainer.EmitNewInstanceUsingImplementingType(IEmitter 发射器, ConstructionInfo constructionInfo, Action 1 decoratorTargetEmitMethod) in C:\\projects\\lightinject\\src\\LightInject\\LightInject.cs:line 4081\r\n at LightInject.ServiceContainer.EmitNewInstance(ServiceRegistration serviceRegistration, IEmitter emitter) in C:\\projects\\lightinject\\src\\LightInject\\LightInject.cs:line 4038\r\n at LightInject.ServiceContainer.CreateDynamicMethodDelegate(Action1 serviceEmitter) 在 C:\projects\lightinject\ src\LightInject\LightInject.cs:C:\projects\lightinject\src\LightInject\LightInject 中 LightInject.ServiceContainer.CreateInstanceDelegateIndex(Action 1 emitMethod) in C:\\projects\\lightinject\\src\\LightInject\\LightInject.cs:line 4693\r\n at System.Collections.Concurrent.ConcurrentDictionary2.GetOrAdd(TKey key, Func 2 valueFactory)\r\n at LightInject.ServiceContainer.EmitLifetime(ServiceRegistration serviceRegistration, Action1 emitMethod, IEmitter 发射器) 的第 3777 行\r\n。 c:\projects\lightinject\src\LightInject\LightInject.cs:LightInject.ServiceContainer.<>c__DisplayClass153_0.b__0(IEmitter ms) 中的第 4664 行\r\n:LightInject.ServiceContainer.CreateDynamicMethodDelegate 中的第 3856 行\r\n (行动1 serviceEmitter) in C:\\projects\\lightinject\\src\\LightInject\\LightInject.cs:line 3777\r\n at LightInject.ServiceContainer.CreateDelegate(Type serviceType, String serviceName, Boolean throwError) in C:\\projects\\lightinject\\src\\LightInject\\LightInject.cs:line 4743", "InnerException": { "Message": "An error has occurred.", "ExceptionMessage": "Missing public constructor for Type: IServices.Contacts.IContactService", "ExceptionType": "System.InvalidOperationException", "StackTrace": " at LightInject.MostResolvableConstructorSelector.Execute(Type implementingType) in C:\\projects\\lightinject\\src\\LightInject\\LightInject.cs:line 5558\r\n at LightInject.TypeConstructionInfoBuilder.Execute(Registration registration) in C:\\projects\\lightinject\\src\\LightInject\\LightInject.cs:line 5719\r\n at System.Collections.Concurrent.ConcurrentDictionary2.GetOrAdd(TKey key, Func`2 valueFactory)\r\n 在 C:\projects\lightinject\src\LightInject\LightInject.cs:line 4028 中的 LightInject.ServiceContainer.EmitNewInstance(ServiceRegistration serviceRegistration, IEmitter 发射器)\r\ n 在 LightInject.ServiceContainer.<>c__DisplayClass153_0.b__0(IEmitter ms) 在 C:\projects\lightinject\src\LightInject\LightInject.cs:line 3856\r\n 在 LightInject.ServiceContainer.<>c__DisplayClass153_0.b__0(IEmitter ms ) 在 C:\projects\lightinject\src\LightInject\LightInject.cs:line 3856\r\n 在 C:\projects\lightinject\src\LightInject\LightInject 中的 LightInject.ServiceContainer.EmitConstructorDependency(IEmitter 发射器,依赖依赖项)。 cs:第 4158 行" } }

有谁能够帮我?

0 投票
6 回答
1340 浏览

c# - 如何将razor生成的html转换成字符串?

我使用 umbraco 创建了一个工作流,我想做的是:创建一个工作流来获取由 razor 模板 ( umbraco.forms) 创建的 html。

这是模板的位置umbraco.forms

Views\Partials\Forms\Emails 这个模板是我想在调用这个工作流时通过电子邮件发送的。

我试过string template = html.Raw(Template);了,但我无法访问html.Raw("");

我已经尝试过这个解决方案,但似乎record.ParseWithRazorView(filePath);不存在

有一个工作流程可以做一些接近的事情,但似乎我无法重写或访问此代码

在此处输入图像描述

如果您不完全理解我假装的内容,请发表评论,我会用所有详细信息更新问题

0 投票
1 回答
56 浏览

umbraco - 如何在 Umbraco8 中归档旧节点

我们正在开发一个新闻网站,我们有大量数据,大约 100 万条新闻和 500 GB 的媒体。我们对最佳实践进行了一些研究,但是在处理这个问题时缺乏资源。

我们得出的结论是,我们必须通过取消发布旧年容器(2009、2010、...2014)来归档很少访问的旧新闻,以便在后台和前台拥有一个快速的网站,在取消发布容器后,我们注意到检查索引文件仍然很大,并且新闻节点不再通过原始 URL 可用,因为我们取消了它们的父节点。

请向我提供任何可以帮助的见解。

0 投票
1 回答
1858 浏览

c# - 如何从 Umbraco 的特定文化中获取内容

我有将德语设置为默认语言的双语网站,我正在尝试从我的 SurfaceController 获取英语内容节点,如下所示:

我试图像这样改变当前的文化:

但没有成功。

0 投票
2 回答
34 浏览

umbraco - 即使已定义,也无法从对象中获取值

我的页面中有一些代码。

当我运行代码时出现此错误:对象引用未设置为对象的实例

我一直在运行调试器,这是我在行运行之前检查元素时看到的。

在此处输入图像描述

错误出现在这行代码@(model.HasProperty("abningstider") ? model.GetProperty("abningstider").Value() : "")

有谁知道解决这个问题的方法或发生了什么。

0 投票
1 回答
366 浏览

umbraco - 无法保存非当前版本 - Umbraco 8

我在以编程方式保存内容时遇到问题,我单击电子邮件消息上的链接并被带到该站点,在这种情况下,CMS 已更新。但是,如果我再次单击该链接,则会收到以下错误:

无法保存非当前版本

代码如下

在 V7 中,我曾经能够执行 ApplicationContext.Current.Services.ContentService.RePublishAll();,但 V8 似乎不再具有该选项

任何帮助,将不胜感激

乔治

0 投票
1 回答
33 浏览

umbraco - 如何在文档类型中添加新属性

我想在文档类型中添加一个新属性,它是一个与外部链接和图像相结合的集合,例如 facebook 或 google 等。

我想在模板中使用它。

这是一个例子: