我们遇到了一些奇怪的性能问题,我希望有人能够为我们指明正确的方向。我们的场景是一个ASP.NET MVC C#使用EF4 POCOin IIS 7(高度规范的服务器,专用于此应用程序)的网站。
显然它在 application_startup 上很慢,这是可以预料的,但是一旦加载,您就可以导航该站点,一切都很好,而且页面加载速度快 0.5 毫秒(我们正在使用Mini-Profiler)。现在,如果您停止使用该网站 5 - 10 分钟(我们将应用程序池回收设置为 2 小时,并且我们正在记录,所以我们知道它没有被回收)那么第一页加载速度非常慢,10 - 15 秒,但随后您可以毫无问题地再次导航(0.5 毫秒)。
这并不是SQL queries很慢,因为所有查询在第一页命中后似乎都可以正常工作,即使它们尚未运行,因此也不会在任何地方缓存。
我们已经做了大量的测试,我无法弄清楚这一点。到目前为止,我尝试过的主要事情是预先生成 EF 视图,但这并没有帮助。
看起来在Sql Server Profiler5 分钟后给予或花费 30 秒后,在 Sql Server Profiler 中没有活动并且没有站点交互,应用程序会出现几个“审核注销”条目,一旦发生这种情况,它似乎需要 10 - 15秒刷新应用程序。是否有空闲超时Sql Server?
我们有一个使用Autofac的Windows服务,当我们尝试加载引用的程序集时,并不是所有程序都列在某些包含我们在应用程序的任何地方都没有使用但我们需要包含接口实现的对象.以下方法加载程序集:
private IEnumerable<Assembly> GetReferencedAssemblies(Assembly assembly)
{
var assemblyNames = assembly.GetReferencedAssemblies();
List<Assembly> assemblies = new List<Assembly>();
assemblies.Add(assembly);
foreach (var item in assemblyNames)
{
var loadedAssembly = System.Reflection.Assembly.Load(item.FullName);
assemblies.Add(loadedAssembly);
}
return assemblies;
}
Run Code Online (Sandbox Code Playgroud)
如果我们对程序集中包含的对象进行虚拟引用,那么它会加载程序集,并且类型是由autofac构建的,如果我们删除虚拟对象,则不再包含程序集.
有没有办法包括所有引用的程序集,无论你是否直接在那里使用一个对象(记住我们仍然需要它,因为接口实现在那里).
这适用于ASP.NET,因为它只加载bin中的所有DLL.
我刚刚设置了TeamCity来自动化我们的构建,我们当前的解决方案同时具有开发和主分支.我想要实现的是让开发分支构建并发布到我们的ProGet安装上的开发NuGet feed,然后将主分支发布到ProGet服务器上的Main NuGet feed.
我们正在使用章鱼部署来部署软件包,在TeamCity中我们安装了章鱼部署插件,如果我勾选框来运行OctoPack,它会构建软件包并在构建完成时显示为工件.如果我尝试在TeamCity中使用NuGet Pack构建步骤,我会在其中一个项目中收到以下错误:
[08:33:49] : [pack] Attempting to build package from 'xxx.csproj'.
[08:33:50]W: [pack] Unable to find 'xxx.exe'. Make sure the project has been built.
Run Code Online (Sandbox Code Playgroud)
该项目已经建成并且与OctoPack一起使用,那么为什么它不能与NuGet Pack一起使用?我们正在构建五个项目,前四个项目运行正常,一个是控制台应用程序,一个是mvc网站,两个是类库.不起作用的是Windows服务.
这里的最终目标是将这些包发布到ProGet上的私有Feed.我不介意使用OctoPack,但在我脑海中想要从TeamCity中删除该依赖,但我可以忍受它.但是,当我尝试使用NuGet Publish运行器时,如何选择发布已创建的任何NuGet工件?
我一直在谷歌搜索疯狂,我找不到任何有用的链接,描述你应该输入什么,我真的很感激任何有用的评论/答案.
我们正在使用TeamCity的8.15版.
我们有一个主文档,其中包含页眉和页脚,没有其他内容(用图像格式化)。我们有数百个带有正文内容但没有页眉和页脚的 Word 文档,我们希望在填充它们并从主页眉和页脚 docx 添加页眉和页脚时能够处理这些文档。
我在这里查看了 MSDN 文档:https://msdn.microsoft.com/en-us/library/cc546917.aspx但它似乎不起作用,当我打开目标文档时,格式错误并且图像缺失。
有没有一种方法可以将页眉和页脚从一个文档精确复制到另一个文档?
我们已开始使用 Azure 媒体服务 (AMS) 来编码、加密和托管我们的视频 (MP4),效果良好。然而,除了视频之外,我们还有 MP3 音频文件。由于我们已经在使用 AMS,因此将它们放在这里也是有意义的,但我们遇到了问题。
当我们尝试从门户进行编码时,我们收到一条错误,要求我们稍后重试,当我们从 Azure 媒体服务资源管理器 (AMSE) 进行编码时,它会完成编码,但不会从 Azure 媒体播放器播放,并显示错误:
使用 AMS 编码和播放音频的最佳方式是什么,我们甚至尝试使用 mp4 从 AMSE 进行编码,添加本文中的 InsertBlackIfNoVideo https://learn.microsoft.com/en-gb/azure/media-services/previous/media- services-advanced-encoding-with-mes#silent_audio没有运气。
对于音频来说,仅使用带有音频标记的 blob 存储是否最好?
更新:流媒体在 blob 存储中工作正常,但我现在尝试使用 AMSE 和多个预设进行编码,包括:
自适应流媒体内容 自适应多比特率 MP4 AAC 音频 AAC 优质音频
所有结果都会导致上面显示的相同错误。
当尝试从门户进行编码时,我收到错误:
我在这里提出一个问题:为多个订阅者提升域事件,答案让我得到以下模式,我可以像这样拥有一个IEventPublisher:
public interface IEventPublisher<T>
{
void Publish(T data);
}
Run Code Online (Sandbox Code Playgroud)
和像这样的IEventSubscriber:
public interface IEventSubscriber<T>
{
void Handle(T data);
}
Run Code Online (Sandbox Code Playgroud)
这个问题是我需要将每个发布者的实例传递给构造函数,如下所示:
public Service(IEventPublisher<ThingyChangedEvent> publisherThingyChanged)
{
// Set publisher to local variable
}
// then call this in a method
_publisherThingyChanged.Publish(new ThingyChangedEvent { ThingyId = model.Id});
Run Code Online (Sandbox Code Playgroud)
理想情况下,我希望能够拥有一个包含任何IEventPublishers的通用发布者,所以我可以调用类似的东西:
_genericPublisher.Publish(new ThingyChangedEvent { ThingyId = model.Id});
Run Code Online (Sandbox Code Playgroud)
我无法弄清楚如何做到这一点,因为我无法传递IEventPublisher的集合而没有像在ThingyChangedEvent中那样定义T,而我想要的是根据传递给通用发布者的类型来确定发布者.
任何建议非常感谢.
编辑:
好的,使用下面的答案和来自这里的一些信息:http://www.udidahan.com/2009/06/14/domain-events-salvation/我想出了以下内容,但它并不完全存在:
public interface IEventManager
{
void Publish<T>(T args) where T : IEvent;
}
Run Code Online (Sandbox Code Playgroud)
public class EventManager:IEventManager {Autofac.ILifetimeScope _container;
public EventManager(Autofac.ILifetimeScope container) …Run Code Online (Sandbox Code Playgroud) 据我所知,Visual Studio Team Services目前没有可用的报告,但是查看源控件历史记录,它显示了变更集历史记录.可以在此处添加其他列,例如更改次数等,以便我们可以尝试使用它来了解源控件的更改历史记录吗?
更好的解决方案是从visual studio Team Services获得真实的报告.
我们正在尝试将GCM API密钥添加到azure通知中心,我们收到以下错误:
子码= 40000.无法使用GCM验证凭据.错误是远程服务器返回错误:(401)未经授权... TrackingId:410c0e33-0c38-1823-8a62-2519627c76a2_M1_G19,TimeStamp:9/19/2014 10:08:32 AM
我们已经设置了GCM API密钥以允许任何IP地址,我们也尝试从下面的代码注册,但具有相同的错误:
NamespaceManager mgr = NamespaceManager.CreateFromConnectionString(conn);
var hub = mgr.GetNotificationHub("<hubname>");
hub.GcmCredential = new GcmCredential("<apikey>");
mgr.UpdateNotificationHub(hub);
Run Code Online (Sandbox Code Playgroud)
我们错过了一些非常明显的东西吗?
我们正在尝试向CKeditor添加一个自定义下拉列表,它将包含我们将要查找和替换的预设值列表,对于我的生活,我找不到一个简单的方法来执行此操作.看看TinyMCE很容易:
http://www.tinymce.com/tryit/menubutton.php
对于CKEditor是否有这样的简单解决方案,我们宁愿不必为了这个功能而将CKeditor交换为TinyMCE.我发现了一个名为PlaceHolder的插件,但这并不是我们想做的事情,说实话,我希望在没有插件的情况下做到这一点,只需按照TinyMCE的方式配置初始化.
非常感谢任何见解.
我们有一个要求,取决于静态/全局设置,根据客户需要为路径加载不同的组件.原因是他们希望应用程序的一部分具有稍微不同的功能,因此我们将为每个应用程序编写一个组件来满足他们的场景.有没有办法动态地/在运行时为路径选择组件并保持相同的路由/ URL.以下是我们希望实现的简化示例:
COMPONENT1:
@Component({
selector: 'customeronecomponent',
templateUrl: './customeronecomponent.component.html'
})
export class CustomerOneComponent implements OnInit {
}
Run Code Online (Sandbox Code Playgroud)
COMPONENT2:
@Component({
selector: 'customertwocomponent',
templateUrl: './customertwocomponent.component.html'
})
export class CustomerTwoComponent implements OnInit {
}
Run Code Online (Sandbox Code Playgroud)
路线:
{ path: 'home', component: CustomerComponentProvider },
Run Code Online (Sandbox Code Playgroud)
在此实例中,CustomerComponentProvider将在内部检查设置,并返回CustomerOneComponent或CustomerTwoComponent.
在angular2/4中,这是最好的方法,或者更好的是有一个组件并在该组件上加载正确的组件,我看到的缺点是我们需要三个组件而不是两个组件.
我们尝试使用 DependencyContext.Default.RuntimeLibraries 来获取所有项目程序集并将我们想要的类型加载到 ServiceCollection 中。此代码在 asp.net core Web 应用程序上运行良好,但在本地启动我们的 Azure Function 项目之一时,我们收到以下错误:
System.IO.FileNotFoundException:“无法加载文件或程序集“Microsoft.Extensions.DependencyModel,Version=3.1.6.0,Culture=neutral,PublicKeyToken=adb9793829ddae60”。该系统找不到指定的文件。'
我们的功能配置如下:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<AzureFunctionsVersion>v3</AzureFunctionsVersion>
<UserSecretsId>...</UserSecretsId> </PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.Azure.Functions.Extensions" Version="1.1.0" />
<PackageReference Include="Microsoft.Azure.WebJobs.Extensions.DurableTask" Version="2.5.1" />
<PackageReference Include="Microsoft.Azure.WebJobs.Extensions.ServiceBus" Version="4.3.0" />
<PackageReference Include="Microsoft.Azure.WebJobs.Host.Storage" Version="4.0.1" />
<PackageReference Include="Microsoft.Azure.WebJobs.Logging.ApplicationInsights" Version="3.0.27" />
<PackageReference Include="Microsoft.Extensions.Configuration.UserSecrets" Version="3.1.18" />
<PackageReference Include="Microsoft.NET.Sdk.Functions" Version="3.0.13" />
<PackageReference Include="System.Text.Json" Version="4.7.2" />
</ItemGroup>
<ItemGroup>
<None Update="host.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="local.settings.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
<CopyToPublishDirectory>Never</CopyToPublishDirectory>
</None>
</ItemGroup>
<ItemGroup>
</ItemGroup>
</Project>
Run Code Online (Sandbox Code Playgroud)
该包是通过解决方案中的另一个项目引用的,我们也尝试直接引用,但没有成功。
有谁知道这个问题的解决方法/修复方法?
我只是想摆脱典型的存储库/服务/演示的 N 层架构的舒适区,并开始研究 DDD 和聚合,我不得不承认我有点困惑,希望有人能澄清以下内容例子:
如果我有一个名为 News、NewsImage 和 Customer 的实体,它们都是 EF 可持久对象,如下所示:
public class Customer
{
public virtual int Id { get; set; }
public virtual string Name { get; set; }
}
public class NewsImage
{
public virtual int Id { get; set; }
public virtual byte[] Data { get; set; }
public virtual News News { get; set; }
}
public class News
{
public virtual int Id { get; set; }
public virtual string Name { get; …Run Code Online (Sandbox Code Playgroud) c# ×4
aggregate ×1
angular ×1
asp.net-mvc ×1
assemblies ×1
autofac ×1
azure ×1
azure-devops ×1
ckeditor ×1
ckeditor4.x ×1
dropdown ×1
generics ×1
iis-7 ×1
ms-word ×1
nuget ×1
openxml-sdk ×1
performance ×1
proget ×1
sql-server ×1
teamcity ×1
tfs ×1