Sitecore包向导可用于构建包含本地Sitecore实例的数据和文件的包.
是否可以从命令行构建Sitecore包(仅限项目,不需要文件),或者在网站的上下文之外?我们的想法是使用Nant创建Sitecore数据包.我知道Hedgehog TDS,但这个问题针对的是现有的Sitecore api可以做些什么.
msbuild nant build-automation continuous-integration sitecore
在我使用的MVC3 Web应用程序中
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
}
Run Code Online (Sandbox Code Playgroud)
应用全局错误处理,如果发生未处理的异常,则向用户显示"错误"视图.
对于一个特定的视图,如果通过使用装饰方法发生未处理的异常,我还希望显示不同的错误视图 [HandleError(View = "SpecialError")]
.这很好.
然后我想添加未处理异常的全局日志记录.我创建了一个带有日志代码的自定义HandleError属性:
public class MyHandleErrorAttribute : HandleErrorAttribute
{
public override void OnException(ExceptionContext context)
{
// Write to log code
base.OnException(context);
}
}
Run Code Online (Sandbox Code Playgroud)
并更新了RegisterGlobalFilters和方法修饰以改为使用此属性名称.这通常有效,但是在使用MyHandleError(View = "SpecialError")]
OnException方法修饰的方法中发生异常时会调用两次.我原先假设用这个属性装饰方法取代了全局处理程序,但它似乎只是添加到了(这更有意义,但它不是我想要的).通过两次调用OnException,将记录两次相同的异常,这不应该发生.我不认为OnException被调用两次,因为它是一个自定义属性 - 我相信这也发生在标准的HandleError属性上,它现在只是在我创建它的记录时可见.
最终,我想记录所有未处理的异常(一次),同时保留[HandleError]提供的功能,特别是为特定方法异常设置不同的视图.这样做有干净的方法吗?
在web.config中设置的sitecore keepalive任务调用'keepalive'url配置为默认每小时运行一次:
<agent type="Sitecore.Tasks.UrlAgent" method="Run" interval="01:00:00">
<param desc="url">/sitecore/service/keepalive.aspx</param>
<LogActivity>true</LogActivity>
</agent>
Run Code Online (Sandbox Code Playgroud)
如果默认的IIS应用程序池超时为20分钟,这是否意味着keepalive功能无法在其默认配置状态下工作?即一个闲置的站点最多会调用一次此任务,可能会使站点保持活动状态20分钟,然后它将超时并卸载,直到真正的外部请求到达为止.
除非我遗漏了某些内容,否则此设置应设置为20分钟以内(或者更确切地说是20分钟减去调度程序间隔),以便按预期工作,对吧?
我正在使用[HandleError]
MVC3 应用程序中的属性处理错误。这工作正常,但要使其正常工作,我需要添加
<system.web>
<customErrors mode="On" />
Run Code Online (Sandbox Code Playgroud)
为了处理 404 错误,我将其添加到系统中。网络服务器即 IIS 配置而不是 asp.net
<httpErrors errorMode="Custom" existingResponse="Replace">
<remove statusCode="404" />
<error statusCode="404" responseMode="ExecuteURL" path="/404page" />
</httpErrors>
Run Code Online (Sandbox Code Playgroud)
这很简单并且非常适合 404。在这里添加它的原因是它似乎是一个很好的包罗万象的,没有任何自定义代码。existingResponse= "Replace"是必需的,其他模式会导致 404 不被处理。
问题是当 existingResponse="Replace" 时 CustomErrors 不再起作用。它只返回一个没有详细信息的剥离 500 错误。
这两种模式只是相互排斥吗?我知道我可以编写其他 404 解决方案,但理想情况下我希望这个简单的配置更改起作用或理解为什么它无法完成。
使用sitecore预取缓存的最佳方法是什么?鉴于一个独立的Sitecore服务器与本地SQL Server,8gb ram和2,000个内容项,我是否应该预先预先获取大量网站内容,前提是假设批量加载项目更有效?为了更清晰的场景,假设预取所有2000个项目将占用2gb,如/sitecore/admin/cache.aspx所报告的
此外,与所需大小相关的配置预取高速缓存大小是否也会影响性能,即如果设置大于所需大小3倍,与设置为1.1x所需大小相比,是否会导致性能损失?
我从命令行使用Wix 3.6 beta,而不是VS项目.我有一个Web应用程序,以热量作为目录收获.这有效.我正在使用web.config转换来管理每个目标环境web.config文件.这些是使用msbuild输出的,这可以在Visual Studio和源代码控制中保持可见.
我遇到了一个问题,部署了几个web.config文件中的一个,我手动将其包含在product.wxs中作为具有条件的组件.我期望将所有组件都包含为可部署功能,并让条件选择一个作为活动组件.例如:
<DirectoryRef Id="wwwroot">
<Component Id="setup_a" Guid="some_guid" >
<File Source="$(var.ConfigSourceDir)\setup_a\web.config" />
<Condition>ENVIRON = setup_a</Condition>
</Component>
<Component Id="setup_b" Guid="some_guid" >
<File Source="$(var.ConfigSourceDir)\setup_b\web.config" />
<Condition>ENVIRON = setup_b</Condition>
</Component>
Run Code Online (Sandbox Code Playgroud)
这没有创建任何文件重命名,移动或删除问题,但有一个非常基本的问题,即多个web.config文件被映射到同一目的地,这给我一个轻微的错误"Product.wxs(xxx):error LGHT0091 :找到重复的符号'File:web.config'.这通常意味着Id是重复的.检查以确保给定类型(文件,组件,功能)的所有标识符都是唯一的."
另一种方法是使用不同的命名.config文件并将其重命名/移动为web.config,如下所示:
<DirectoryRef Id="wwwroot">
<Component Id="setup_a" Guid="some_guid" >
<File Id="setup_a.config" Source="$(var.ConfigSourceDir)\setup_a.config" />
<CopyFile Id="moveit" SourceDirectory="wwwroot" SourceName="setup_a.config" DestinationDirectory="wwwroot" DestinationName="web.config" />
</Component>
Run Code Online (Sandbox Code Playgroud)
这不会引发错误,但是CopyFile命令根本不执行任何操作.我只是在wwwroot文件夹中获取setup_a.config.
如果我将CopyFile嵌套在File中,则复制操作将起作用:
<DirectoryRef Id="wwwroot">
<Component Id="setup_a" Guid="some_guid" >
<File Id="setup_a.config" Source="$(var.ConfigSourceDir)\setup_a.config" >
<CopyFile Id="moveit" DestinationName="web.config"/>
</File>
</Component>
Run Code Online (Sandbox Code Playgroud)
...但嵌套的CopyFile意味着我无法添加(不允许)Delete ="yes"属性来创建"移动"操作.相反,我留下了wwwroot文件夹中的setup_a.config和web.config.或者,如果我在同一个组件元素中添加一个单独的removefile,它也什么都不做:
<RemoveFile Id="removefile" On="install" Directory="wwwroot" Name="setup_a.config"/>
</Component>
Run Code Online (Sandbox Code Playgroud)
所以,我希望有一个工作示例,说明如何处理条件部署中的多个web.config文件,这些文件不会留下文件.web.config的目标文件名由框架修复,无法更改.使用配置转换也可以在wix之外预先生成不同的配置,这也无法更改,但生成的文件名可以是任何内容. …
我有一个带运动按钮和 PIR 运动传感器的门鸟视频门铃。摄像机还可以提供连续馈送,我通过 Synology Surveillance Station 作为通用 ONVIF 摄像机进行录制。此 ONVIF 摄像机未将运动传感器或铃铛按钮定义为数字输入,这是在 Surveillance Station 中与它们交互的正常方式。但是,DoorBird 可以触发 GET 请求(至少在按下按钮时,可能用于 PIR 传感器),因此我希望使用此 GET 请求功能而不是正确的 ONVIF 事件支持。
使用可从 WEB UI 获得的 Surveillance Station 'Action Rules',我希望将其与动作事件联系起来。我使用“外部设备”(网络请求调用)添加了一个新事件。
“外部事件”将生成这样的链接。
http://192.168.1.5:5000/webapi/entry.cgi?api=SYNO.SurveillanceStation.ExternalEvent&method= "触发器"&version=1&eventId=1&eventName="这是外部事件1"&account="doorbird"&password="changeme"
这有效,我得到了一个“成功”的 json 响应和一个它注册的事件。问题是我想注册一个正常出现在相机时间轴中的相机运动事件。
这里的问题是无法将此事件用作 Surveillance Station 内的“运动”检测事件。您只能打开和关闭家庭模式或调用音频输出。我希望触发运动事件,以便在我连续录制相机时显示在相机时间线中。
获取 Surveillance Station 的当前版本。
http://192.168.1.5:5000/webapi/entry.cgi?api=SYNO.SurveillanceStation.Info&method=GetInfo&version=1&account= "doorbird"&password="changeme"
获取当前相机信息。请注意,'basic=true' 发送附加的基本数据,它不是'只是'基本数据。例如,除非basic=true,否则不会发送相机 ID 。
http://192.168.1.5:5000/webapi/entry.cgi?privCamType=1&version= “8” &基本=真streamInfo =真API = “SYNO.SurveillanceStation.Camera” &camStm = 1&方法= “列表” &帐户= “doorbird” &密码= “改变我自己”
所以我有相机 ID,但此时我被卡住了。我不确定是否可以针对相机馈送触发等效的运动事件。
VistorIndentification()
在Sitecore 8 MVC布局/视图中仍然需要以下调用吗?
@using Sitecore.Mvc.Analytics.Extensions
@Html.Sitecore().VisitorIdentification()
Run Code Online (Sandbox Code Playgroud)
即使没有它,在Tracker.Current.Contact.System.VisitCount和“体验配置文件”信息中也似乎可以跟踪页面访问。
什么功能或跟踪能力取决于此?
sitecore ×4
asp.net-mvc ×2
asp.net ×1
caching ×1
ip-camera ×1
load-testing ×1
msbuild ×1
nant ×1
nas ×1
onvif ×1
performance ×1
sitecore-mvc ×1
sitecore8 ×1
surveillance ×1
synology ×1
web-config ×1
wix ×1
wix3.5 ×1
wix3.6 ×1