我目前在我的Web API服务中有一个消息处理程序,它覆盖"SendAsync",如下所示:
protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{
//implementation
}
Run Code Online (Sandbox Code Playgroud)
在此代码中,我需要检查名为的自定义添加的请求标头值MyCustomID.问题是当我执行以下操作时:
if (request.Headers.Contains("MyCustomID")) //OK
var id = request.Headers["MyCustomID"]; //build error - not OK
Run Code Online (Sandbox Code Playgroud)
...我收到以下错误消息:
无法将带有[]的索引应用于"System.Net.Http.Headers.HttpRequestHeaders"类型的表达式
如何通过传递给此重写方法的(MSDN文档)实例访问单个自定义请求标头?HttpRequestMessage
我MemoryCache在ASP.NET中使用它并且运行良好.我有一个缓存了一个小时的对象,以防止从存储库中获取新的数据.
我可以看到缓存在调试中工作,但是一旦部署到服务器,在第一次调用并且对象被缓存后,后续调用大约是1/5的时间.
但是我注意到每个新的客户端呼叫(仍然在那个1小时的窗口内 - 事实上只是一分钟或者之后的两分钟)似乎第一次调用我的服务(即进行缓存)几乎和原来一样长在缓存数据之前调用.
这让我开始怀疑 - 是MemoryCache特定于会话的,并且每个进行调用的新客户端都存储它自己的缓存,或者是否有其他事情导致第一次调用花了这么长时间甚至在我知道数据已被缓存之后?
我真的来自世界,Http并且从未使用过使用TCP的旧.NET Remoting,但我理解TCP概念,现在已经使用net.tcp绑定在过去几年中实现了几个WCF服务.大部分时间它都在运行,我消耗它,故事结束.但是,有时服务器设置更高级,我得到1个服务器上存在的通信错误,而不是来自另一个服务器.证明它是否是防火墙/服务器/等.问题我需要看看是否可以毫无问题地看到或达到WCF服务.这是使用net.tcp的Windows服务托管WCF服务,我试图找出这种情况.
事情是通过HTTP绑定公开WCF服务,我可以在浏览器中填充URI以查看服务页面,让我知道服务正在正常运行.简单的测试.
如何通过net.tcp绑定公开WCF服务的等价物?有没有我可以用来测试的工具或命令net.tcp//mycustomWCFService:8123/MyService?我已经看到一些关于编写代码的帖子,以编程方式确定WCF服务是否可用,但我不希望这样做.我想在没有代码的情况下进行检查,类似于我在浏览器中提取http端点.
任何帮助表示赞赏,谢谢!
我是一个使用OpenCover和ReportGenerator的菜鸟,我在理解如何让它们工作方面有点挣扎.我正在使用VS.NET 2012'Professional',这意味着我无法访问内置的单元测试覆盖工具.我也安装了ReSharper,但不想在'dotCover'中支付另一个实用程序
看起来OpenCover和ReportGenerator会做我需要的工作,我会看到同时下载的文档,但我缺少一些理解.第一关,当我为两者下载nuget包时,我的目标项目应该是什么?我有一个多层应用程序,所以我假设我的单元测试项目是正确的,或者甚至是否重要?我在文档中看到,我只是使用命令行命令指向/ bin(我认为)解决方案,所以也许我甚至不需要将这些下载添加到任何特定项目(可能是测试工具) ).有人可以告诉我,如果我有这个正确吗?
一旦我安装了它们,我就会尝试获得单元测试覆盖率指标,并且程序包附带的文档并不像我希望的那样清晰.是否有任何好的博客文章或链接一起使用这些工具来获取指标?
我需要缓存在ASP.NET Web API OData服务中可用的大部分是静态的(可能每天更改1次)的对象集合.此结果集用于跨调用(意味着不是特定于客户端调用),因此需要在应用程序级别缓存它.
我做了一些关于'在Web API中缓存'的搜索,但所有结果都是关于'输出缓存'.这不是我在这里寻找的.我想缓存一个'People'集合,以便在后续调用中重用(可能有一个滑动到期).
我的问题是,由于这仍然只是ASP.NET,我是否使用传统的应用程序缓存技术将此集合持久存储在内存中,或者我还需要做些什么呢?此集合不直接返回给用户,而是通过API调用用作OData查询的幕后源.我没有理由在每次通话时都去数据库,以便在每次通话时获得完全相同的信息.每小时到期应该足够了.
任何人都知道如何在这种情况下正确缓存数据?
使用ASP.NET Core 1.0版本,可以根据此处的文档在 .NET Core或完整的 .NET Framework 上运行.我试图理解为什么选择ASP.NET Core +完整的.NET Framework的后一种选择?
我理解完整的.NET Framework和.NET Core之间的区别.但是,如果我想使用完整的.NET Framework,为什么不使用ASP.NET 4.6呢?我认为这个想法是在.NET Core上使用ASP.NET Core的1-2个冲击,允许一系列的好处,如跨平台部署,模块化,部署到Docker容器的能力,性能等.没有.NET Core我不喜欢不相信该列表上的任何内容仍然有效,那么完整的.NET框架+ ASP.NET Core的用例是什么?在没有.NET Core的情况下,ASP.NET Core自身还能提供什么?
我在这里有一个重大问题,我不知道如何调试问题.首先,我正在运行VS2012 Update 2(v11.0.60315.01).单元测试一直在运行,我今天注意到他们辞职了.过去一周左右我正在做一些不同的事情所以自从我上次进行任何单元测试以来至少已经过了一周或两周.
所有测试都停留在窗口中的Pending状态Unit Test Session.我甚至尝试过一个新的测试工具并运行一些简单的单元测试.它们的行为相同,所以我认为这不是一个单一的解决方案问题.
我显然重新启动了包括重启VS.NET 2012的机器.我没有得到任何错误,消息,问题等.单元测试都只是停留在Pending状态,并且它们都不会运行.
我使用vstest.console.exe工具运行包含我的测试的.dll,我得到结果" 测试运行成功 "," 测试执行时间:0.4952秒 ".好的,这告诉我VS2012有问题,因为测试使用命令行独立运行.
我该如何调试此问题?我看到了删除各个解决方案的设置文件的解决方案,但这似乎是VS2012的全面问题.有关如何解决此问题的任何建议?
我正在研究一些EF示例,并试图解决在执行LINQ to Entities或EntitySQL时"查询投影" 究竟等同于什么.我相信,当查询结果被过滤并投射到匿名类型但不是100%肯定时.
有人可以定义这个并且可能提供一个使用它的例子的小型L2E查询吗?
谢谢!
我正在使用VS.NET 2013和集成的Git工具,并尝试将我的master分支发布到我在GitHub上设置的现有存储库.我在IDE中专门使用VS.NET工具,如果可能的话,请使用这些工具,而不是命令行.
我的所有更改都已在本地提交,我只需要将分支发布到GitHub.但是,当我尝试发布我的本地master分支时,我收到以下错误:
您无法将本地分支主服务器发布到远程存储库源,因为那里已存在具有相同名称的分支.您可能希望重命名本地分支,然后重试.
我知道有一个长篇文章这一这里,但我想从VS.NET或在网上直接GutHub如果可能解决这个问题.充其量我想更好地理解这个问题.
我几乎是肯定的,这个问题是由于我Initialize this repository with a README在GitHub上选择选项而不是创建一个空白的repositoy,我可以推送到我的本地更改.我认为GutHub已经使用了相同的分支名称,这引起了冲突.
我想我可以删除GitHub上的存储库并从头开始,但希望能从VS.NET或GitHub中解决这个问题.有谁知道我怎么做master才能成功发布我的分支?
我在单个方法中使用以下代码行来显式检查并信任来自以下主机的SSL证书:MyTrustedCompany.com:
ServicePointManager.ServerCertificateValidationCallback = Function(obj As [Object], certificate As X509Certificate, chain As X509Chain, errors As SslPolicyErrors) (certificate.Subject.Contains("CN=MyTrustedCompany.com"))
Run Code Online (Sandbox Code Playgroud)
代码没问题 - > 100%完美运行.
问题是,它太遥远了.我认为它的范围只在我对其进行十分转换的方法中,但显然它是'ServicePointManager'对象上的Shared属性,然后必须持久保存整个应用程序,这是我不想要的.
问题是后来我打电话给我的网络服务,并得到"无法建立信任关系..."的例外.这是因为在上面的代码行中,我检查了该方法的SSL证书的主机名.我很快就从回调中测试了返回'True',因此所有证书都是可信任的,而不是检查一个specefic名称(即MyTrustedCompany)和subiquent请求是否有效.这就是我知道这个回调赋值到达父亲的方法.当然,我可以扩展回调以包括所有其他证书名称,但我宁愿做的是将'ServerCertificateValidationCallback'设置回其默认行为.像下面的伪代码:
ServicePointManager.ServerCertificateValidationCallback = Nothing 'Default checking behavior
Run Code Online (Sandbox Code Playgroud)
如何删除自定义验证并将其设置回其默认行为?谢谢!
.net ×3
caching ×2
unit-testing ×2
.net-core ×1
asp.net ×1
asp.net-core ×1
c# ×1
git ×1
github ×1
httprequest ×1
memorycache ×1
odata ×1
opencover ×1
ssl ×1
vb.net ×1
wcf ×1