我刚刚开始尝试使用Umbraco,所以我希望这听起来并不愚蠢.
我正在尝试将默认网页设置为我的网站,但我没有运气.我最近安装了umbraco v 4.7.1.1,以及使用安装向导时可以选择的博客入门套件.
在我的"内容视图"中,我有以下结构:
内容(文件夹)
当我查看MyTestBlog的Properties选项卡时,Template属性设置为"Blog Post".当我访问www.mytestsite.com时,MyTestBlog上的内容会显示在网站的默认网页上.
我将Index页面的Template属性设置为"Textpage".我右键单击了"个人站点"文件夹并选择了"排序".在"排序"弹出窗口中,我将"索引"拖动到列表顶部,使其排序顺序为零(0).
从我读过的内容来看,作为第一项的设置将是Umbraco中的默认网页,但对我来说似乎并非如此.无论我尝试什么,我都无法将Index作为网站的默认网页.
我已经检查过以确保所有网页都已发布.有什么我想念或不做的事吗?
谢谢!
我继承了一个基于umbraco构建的代码库.它使用剃刀脚本来渲染视图.
每当出现错误时,我会在输出中得到类似的内容:
Error loading Razor Script Product.cshtml
String reference not set to an instance of a String. Parameter name: s
Run Code Online (Sandbox Code Playgroud)
正如您所看到的那样,在帮助识别错误方面毫无用处.
我不知道这是不是umbraco或razor问题(我第一次使用它)是否有办法可以打开正确的堆栈跟踪?
这是我第一次使用Umbraco,我使用错误的命名格式创建了文档类型/页面,现在这已经发生在我的页面URL中/about-page/.我将如何更改它们,/about因为我已经搜索了后端管理面板,似乎无法改变它们的link to document值.
有没有人能够使用umbracoUrlAlias或umbracoUrlName提供一个基于代码的简单示例,我最好如何在Razor中更改它.
谢谢
我有以下重写规则,在IIS7上运行的常规asp.net项目上完全正常.
<rule name="HTTP to HTTPS redirect" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" pattern="off" ignoreCase="true" />
</conditions>
<action type="Redirect" redirectType="Found" url="https://{HTTP_HOST}/{R:1}" />
</rule>
Run Code Online (Sandbox Code Playgroud)
因此,在http访问时,我们的一个页面://{domain}/aboutus将重定向到https://{domain}/aboutus.现在在Umbraco站点中放置相同的重写规则会导致无限循环.我们的Umbraco网站没有任何其他重写规则.这让我觉得Umbraco有点劫持从http到https的路由并导致无限循环.我们缺少什么?
Umbraco HttpContext.Current.Cache和ApplicationContext.ApplicationCache.RuntimeCacheUmbraco有什么不同?哪一个在效率方面更好用?
我用过Umbraco 7.4.x我的项目和ASP.NET MVC.在我的项目中,我有一个可以包含这么多项目的产品列表,因此我想使用缓存.具体来说,我想将我的数据放在缓存中,当一个新项添加到Products节点时,缓存会自动更新.我该如何实现它?
修改:请给我一个实现,详细说明我的代码.
Products.cshtml:
@using Jahan.Handicraft.Model.UModel.URenderModel
@using Jahan.Handicraft.Model.UModel
@inherits Umbraco.Web.Mvc.UmbracoViewPage<BaseRenderModel<Jahan.Handicraft.Model.UModel.Products>>
@foreach (var prod in Model.Model.ProductList.Skip((page - 1) * pageSize).Take(pageSize))
{
@*<div>LOAD DATA</div>*@
}
Run Code Online (Sandbox Code Playgroud)
ProductsController.cs:
namespace Jahan.Handicraft.Web.Mvc.UmbracoCms.App.Controllers
{
public class ProductsController : BaseRenderMvcController<Products>
{
// GET: Products
public override ActionResult Index(RenderModel model)
{
return base.Index(Instance);
}
}
}
Run Code Online (Sandbox Code Playgroud)
BaseRenderMvcController.cs:
public class BaseRenderMvcController<TBaseEntity> : RenderMvcController where TBaseEntity : BaseEntity
{
private BaseRenderModel<TBaseEntity> _instance;
public BaseRenderModel<TBaseEntity> Instance
{
get
{
if …Run Code Online (Sandbox Code Playgroud) 我一直试图在IIS 7下的Windows 7机器上安装Umbraco.我能够使用Web平台安装程序通过WebMatrix启动并运行,但我想在IIS中运行它.
无论我是通过设置新的网站复制二进制文件来手动执行安装,还是让我让Web平台安装程序执行此操作,我总是会看到一个缺少所有CSS,图像,js等的安装页面.
当我尝试直接点击这些资源时,我总是被重定向回安装页面.
我告诉平台安装程序创建一个全新的网站.没有指定虚拟目录/应用程序名称.我已经按照我能找到的所有在线指示进行了跟踪.
日志显示401未经授权的错误:
2012-05-11 02:42:22 127.0.0.1 GET /umbraco_client/installer/css/all.css - 80 - 127.0.0.1 Mozilla/5.0 +(兼容; + MSIE + 9.0; + Windows + NT + 6.1; + WOW64; + Trident/5.0)401 3 5 10 2012-05-11 02:42:22 127.0.0.1 GET /umbraco_client/installer/css/reset.css - 80 - 127.0.0.1 Mozilla/5.0 +(兼容; + MSIE +9.0; + Windows + NT + 6.1; + WOW64; + Trident/5.0)401 3 5 10 2012-05-11 02:42:22 127.0.0.1 GET /umbraco_client/installer/css/form.css - 80 - 127.0 .0.1 Mozilla/5.0 +(兼容; + MSIE + 9.0; + Windows …
然后有许多代表Umbraco文档的类:
1) umbraco.cms.businesslogic.Content
2) umbraco.cms.businesslogic.web.Document
3) umbraco.MacroEngines.DynamicNode
4) umbraco.presentation.nodeFactory.Node
Run Code Online (Sandbox Code Playgroud)
还有其他人吗?
你能解释一下他们做了什么,以及何时使用它们?
umbraco.MacroEngines.DynamicNode和umbraco.presentation.nodeFactory.Node看起来是一样的.也许最好使用Node类,因为它更快?
我有一个理论:
umbraco.cms.businesslogic.Content和umbraco.cms.businesslogic.web.Document是cmsContent和cmsDocument数据库表的表示.
umbraco.presentation.nodeFactory.Node和umbraco.MacroEngines.DynamicNode表示在XML文件中缓存的节点,用于网站.第一个是简单的Node,第二个是添加了动态属性的同一个Node,一个是nodeType中定义的属性.所以,我认为Node比DynamicNode更快
有人可以证实吗?
由于与主页的链接不正确,我的面包屑被破坏了.请告诉我,如何手动更改"链接到文档"参数.我使用umbraco 4.7.2我只需要在主页上使用域名,并在内部页面上使用完整的绝对路径.谢谢.

