小编Iña*_*oro的帖子

BlockingCollection(Of T)的目的是什么

我试图在.NET 4上新的Parallel Stacks的上下文中理解BlockingCollection的目的.

MSDN文档说:

BlockingCollection用作IProducerConsumerCollection实例的包装器,允许从集合中删除尝试以阻止数据可用于删除.类似地,可以创建BlockingCollection以强制执行IProducerConsumerCollection中允许的数据元素数量的上限; 然后可以阻止对集合的添加尝试,直到空间可用于存储添加的项目.

但是,当我查看一些IProducerConsumerCollection的实现时,比如ConcurrentQueue,我看到它们提供了一个无锁,线程安全的实现.那么为什么需要BlockingCollection提供的锁机制呢?MSDN中的所有示例都显示通过BlockingCollection包装器使用这些集合,直接使用这些集合有哪些麻烦?使用BlockingCollection会产生什么好处?

.net parallel-extensions

19
推荐指数
2
解决办法
5054
查看次数

asp.net mvc 3 handleerror全局过滤器始终显示IIS状态500页

我已经尝试了一切,甚至卸载了asp.net mvc3,我无法让HandleError全局过滤器工作.

我在Global.asax中设置了HandleError过滤器:

 public static void RegisterGlobalFilters(GlobalFilterCollection filters)
 {
     filters.Add(new HandleErrorAttribute());
 }
Run Code Online (Sandbox Code Playgroud)

我也启用了CustomErrors(如果我设置defaultRedirect ="Error"并不重要,我认为这是在文档中因为旧版本的mvc需要):

<customErrors mode="On" />
Run Code Online (Sandbox Code Playgroud)

尝试浏览页面直到错误被引发,你从localhost或使用主机名,在开发服务器或IIS 7.5中,它总是重定向到标准状态500页,而不是我自定义Error.cshtml视图,我已在共享中创建.这是错误视图代码:

@model System.Web.Mvc.HandleErrorInfo

@{
    ViewBag.Title = "Oooops";
}

<h2>Ooops Something really bad happened!</h2>
Run Code Online (Sandbox Code Playgroud)

另外我注意到,如果我创建一个新的ASP.NET MVC3项目,然后选择"Internet Application"模板,并且只是在该项目中启用customErrors,那么HandleError过滤器开始正常工作,但是使用空的MVC3模板却没有.


我想澄清一下,确实我可以在调试时看到正在处理的错误视图,但浏览器始终显示错误500页面.

c# asp.net asp.net-mvc razor asp.net-mvc-3

9
推荐指数
3
解决办法
9492
查看次数

Visual Studio 2010主题,更改参数帮助背景颜色

最近我在Visual Studio 2010中安装了Power Tools Extension它工作得很好,但是我的文本着色主题(Nightfall)和扩展的Colorized Parameter功能都有问题.

由于主题文本前颜色为灰色,因此当Power Tools Extensions使用我的文本颜色显示参数帮助工具提示时,它将变得不可读:

替代文字

有没有办法更改参数帮助背景颜色?

visual-studio-2010

8
推荐指数
1
解决办法
4774
查看次数

WCF ServiceHost已经有5种行为

我正在创建一个ServiceFactory来控制通过IIS 7暴露的服务的内部化.

但是我对ServiceHost的行为感到惊讶.虽然我有0个服务配置文件,但无论我在哪里初始化一个新的ServiceHost,如下所示:

var host = new ServiceHost(typeof(MyService), baseAddresses);
Run Code Online (Sandbox Code Playgroud)

接下来,我只想在构建处于调试模式时添加一些行为:

#if DEBUG
host.Description.Behaviors.Add(new ServiceDebugBehavior());
#endif
Run Code Online (Sandbox Code Playgroud)

但是,此代码失败导致ServiceDebugBehavior已应用!尽管我没有配置文件,并且没有应用于服务类的属性,但主机已经具有此行为并且还应用了5个!

这是预期的行为吗?如果我想在发布版本上禁用ServiceDebugBehavior怎么办?

提前致谢,

c# service wcf

5
推荐指数
1
解决办法
2876
查看次数

如何在C#中测试COM依赖对象

我试图用一个依赖于COM接口的对象做TDD.我虽然在进行开发测试时嘲笑COM接口,但在集成测试中做到了.

但是,我无法模拟COM接口,我尝试使用Moq,它会引发异常:

System.TypeLoadException未被用户代码处理Message =无法从程序集'DynamicProxyGenAssembly2,Version = 0.0.0.0,Culture = neutral,PublicKeyToken = null'加载类型'Castle.Proxies.iTunesAppProxy'.该类型被标记为符合类型等效的条件,但它具有通用参数,或者它不是结构,COM导入的接口,枚举或委托

是否可以与其他框架一起使用?你如何使用COM依赖对象进行TDD?

在此先感谢!或代表

c# tdd moq

5
推荐指数
2
解决办法
1268
查看次数

Sharepoint Office 365 OAuth服务身份验证到list.asmx

我试图从外部网站访问Office 365中的Sharepoint列表数据.我在Azure Active Directory中注册了我的应用程序,并且我已经完成了创建和信任certifacte以及获取访问令牌的所有过程.

Add-Type -Path ".\Microsoft.IdentityModel.Clients.ActiveDirectory.dll"

$authenticationContext = New-Object Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContext -ArgumentList "https://login.microsoftonline.com/{myTenantId}/", $false

$cer = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2
$cer.Import(".\WithPrivateKey.pfx", "privateKey", [System.Security.Cryptography.X509Certificates.X509KeyStorageFlags]::MachineKeySet)

$clientAssertion = New-Object Microsoft.IdentityModel.Clients.ActiveDirectory.ClientAssertionCertificate -ArgumentList "{myClientId}", $cer

$authenticationResult = $authenticationContext.AcquireToken("https://{tenantName}.sharepoint.com", $clientAssertion)

$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]"
$headers.Add("Authorization", "Bearer " + $authenticationResult.AccessToken)
Run Code Online (Sandbox Code Playgroud)

我可以通过在请求标头中显示访问令牌来成功调用Sharepoint REST Api.

$response = Invoke-RestMethod -Uri https://{myTenantName}.sharepoint.com/sites/devSite/_vti_bin/ListData.svc/TestList -Method Get -Headers $headers 
Run Code Online (Sandbox Code Playgroud)

但是我不能这样做来访问asmx端点,比如Lists.asmx,每当我尝试调用那些服务上的任何方法时,我都会获得401 UNAUTHORIZED

$body = '<?xml version="1.0" encoding="utf-8"?>
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
  <soap12:Body>
    <GetList xmlns="http://schemas.microsoft.com/sharepoint/soap/">
      <listName>TestList</listName>
    </GetList>
  </soap12:Body>
</soap12:Envelope>'

$response = Invoke-WebRequest -Uri https://{myTenantName}.sharepoint.com/sites/site/_vti_bin/Lists.asmx -Method Post -ContentType 'application/soap+xml' …
Run Code Online (Sandbox Code Playgroud)

sharepoint web-services oauth office365

2
推荐指数
1
解决办法
3598
查看次数