我甚至不确定是否有一个实用程序可以允许这个,但它似乎是一个常见的需求?
是否有一个程序/库/组件将生成模拟的.NET对象(存储库),这些对象将产生一些模拟数据作为某些数据库调用.
请允许我详细说明:如果我正在测试存储库(不是单元测试,只是在控制台窗口中测试),当我将选择条件传递给我的存储库时,它会返回一个对象列表.我希望/喜欢/能够捕获对象列表并将其转换为静态设置C#代码,这些代码将用作单元测试的设置.我的物体很安静,需要很长时间才能正确设置.
这可能吗?我的团队正在使用Moq和Ninject
我正在与之合作的公司正在寻求为他们的电子商务商店实施灵活且可扩展的促销/折扣引擎.促销和折扣的要求变化非常频繁,企业无法预测他们将在未来3个月内推出什么样的想法和促销活动,更不用说3年了.
我想确保他们构建一个灵活的促销评估引擎,可以将购物车中的商品,用户个人资料信息,以及根据日期时间,他们输入的促销代码,他们的个人资料,应用各种规则,他们购物车中的物品,他们来自的http背景等.
我们可以使用任何第三方开源或商业图书馆吗?我们只需要一个评估引擎,而不是一个持久性引擎,因为电子商务网站在Windows Azure的云端运行,而存储在Azure存储中,很少有库兼容.因此,任何基于SQL的解决方案都不起作用.
我很感激有关如何使用Ninject实现以下内容的建议:
我有一个多线程的应用程序.它同时运行大约20个非常独立的线程.在应用程序启动时,我通过使用InThreadScope()通过Ninject将接口绑定到对象,并且一切正常.每个线程接收特定于其线程的对象(每个对象的构造函数实例化许多特定于线程的标志).
每个线程所做的大部分工作都在等待数据存储完成进程.因此,为了进一步优化线程,我们在主要的20个线程中实现了Parallel.ForEach逻辑.我想让Paralell.ForEach生成的线程获得与其父线程相同的绑定.但是,我不能简单地将接口重新绑定到Parallel.ForEach中的适当对象,我根本不知道绑定对象是什么 - 在Paralell.ForEach中我只能使用接口.
在Paralell.ForEach启动并在循环内一般地重新绑定它们之前,在运行时从内核检索绑定的正确方法是什么?
编辑:尝试包含详细的逻辑/伪代码:
每个线程一旦启动就会执行以下操作:
Kernel.Bind<ILoggingContext>().To<Application1LoggingContext>().InThreadScope();
Run Code Online (Sandbox Code Playgroud)
但是,当Parallel.ForEach()从各个线程内部启动时,我不再能够访问Application1LoggingContext对象,并且无法将ILoggingContext重新绑定到它.这是因为Parallel.ForEach()从基类运行,并且不知道它需要绑定到哪个Application LoggingContext.这是在每个应用程序中完成的,在启动大20个线程时.
我想修改一个基类,一个旋转Parallel.ForEach()并确保在每个由Parallel.ForEach线程新创建的内部,ILotionContext仍然绑定到Application1LoggingContext - 一般来说,这样我就可以执行以下操作:
var ctx = Kernel.Get<ILoggingContext>();
Run Code Online (Sandbox Code Playgroud) 我正在尝试通过API将诊断扩展安装到现有的Azure云服务中.Cloud Service已分配保留的IP.在使用ChangeConfigurationBySlot执行此操作时,我收到" 在部署更新或升级期间无法添加,删除或更改保留的IP ".有谁知道让这个工作的诀窍?这是API中的错过还是我做错了什么?
这是相关的代码段:
var dep = client.Deployments.GetBySlot(resource.ServiceName, DeploymentSlot.Production);
var serviceConfig = XElement.Parse(dep.Configuration, LoadOptions.SetBaseUri);
var config = new DeploymentChangeConfigurationParameters(serviceConfig.ToString())
{
ExtendedProperties = dep.ExtendedProperties,
Mode = DeploymentChangeConfigurationMode.Auto,
TreatWarningsAsError = false,
Configuration = serviceConfig.ToString(),
ExtensionConfiguration = new ExtensionConfiguration
{
AllRoles = new List<ExtensionConfiguration.Extension>(),
NamedRoles = extensionConfig
}
};
var result = client.Deployments.ChangeConfigurationBySlot(resource.ServiceName, DeploymentSlot.Production, config);
Run Code Online (Sandbox Code Playgroud)
以下是云服务配置的相关部分
<ServiceConfiguration xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" serviceName="IS.Admin.Azure" osFamily="4" osVersion="*" schemaVersion="2014-06.2.4" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceConfiguration">
<Role name="IS.Admin">
…
</Role>
<NetworkConfiguration>
<VirtualNetworkSite name="is-prod" />
<AddressAssignments>
<InstanceAddress roleName="IS.Admin">
<Subnets>
<Subnet name="Subnet-1" …Run Code Online (Sandbox Code Playgroud) azure azure-cloud-services azure-management azure-management-api
我们有一个包含 2 个项目的 .NET 解决方案:
我们正在尝试向基于 OWIN 的 API 项目中的一些 API 控制器公开一个公共文档我们想为 API 项目中的控制器展示来自 Portal 项目的 Swagger UI
到目前为止,所有的尝试都没有成功。将 Swagger UI 添加到 Portal 项目时,它只想显示有关 Portal 项目中控制器的文档,而不是来自 API 项目的文档。
将 Swagger UI 添加到 API 项目(不是首选解决方案)时,它根本不起作用,可能是因为自定义控制器选择器
但是,我想我遗漏了一些明显的东西,因为这感觉像是我们遗漏的一个非常基本的配置设置
我正在尝试开发一个C#程序,它将获得可用的Windows更新列表,并查找知识库文章以检索每个更新的标题.(否则,它们看起来都像神秘的"Windows Server更新(KBxxxxx)")
我尝试检索每篇知识库文章的HTML,但标题不存在于HTML中(我猜他们正在使用angular来构建页面)
下面是一个示例:https://support.microsoft.com/en-us/kb/3102429 当我查看源代码时,浏览器中显示的文章标题不会出现在HTML中的任何位置
有没有办法做到这一点?
我想将跟踪信息保存到.svclog文件中,但仅用于失败的请求.这可能吗?如果是这样,有多精确?
我有一个每分钟被调用数百次的WCF服务.在极少数情况下,客户端将获得在WCF内部运行的代码边界之外发生的错误500(通常是安全问题).我想知道为什么这些错误正在发生以及导致它们的原因.
我还想使用跟踪查看器工具来检查.svclog文件.
据我所知,我有两个选择:1)通过system.webServer\tracing设置记录失败的请求来检测仪器FERB.不幸的是,我真的不喜欢IE跟踪查看器的界面,也没有从跟踪日志中获取足够的信息来找出我的代码之外的错误发生的原因.
2)在system.diagnostics\trace部分下打开全局跟踪.本节将生成出色的跟踪日志,其中包含我可能想要的所有内容.但是,我找不到只捕获失败请求信息的方法.此部分捕获所有请求的跟踪信息.我的跟踪日志快速填满!
我的错误500是间歇性和罕见的.最终,我希望始终将我的.svclog跟踪打开,但只有在发生失败请求时才启动它.
如果可能的话请提出建议?
谢谢!
编辑:
格雷厄姆,我遵循了你的建议,我没有看到我期望的日志.以下是web.config中的相关部分:
<system.diagnostics>
<trace>
<listeners>
<add type="Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener, Microsoft.WindowsAzure.Diagnostics, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" name="AzureDiagnostics">
<filter type="" />
</add>
</listeners>
</trace>
<sources>
<source name="System.ServiceModel" switchValue="Error">
<listeners>
<add name="wcfTracing"
type="System.Diagnostics.XmlWriterTraceListener"
initializeData="Traces1.svclog"/>
<add name="log4netTracing"
type="AzureWatch.Model.Service.Log4netTraceListener,AzureWatch.Model.Service"/>
</listeners>
</source>
<source name="System.ServiceModel.MessageLogging" switchValue="Error">
<listeners>
<add name="wcfTracing"
type="System.Diagnostics.XmlWriterTraceListener"
initializeData="Traces2.svclog"/>
<!--<add name="log4netTracing"
type="AzureWatch.Model.Service.Log4netTraceListener,AzureWatch.Model.Service"/>-->
</listeners>
</source>
</sources>
</system.diagnostics>
<!-- ... -->
<diagnostics wmiProviderEnabled="true">
<messageLogging
logEntireMessage="true"
logMalformedMessages="true"
logMessagesAtServiceLevel="true"
logMessagesAtTransportLevel="true"
maxSizeOfMessageToLog="1000000"
maxMessagesToLog="-1" />
</diagnostics>
Run Code Online (Sandbox Code Playgroud)
这是WCF的客户端错误:
<Exception>
<Type>System.Net.Sockets.SocketException</Type>
<Message>An existing connection was forcibly closed by the …Run Code Online (Sandbox Code Playgroud) 我正在寻找为系统中的某些重要函数调用发布自定义性能计数器.我想在生产环境中持续监控这些性能计数器.
有没有办法让我用自定义属性标记某些函数,该属性可以测量执行给定函数所花费的时间?我想避免注入自定义代码,从而用监控代码污染与业务相关的功能.
属性中的代码如何跟踪函数执行所花费的时间?
请不要建议使用Profiler.我不打算调试或基准性能.但只是想在全天候生产中跟踪它.
我需要将HttpRequestMessage中的某些值(主要是围绕身份)注入我的一些对象中.
据我了解,不建议在Web Api框架中使用HttpSession.Current.在Autofac中绑定依赖项期间,如何访问HttpRequestMessage以获取用户身份和其他属性(如用户的IP地址,UserAgent等)?
一个大型电子商务网站正在寻求将其会话缓存从共享缓存切换到专用缓存.
它通常在中型服务器上运行(5-6)...在繁忙时段,它在20台中型服务器上运行.在非常繁忙的时期,每秒向网站发出2000多个请求并非没有道理
共处一地的缓存在这里是否足够好,或者必须缓存在专用工作者角色中?
此外,是否必须为会话数据启用高可用性?该站点依赖于会话数据以获得良好的用户体验.但缓存持久存储在Azure blob存储中,所以我不确定我是否完全获得了高可用性选项
我们有一个项目正在利用一组基于 Nuget 的 Azure 库。其中之一已发布,对 Newtonsoft.Json 具有特定的 MIN 和 MAX 依赖性(最大版本为 7)
这是一个令人头痛的问题,因为其他库依赖于 8+ 版本的 Netwon,而这个特定的 Azure 库可以与任何现代 Json 包配合使用。
在 VS2013 中,我们强制通过 nuget 安装程序使用较新版本的 Json 包安装此 Azure 库,随后,Nuget 在安装/更新其他库时从未给我们带来任何问题。
但是,升级到 VS2017 后,我们无法更新任何包(或者至少是依赖于 Json 的包),并且出现以下错误。
无法解决依赖关系。“Newtonsoft.Json 8.0.3”与“Microsoft.Azure.Insights 0.15.0-预览约束:Newtonsoft.Json (>= 6.0.8 && < 7.0.0)”不兼容
我们如何让 Nuget 忽略特定 Azure 库的不重要的 MAX 版本依赖性?
c# ×3
azure ×2
.net ×1
aop ×1
autofac ×1
interception ×1
mocking ×1
moq ×1
mstest ×1
ninject ×1
nuget ×1
rule-engine ×1
swagger ×1
swagger-ui ×1
swashbuckle ×1
trace ×1
unit-testing ×1
wcf ×1