我在VS 2010中使用Umbraco 6创建了一个MVC4应用程序,我创建了一个Web部署项目,我的Team City CI服务器使用该项目将我的网站部署到CI环境进行测试.
在CI服务器上第一次加载主页(或任何页面)时,它加载完全正常.但是,加载页面的行为会在我的CI服务器上创建一个App_Code文件夹,然后我收到消息"由于应用程序已预编译,因此不允许使用目录'/ App_Code /'".删除App_Code文件夹意味着它再次适用于一个页面加载,并再次创建该文件夹.
删除PrecompiledApp.config文件会导致我的站点无法加载YSOD,并声明"对象引用未设置为对象的实例".在堆栈跟踪中的以下点"Umbraco.Web.UmbracoModule.BeginRequest(HttpContextBase httpContext)+25"
要清楚,我的项目中没有App_Code文件夹,我不想要或不需要.我只想让它在页面加载时自动停止创建一个!我在VS中使用了Umbraco并且以相同的方式多次部署,只是没有使用Umbraco 6和MVC项目.
任何想法为什么App_Code被自动创建以及我可以做些什么来阻止它?
非常感谢
理查德
在Umbraco v6中,可以使用以下命令获取dictionaryitem:
umbraco.library.GetDictionaryItem("EmailSubject");
Run Code Online (Sandbox Code Playgroud)
这将检索"EmailSubject"的正确值,具体取决于用户访问umbraco网站的文化.
现在我正在编写一个简单的电子邮件类库,我不关心System.Threading.Thread.CurrentThread.CurrentCulture,我不想在获取值之前始终设置CurrentCulture.它有效,但我不喜欢这种方法.我正在写一个简单的邮件库.对于每个邮件收件人,我认为设置这样的文化并不是很有效.
我找到的解决方案(在线搜索,我遗失了来源抱歉)是以下示例:
//2 = the 2nd language installed under Settings > Languages, which is German in my case
var sometext = new umbraco.cms.businesslogic.Dictionary.DictionaryItem("SomeText").Value(2);
Run Code Online (Sandbox Code Playgroud)
我创建了一些帮助方法,使其更容易:
private string GetDictionaryText(string dictionaryItem, string language)
{
//try to retrieve from the cache
string dictionaryText = (string)HttpContext.Current.Cache.Get(dictionaryItem + language);
if (dictionaryText == null)
{
dictionaryText = new umbraco.cms.businesslogic.Dictionary.DictionaryItem(dictionaryItem).Value(GetLanguageId(language));
//add to cache
HttpContext.Current.Cache.Insert(dictionaryItem + language, dictionaryText, null, DateTime.Now.AddMinutes(10), TimeSpan.Zero);
}
return dictionaryText;
}
private int GetLanguageId(string language)
{
int languageId = 1; //1 …Run Code Online (Sandbox Code Playgroud) umbraco ×10
c# ×2
performance ×2
umbraco7 ×2
app-code ×1
asp.net-mvc ×1
caching ×1
iis ×1
iis-7 ×1
razor ×1
rewrite ×1
umbraco-blog ×1