我的服务装饰如下
<ExceptionShielding("MyExceptionPolicyName")>
Run Code Online (Sandbox Code Playgroud)
当抛出一个错误异常时,我的策略会收到错误并登录就好了.它接受handlingInstance Id并将其与错误一起记录以供参考.我注意到的是,故障中返回的Guid"错误ID:"与传递给处理instanceId的Guid不同.
我也尝试过装饰这样的操作
<FaultContract(GetType(ValidationFault))>
Run Code Online (Sandbox Code Playgroud)
但这会产生相同的结果.
我想要做的是如何捕获"错误ID:"传递回消费者,以便我可以将其与异常一起记录.*附加信息:异常策略处理程序是一个自定义的处理异常,并将其各种属性和数据记录到特定的异常日志数据库模式中.
有谁知道怎么做到这一点?
更新: 根据@Jay Patel的评论,我将此添加到我的配置中以启用跟踪
<system.diagnostics>
<sources>
<source name="System.ServiceModel"
switchValue="Information, ActivityTracing"
propagateActivity="true">
<listeners>
<add name="traceListener"
type="System.Diagnostics.XmlWriterTraceListener"
initializeData= "c:\Temp\Traces.svclog" />
</listeners>
</source>
</sources>
</system.diagnostics>
Run Code Online (Sandbox Code Playgroud)
然后,我执行了一个请求,以获得由异常屏蔽屏蔽的故障响应.故障响应字符串的格式如下:"使用此服务时出错.请联系您的管理员以获取更多信息.错误ID:{GUID}"
然后我查看了跟踪日志,发现没有GUID或此字符串的证据.
以下是使用ExceptionShielding时关心查看示例的任何人的tracelog 的pastebin链接.
UPDATE2:
再次,根据@Jay Patel的评论,补充说明.我为maxMessageLog尝试了-1和max int值,以确保我在该日志中获得最大量的数据.
<diagnostics>
<messageLogging logEntireMessage="true" logMalformedMessages="true" logMessagesAtServiceLevel="true" logMessagesAtTransportLevel="true" maxMessagesToLog="2147483647" />
</diagnostics>
Run Code Online (Sandbox Code Playgroud)
日志没有帮助.它甚至不包括任何关于回答我的问题的内容.
为了澄清以防上面不清楚...我希望能够在消息中的"错误ID:"之后捕获GUID回到客户端,这样我就可以使用异常处理程序记录的异常来记录它.这样,客户端可以联系"管理员",因为消息显示错误ID,并且实际上能够找到某些内容.
这是启用完整跟踪的pastbin
我的应用程序使用核心数据(在Magical Record的帮助下)并使用相当多的多线程NSOperation.
当然,我非常小心,只能NSManagedObjectID在线程/操作之间传递.
现在,为了回到操作中相应的托管对象,我使用-existingObjectWithID:error::
Collection *owner = (Collection *)[localContext existingObjectWithID:self.containerId error:&error];
Run Code Online (Sandbox Code Playgroud)
但我得到的是零,并error说这是一个错误#13300 : NSManagedObjectReferentialIntegrityError.
以下是文档中有关此错误的内容:
NSManagedObjectReferentialIntegrityError
Error code to denote an attempt to fire a fault pointing to an object that does not exist.
The store is accessible, but the object corresponding to the fault cannot be found.
Run Code Online (Sandbox Code Playgroud)
在我的情况下,这不是真的:该对象存在.实际上,如果我用a迭代遍历该Collection实体的所有实例NSFetchRequest,我会在其中找到它,它NSManagedObjectID就是我传递给它的那个实体-existingObjectWithID:error:.
而且,如果我使用-objectWithID:,我会得到一个正确的对象.
所以我有些东西不见了.以下是一些其他观察/问题:
所以也许我错过了什么existingObjectWithID:error:呢?文件说:
If there is …Run Code Online (Sandbox Code Playgroud) 我是核心数据的新手,仍在搞清楚螺母和螺栓,这个错误一直困扰着我几个小时,我似乎无法找到解决方案.任何帮助是极大的赞赏.
问题是这样的
我有两个视图从服务器获取数据并更新UI.我已经用这种方式建立了流程
view1 - >从服务器发送HTTP请求 - 接收回调 - >将数据保存到Coredata - >从核心数据读取并在UI上显示(回调和保存/读取Coredata发生在ViewController中)
view2 - >从服务器发送HTTP请求 - 接收回调 - >将数据保存到Coredata - >从核心数据读取并在UI上显示(回调和保存/读取Coredata发生在ViewController中)
视图2每3秒重复此过程,因为这是一个自动刷新屏幕.
问题是每当我尝试快速切换视图1和2时,它会因上述错误而崩溃应用程序.如果我在每个视图上等待几秒钟(等待从服务器获取数据),它可以正常工作.我做错了什么,我需要修改什么?
- (void) refreshData {
[super refreshData];
[[UserDataFactory sharedSingleton] refreshLoggedInUserDataAndRespondTo:self user:self.user];
}
- (BOOL) refreshDataCallback:(QExtendedHTTPOperation*)responseOperation {
[self saveToCoreData: responseOperation.responseArray];
NSMutableArray *tmp = [[NSMutableArray alloc] initWithArray:[self readFromCoreData]];
[self setData: tmp];
[tmp release];
[self.tableView reloadData];
return YES;
}
- (void) saveToCoreData:(NSArray *) responseArray{
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"CoreView1" inManagedObjectContext:self.managedObjectContext];
[fetchRequest setEntity:entity];
[fetchRequest setReturnsObjectsAsFaults:NO];
NSError …Run Code Online (Sandbox Code Playgroud) 我在配置文件中有以下内容,我试图找到C#中的等效位,因为我有一个完全以编程方式配置的服务.我应该寻找什么类/属性/方法?
谢谢.
<behaviors>
<serviceBehaviors>
<behavior name="ServiceGatewayBehavior">
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="true"/>
</behavior>
</serviceBehaviors>
</behaviors>
Run Code Online (Sandbox Code Playgroud) 我正在阅读 Spring Cloud 和 NetFlix API。很多地方,我读到了 Fault Tolerance 和 Fault Resilience 关键词。
请解释区别。
我刚刚更新到Node 4.
当我运行Gulp时,我看到:
分段错误:11
我的包括:
var gulp = require('gulp');
var jscs = require('gulp-jscs');
var concat = require('gulp-concat');
var uglify = require('gulp-uglify');
var rename = require('gulp-rename');
var responsive = require('gulp-responsive');
var imagemin = require('gulp-imagemin');
var jpegtran = require('imagemin-jpegtran');
var rollup = require('gulp-rollup');
var webp = require('gulp-webp');
var spritesmith = require('gulp.spritesmith');
Run Code Online (Sandbox Code Playgroud)
我无法运行调试任务.详细不会吐出任何额外的东西.
思考?
我想知道是否有人知道自动将常见故障注入正在运行的.NET程序的工具或技术.好像......
所以我真的在寻找一种方法来拦截CLR中的一些特定调用,类似于AppVerifier对本机Win32代码的调用.目的是在开发人员控制之外的许多错误条件下测试应用程序,并确保处理这些条件.
我正在尝试使用Linux故障注入框架来注入页面分配错误.我正在尝试使用failcmd.shLinux内核提供的脚本tools/testing/fault-injection/.
设置变量FAILCMD_TYPE后fail_page_alloc,我正在运行以下命令:
./failcmd.sh --times=-1 --interval=1 --verbose=2 <program_to_be_run_with_fi>.
Run Code Online (Sandbox Code Playgroud)
我尝试过的所有程序运行良好,虽然我将详细设置为2,但我没有得到任何调试信息.我在Ubuntu 12.04.1上使用内核3.2.0-32.
有没有人有Linux的故障注入经验?
假设我们在Core Data模型中有两个实体:Departments和Employees.
该部门与员工有一对多的关系.
我有以下ManagedObjectContexts:
- Root:连接到持久性存储协调器
- Main:具有父Root的上下文
当我想创建一个Employee我做到以下几点:
-我有一个部门的主要方面
-我在主环境中创建一个Employee
-我分配部门到员工的部门属性
-我省主要方面
-我保存根上下文
这将在Main上下文和Root上下文中创建一个保留周期.
如果我没有子上下文(所有在Root上下文中)这样做,那么我可以通过调用refreshObject:mergeChangesEmployee 来打破保留周期.在我使用这两个上下文的情况下,我仍然可以使用该方法来打破Main上下文的循环,但是我如何打破Root上下文的循环呢?
旁注:这是一个描述我的问题的简单示例.在仪器中,我可以清楚地看到分配数量的增长.在我的应用程序中,我的上下文比一个级别更深,导致更大的问题,因为我得到了一个新的实体分配,每个上下文保留周期我正在保存.
更新15/04:NSPrivateQueueConcurrencyType vs NSMainQueueConcurrencyType
保存两个上下文后,我可以refreshObject:mergeChanges使用Department对象在Main上下文中执行.正如预期的那样,这将使Department对象重新出错,打破保留周期并在该上下文中取消分配Department和Employee实体.
下一步是打破Root上下文中存在的保留周期(保存Main上下文已将实体传播到Root上下文).我可以在这里做同样的技巧,并refreshObject:mergeChanges在Department对象的Root上下文中使用.
奇怪的是:当NSMainQueueConcurrencyType创建我的根上下文(所有分配重新故障和dealloced)这工作得很好,但与NSPrivateQueueConcurrencyType创建我的根上下文(所有分配的重新出现故障,但不工作不 dealloced ).
附注:Root上下文的所有操作都在performBlock(AndWait)调用中完成
更新15/04:第2部分
当我做另外一个(没用,因为没有改变)保存或回滚与NSPrivateQueueConcurrencyType根上下文,对象似乎被释放.我不明白为什么这与NSMainQueueConcurrencyType的行为不一样.
更新16/04:演示项目
我创建了一个演示项目:http://codegazer.com/code/CoreDataTest.zip
更新21/04:到达那里
感谢Jody Hagings的帮助!
我试图refreshObject:mergeChanges移出我的ManagedObject didSave方法.
你能解释一下我之间的区别吗:
[rootContext performBlock:^{
[rootContext save:nil];
for (NSManagedObject *mo in rootContext.registeredObjects)
[rootContext refreshObject:mo mergeChanges:NO];
}];
Run Code Online (Sandbox Code Playgroud)
和
[rootContext performBlock:^{
[rootContext save:nil];
[rootContext performBlock:^{
for (NSManagedObject *mo in rootContext.registeredObjects)
[rootContext refreshObject:mo mergeChanges:NO];
}];
}]; …Run Code Online (Sandbox Code Playgroud) 我一直有这个问题所以我开始在Swift中为iPhone和iPad创建一个新的单视图应用程序.当目标是iOS 8.1时,一切正常,但如果我设置iOS 7.1(或7),我会收到Segmentation故障.当我转到产品>存档,当我在模拟器或我的设备中运行项目时,一切都很好.我尝试使用iOS 7和8模拟器进行编译.正如我所说,问题不在代码中,因为即使使用新创建的项目,它也会以这种方式运行.
CompileSwift normal armv7 /Users/francesco/Documents/XCode Projects/Prova/Prova/ViewController.swift
cd /Users/francesco/Documents/XCode Projects/Prova
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift -frontend -c -primary-file "/Users/francesco/Documents/XCode Projects/Prova/Prova/ViewController.swift" "/Users/francesco/Documents/XCode Projects/Prova/Prova/AppDelegate.swift" -target armv7-apple-ios7.1 -target-cpu cortex-a8 -target-abi apcs-gnu -sdk /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.1.sdk -I /Users/francesco/Library/Developer/Xcode/DerivedData/Prova-argzihphsooyijfpeustrrhxmfmk/Build/Intermediates/ArchiveIntermediates/Prova/BuildProductsPath/Release-iphoneos -F /Users/francesco/Library/Developer/Xcode/DerivedData/Prova-argzihphsooyijfpeustrrhxmfmk/Build/Intermediates/ArchiveIntermediates/Prova/BuildProductsPath/Release-iphoneos -g -module-cache-path /Users/francesco/Library/Developer/Xcode/DerivedData/ModuleCache -Xcc -I/Users/francesco/Library/Developer/Xcode/DerivedData/Prova-argzihphsooyijfpeustrrhxmfmk/Build/Intermediates/ArchiveIntermediates/Prova/IntermediateBuildFilesPath/Prova.build/Release-iphoneos/Prova.build/swift-overrides.hmap -Xcc -iquote -Xcc /Users/francesco/Library/Developer/Xcode/DerivedData/Prova-argzihphsooyijfpeustrrhxmfmk/Build/Intermediates/ArchiveIntermediates/Prova/IntermediateBuildFilesPath/Prova.build/Release-iphoneos/Prova.build/Prova-generated-files.hmap -Xcc -I/Users/francesco/Library/Developer/Xcode/DerivedData/Prova-argzihphsooyijfpeustrrhxmfmk/Build/Intermediates/ArchiveIntermediates/Prova/IntermediateBuildFilesPath/Prova.build/Release-iphoneos/Prova.build/Prova-own-target-headers.hmap -Xcc -I/Users/francesco/Library/Developer/Xcode/DerivedData/Prova-argzihphsooyijfpeustrrhxmfmk/Build/Intermediates/ArchiveIntermediates/Prova/IntermediateBuildFilesPath/Prova.build/Release-iphoneos/Prova.build/Prova-all-target-headers.hmap -Xcc -iquote -Xcc /Users/francesco/Library/Developer/Xcode/DerivedData/Prova-argzihphsooyijfpeustrrhxmfmk/Build/Intermediates/ArchiveIntermediates/Prova/IntermediateBuildFilesPath/Prova.build/Release-iphoneos/Prova.build/Prova-project-headers.hmap -Xcc -I/Users/francesco/Library/Developer/Xcode/DerivedData/Prova-argzihphsooyijfpeustrrhxmfmk/Build/Intermediates/ArchiveIntermediates/Prova/BuildProductsPath/Release-iphoneos/include -Xcc -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include -Xcc -I/Users/francesco/Library/Developer/Xcode/DerivedData/Prova-argzihphsooyijfpeustrrhxmfmk/Build/Intermediates/ArchiveIntermediates/Prova/IntermediateBuildFilesPath/Prova.build/Release-iphoneos/Prova.build/DerivedSources/armv7 -Xcc -I/Users/francesco/Library/Developer/Xcode/DerivedData/Prova-argzihphsooyijfpeustrrhxmfmk/Build/Intermediates/ArchiveIntermediates/Prova/IntermediateBuildFilesPath/Prova.build/Release-iphoneos/Prova.build/DerivedSources -emit-module-doc-path /Users/francesco/Library/Developer/Xcode/DerivedData/Prova-argzihphsooyijfpeustrrhxmfmk/Build/Intermediates/ArchiveIntermediates/Prova/IntermediateBuildFilesPath/Prova.build/Release-iphoneos/Prova.build/Objects-normal/armv7/ViewController~partial.swiftdoc -O -module-name Prova -emit-module-path /Users/francesco/Library/Developer/Xcode/DerivedData/Prova-argzihphsooyijfpeustrrhxmfmk/Build/Intermediates/ArchiveIntermediates/Prova/IntermediateBuildFilesPath/Prova.build/Release-iphoneos/Prova.build/Objects-normal/armv7/ViewController~partial.swiftmodule -serialize-diagnostics-path /Users/francesco/Library/Developer/Xcode/DerivedData/Prova-argzihphsooyijfpeustrrhxmfmk/Build/Intermediates/ArchiveIntermediates/Prova/IntermediateBuildFilesPath/Prova.build/Release-iphoneos/Prova.build/Objects-normal/armv7/ViewController.dia -emit-dependencies-path /Users/francesco/Library/Developer/Xcode/DerivedData/Prova-argzihphsooyijfpeustrrhxmfmk/Build/Intermediates/ArchiveIntermediates/Prova/IntermediateBuildFilesPath/Prova.build/Release-iphoneos/Prova.build/Objects-normal/armv7/ViewController.d -o /Users/francesco/Library/Developer/Xcode/DerivedData/Prova-argzihphsooyijfpeustrrhxmfmk/Build/Intermediates/ArchiveIntermediates/Prova/IntermediateBuildFilesPath/Prova.build/Release-iphoneos/Prova.build/Objects-normal/armv7/ViewController.o
Stack dump:
0. Program arguments: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift -frontend -c -primary-file /Users/francesco/Documents/XCode …Run Code Online (Sandbox Code Playgroud)