问题标签 [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.
umbraco8 - 如何在 HttpHandler 中获取 UmbracoHelper?
在 Umbraco 7 中,您可以使用UmbracoContext.EnsureContext()
一些技巧来获取UmbracoHelper
Umbraco 上下文的外部,例如在 HttpHandler 中。在 Umbraco 8UmbracoContext.EnsureContext()
中已被删除,那么我们现在该怎么做呢?
具体来说,我想在我的 HttpHandler 中获取根节点,例如
但我不知道如何实现CreateUmbracoHelper()
.
c# - 单元测试 Umbraco 8 Composers
我对单元测试还很陌生,所以请放轻松!我正在尝试使用一个相当简单的 Umbraco 8 项目作为测试平台。我目前一直在尝试测试注册依赖项的作曲家,并且很难弄清楚如何测试它。
代码可能会说话,所以不用多说,这是我想测试的作曲家。如您所见,它只是注册了一个针对接口编码的服务:
在玩了很多之后,我在 Umbraco 源代码中找到了一些代码,这意味着我可以根据注册类型的想法获得测试通过。但是,这绝不是在ServicesComposer
课程的背景下。因此,这不会影响我的代码覆盖率和实际测试类,而不是注册某些东西的能力。无论如何,这是代码:
下面的代码显示了我目前的位置,并且可能接近测试的样子(如果目前有点混乱)。我可能在这里偏离了目标,所以任何帮助都会风靡一时!
我还尝试模拟合成,看看我是否可以验证该Register
方法已运行,但由于这是一个静态方法,我收到以下错误:
这是让我遇到该错误的代码:
最终,我失败了(可能我的目标太高了!),我不能 100% 确定要在这里测试什么。我的想法是我想测试运行IPapermoonContentTypeContainerService
后是否可解析,_serviceComposer.Compose
即它不是 null 以确保它已注册到容器中。在这一点上这可能是不可能的,我想知道composition.Register<IPapermoonContentTypeContainerService, PapermoonContentTypeContainerService>();
被调用的测试是否足够(因为实际的注册部分是第三方的,因此不被测试)。或者,我是不是找错了树,实际上根本不应该对其进行测试?
谢谢!
本
c# - 尝试使用 NPoco 在数据库中插入值时出错
我正在使用Umbraco 文档中的这个示例,当我尝试将值保存到数据库表时,我收到此错误:无法将值 NULL 插入列“Id”,表“petapoco.dbo.BlogComments”;列不允许空值。插入失败。该语句已终止。
此外,在创建表并在数据库中检查它之后,我可以看到没有为 id 字段设置主键和自动增量选项。
这就是我插入值的方式:
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,Func
1& 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, Action
1 decoratorTargetEmitter) 在 C:\projects\lightinject\src\LightInject\LightInject.cs:line 4120\r\n 在 LightInject.ServiceContainer.EmitNewInstanceUsingImplementingType(IEmitter 发射器, ConstructionInfo constructionInfo, Action1 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(Action
1 serviceEmitter) 在 C:\projects\lightinject\ src\LightInject\LightInject.cs:C:\projects\lightinject\src\LightInject\LightInject 中 LightInject.ServiceContainer.CreateInstanceDelegateIndex(Action1 emitMethod) in C:\\projects\\lightinject\\src\\LightInject\\LightInject.cs:line 4693\r\n at System.Collections.Concurrent.ConcurrentDictionary
2.GetOrAdd(TKey key, Func2 valueFactory)\r\n at LightInject.ServiceContainer.EmitLifetime(ServiceRegistration serviceRegistration, Action
1 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.ConcurrentDictionary
2.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 行" } }
有谁能够帮我?
c# - 如何将razor生成的html转换成字符串?
我使用 umbraco 创建了一个工作流,我想做的是:创建一个工作流来获取由 razor 模板 ( umbraco.forms
) 创建的 html。
这是模板的位置umbraco.forms
Views\Partials\Forms\Emails 这个模板是我想在调用这个工作流时通过电子邮件发送的。
我试过string template = html.Raw(Template);
了,但我无法访问html.Raw("");
我已经尝试过这个解决方案,但似乎record.ParseWithRazorView(filePath);
不存在
有一个工作流程可以做一些接近的事情,但似乎我无法重写或访问此代码
如果您不完全理解我假装的内容,请发表评论,我会用所有详细信息更新问题
umbraco - 如何在 Umbraco8 中归档旧节点
我们正在开发一个新闻网站,我们有大量数据,大约 100 万条新闻和 500 GB 的媒体。我们对最佳实践进行了一些研究,但是在处理这个问题时缺乏资源。
我们得出的结论是,我们必须通过取消发布旧年容器(2009、2010、...2014)来归档很少访问的旧新闻,以便在后台和前台拥有一个快速的网站,在取消发布容器后,我们注意到检查索引文件仍然很大,并且新闻节点不再通过原始 URL 可用,因为我们取消了它们的父节点。
请向我提供任何可以帮助的见解。
c# - 如何从 Umbraco 的特定文化中获取内容
我有将德语设置为默认语言的双语网站,我正在尝试从我的 SurfaceController 获取英语内容节点,如下所示:
我试图像这样改变当前的文化:
但没有成功。
umbraco - 无法保存非当前版本 - Umbraco 8
我在以编程方式保存内容时遇到问题,我单击电子邮件消息上的链接并被带到该站点,在这种情况下,CMS 已更新。但是,如果我再次单击该链接,则会收到以下错误:
无法保存非当前版本
代码如下
在 V7 中,我曾经能够执行 ApplicationContext.Current.Services.ContentService.RePublishAll();,但 V8 似乎不再具有该选项
任何帮助,将不胜感激
乔治
umbraco - 如何在文档类型中添加新属性
我想在文档类型中添加一个新属性,它是一个与外部链接和图像相结合的集合,例如 facebook 或 google 等。
我想在模板中使用它。
这是一个例子: