小编Chr*_*Fin的帖子

将图像附加到MSTest中的测试报告中

我们使用连接到Team Foundation Server 2010的Visual Studio 2010,我们使用MSTest创建单元测试.

是否可以将图像附加到测试报告中,因此当测试失败时我们可以看到某些内容?

该图像例如可以是用于UI测试的应用程序的屏幕截图或用于可视化测量数据的图形.

c# mstest visual-studio-2010

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

在视图中加载的一些资源没有本地化,为什么?

我正在创建一个ASP.NET MVC 4应用程序并使用默认的.net资源进行本地化.
现在我有如下奇怪的行为,但仅在我的实时服务器上,而不是在我的开发机器上:
在此输入图像描述

红色和绿色通过@Namespace.Properties.Resources.Key直接在视图中加载,黄色通过[Display[...]模型中的属性加载@Html.DisplayFor(...).

有没有人知道为什么在实时服务器上有些错误加载?
加载正确/实际资源文件,作为在上次上载之前添加并正确加载的本地化显示属性

.net c# asp.net-mvc resources localization

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

我的方法中有多少个线程?

我一直在网上搜索这个答案,但从那以后找不到真正有用的东西.

我有一个正在运行的程序,我想计算在给定时间我的方法中有多少个线程.

我的Main()函数中有代码:

Parallel.Invoke(MyMethod,MyMethod,MyMethod,MyMethod);


private static void MyMethod()
{
    //how many threads are waiting here???  <--- this is what I am after
    lock (myObj)
    {
        //one thread at a time please
    }
}
Run Code Online (Sandbox Code Playgroud)

谁能在这里光明?

c# multithreading

7
推荐指数
1
解决办法
244
查看次数

将卷影副本目录添加到ASP.NET AppDomain

我已经看过这个这个问题,但它们都已经存在了几年,而在我的情况下,可能还有另一种解决方案:

我有一个ASP.NET MVC 5应用程序,带有基于THIS的插件系统.
所以我的~/bin文件夹是由框架复制的阴影,我的~/Plugins文件夹使用"手动阴影副本"到~/Plugins/ShadowCopy应用程序pre-init,如上面的链接所示.
到目前为止,这个工作正常,因为我现在有以下情况:

我创建了一个单独的受限制AppDomain来执行一些沙盒代码.
为了能够将我的程序集中定义的类型的对象传递给此域,我将此域设置为主域ApplicationBase的shadow-copy目录(如果不从那里加载它们,则SerializationException在将类型/对象传递给第二个时会得到一个domain,因为定义此类型的程序集是从不同位置加载的).

现在我可以将我的"基本程序集"中定义的类型传递给第二个域.
但是,只要我想使用插件中定义的类型,这就失败了,因为插件程序集不在默认的卷影副本目录中,而是在我的"手动卷影复制目录"中.
并且由于此目录也位于完全不同的位置,因此无法将其添加为PrivateBinPath基本路径下方.

目前我使用以下"解决方法":

#pragma warning disable 0618
        AppDomain.CurrentDomain.SetShadowCopyPath(String.Join(";", 
           HostingEnvironment.MapPath("~/bin"), 
           HostingEnvironment.MapPath("~/Plugins/ShadowCopy")));
#pragma warning restore 0618
Run Code Online (Sandbox Code Playgroud)

在pre-init方法中.这将"手动阴影副本目录"添加到默认的阴影副本目录,我的插件也被框架阴影复制,我的第二个AppDomain能够加载它们,一切都在或多或少地起作用.

但正如SetShadowCopyPath我所描述的那样,我现在正在回答我的实际问题:
我正在寻找一种更好的解决方案来避免使用这种方法.
我想到了以下解决方案,但无法确定是否/如何可行:

  1. 配置IIS以创建属性设置为和通过AppDomainAppDomainSetup.ShadowCopyDirectories属性~/bin~/Plugins/ShadowCopyweb.config
  2. 将影子副本目录移动到例如~/bin/Plugins并告诉IIS不回收主AppDomain文件夹中的更改(否则应用程序会在每次请求时重新启动,因为pre-init方法每次都会更改其中的文件)

另一个想法是将"手动阴影副本目录"设置在默认的卷影副本目录下,所以不是~/Plugins/ShadowCopy类似的东西C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\root\69da84c5\cd056104\Plugins,但是"干扰框架文件夹"是明智的吗?

我愿意解决这个问题以及解决我的基本问题的不同方法.

c# asp.net iis shadow-copy appdomain

7
推荐指数
0
解决办法
1550
查看次数

IsPersistent无法正常工作 - Cookie仅对当前会话有效

我有一个用于用户身份验证的ASP.NET MVC 5应用程序ASP.NET Identity 2.1.0.
过去一切都运行良好,但现在我发现持久的用户会话不再起作用了.我不知道什么样的变化打破了这一点,但它工作时,我实现了身份(转换从应用程序SimpleMembership),这是我的逻辑我的那一刻:

var result = await SignInManager.PasswordSignInAsync(model.UserName, model.Password, 
                                     model.RememberMe, shouldLockout: true);
Run Code Online (Sandbox Code Playgroud)

SignInManager是我的ApplicationSignInManager基础SignInManager<ApplicationUser, int>model.RememberMetrue.

我的设置:

app.CreatePerOwinContext<ApplicationSignInManager>(ApplicationSignInManager.Create);

app.UseCookieAuthentication(new CookieAuthenticationOptions
    {
        AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
        LoginPath = new PathString("/Account/Login"),
        Provider = new CookieAuthenticationProvider
            {
                OnValidateIdentity = ApplicationCookieIdentityValidator.OnValidateIdentity(
                    validateInterval: TimeSpan.FromMinutes(0),
                    regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager))
            }
    });
app.UseTwoFactorSignInCookie(DefaultAuthenticationTypes.TwoFactorCookie, TimeSpan.FromMinutes(5));
app.UseTwoFactorRememberBrowserCookie(DefaultAuthenticationTypes.TwoFactorRememberBrowserCookie);
app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie);
Run Code Online (Sandbox Code Playgroud)

除了持久化用户会话外,一切正常.我检查了我的服务器返回的cookie,并且.AspNet.ApplicationCookie总是返回"当前会话有效"而不是将来的某个日期.因此,当我关闭并重新打开浏览器时,我需要再次登录...

有没有人知道为什么这不起作用了?

PS:我已经覆盖SignInAsync了我,ApplicationSignInManager因为我在那里做了一些自定义逻辑,但我甚至检查了调试器并进行了以下调用:

await base.SignInAsync(user, isPersistent, rememberBrowser);
Run Code Online (Sandbox Code Playgroud)

isPersistent是的 …

c# asp.net-mvc asp.net-mvc-5 asp.net-identity asp.net-identity-2

7
推荐指数
1
解决办法
1万
查看次数

使用ASP.NET标识实现权限

我们目前正在使用ASP.NET Identity开发一个较小的ASP.NET MVC 5应用程序.它允许我们维护不同的项目和任务.我们最近实施了基本身份验证,因此我们可以向我们的网站注册用户并使用它们登录.

我们希望能够基于项目管理访问权限,因此我们可以为每个用户说明他对指定项目的读取,写入,管理或无权限.

我的第一个想法是我们可以在我们的数据库中创建一个存储用户权限的简单新表.但我觉得可能有一种内置的方法来实现ASP.NET身份.

所以我的问题是,我们应该遵循哪条路径 - 手动构建一个新表来管理权限或使用ASP.NET Identity提供的内置功能.

c# asp.net identity asp.net-mvc-5 asp.net-identity

7
推荐指数
1
解决办法
523
查看次数

Rx缓冲区没有空调用户

在我使用.Net 4.6的WPF应用程序中,我有一个以高速率(每秒几百个)激发新数据点的事件,但不是所有时间.此数据显示在图表中.

我想每50毫秒更新一次图表,而不是每个新数据点之后.
为了达到这个目的,我使用Buffer(TimeSpan.FromMilliseconds(50))了Rx,这在理论上运行良好.但是如果没有创建新的数据点,我的订户也会每50毫秒被调用一次,这不是我想要的.

我创建了一个小样本应用程序来测试它:

using System;
using System.Reactive.Linq;

namespace RxTester
{
    public class Program
    {
        private static event EventHandler TheEvent;

        static void Main(string[] args)
        {
            var observable = Observable.FromEvent<EventHandler, EventArgs>(h => (s, e) => h(e), h => TheEvent += h, h => TheEvent -= h);
            var subscriber = observable.Buffer(TimeSpan.FromMilliseconds(1000))
                .Subscribe(e => Console.WriteLine($"{DateTime.Now.ToLongTimeString()}: {e.Count} elements received..."));

            var random = new Random();
            var timer = new System.Timers.Timer(2000)
                {
                    AutoReset = true,
                    Enabled = true
                };
            timer.Elapsed += (s, e) …
Run Code Online (Sandbox Code Playgroud)

c# buffer batching system.reactive

7
推荐指数
1
解决办法
944
查看次数

TFS生成失败,文件的"无法复制文件"甚至没有在项目中

我有TFS Build设置,直到昨天工作正常.从那时起,我从一个项目中得到以下错误:

C:\ Program Files(x86)\ MSBuild\Microsoft\VisualStudio\v11.0\WebApplications\Microsoft.WebApplication.targets(182):无法复制文件"Content\themes\base\images\ui-bg_flat_0_aaaaaa_40x100.png"因为没找到.

C:\ Program Files(x86)\ MSBuild\Microsoft\VisualStudio\v11.0\WebApplications\Microsoft.WebApplication.targets(182):无法复制文件"Content\themes\base\images\ui-bg_flat_75_ffffff_40x100.png"因为没找到.C:\ Program Files(x86)\ MSBuild\Microsoft\VisualStudio\v11.0\WebApplications\Microsoft.WebApplication.targets(182):无法复制文件"Content\themes\base\images\ui-bg_glass_55_fbf9ee_1x400.png"因为没找到.

C:\ Program Files(x86)\ MSBuild\Microsoft\VisualStudio\v11.0\WebApplications\Microsoft.WebApplication.targets(182):无法复制文件"Content\themes\base\images\ui-bg_glass_65_ffffff_1x400.png"因为没找到.C:\ Program Files

......还有大约10个......

错误提到的文件无处可寻,不在项目中,也不在项目的任何文件夹中.

有谁知道如何摆脱这个错误?

在.target文件的Ln 182处是以下内容:

<Copy SourceFiles="@(Content)" Condition="'%(Content.Link)' == ''"
DestinationFolder="$(WebProjectOutputDir)\%(Content.RelativeDir)" 
SkipUnchangedFiles="true" 
Retries="$(CopyRetryCount)"
RetryDelayMilliseconds="$(CopyRetryDelayMilliseconds)" />
Run Code Online (Sandbox Code Playgroud)

我在解决方案中还有第二个项目几乎相同并且构建良好.

msbuild tfs tfsbuild

6
推荐指数
1
解决办法
8197
查看次数

DebuggerNonUserCode不适用于async/await

所以,我有以下代码:

static void Main(string[] args)
{
    var test1 = GeneratedHelperSync();
    var test2 = GeneratedHelperAsync().Result;
}

[System.Diagnostics.DebuggerNonUserCode]
static int GeneratedHelperSync()
{
    return RealCode();
}

[System.Diagnostics.DebuggerNonUserCode]
async static Task<int> GeneratedHelperAsync()
{
    // F11 steps in here!
    return await Task.FromResult(RealCode());
}

private static int RealCode() 
{ 
     return 1; 
}
Run Code Online (Sandbox Code Playgroud)

我是F11(步入)通过Visual Studio 2013中的所有语句.我希望在Main()的两个调用中都可以将我引入"return 1"语句.但是,在第二种情况下,它将我带入异步功能.

似乎编译器在异步代码生成期间删除了我的DebuggerNonUserCode.
我的问题是,为什么这样做?我错过了什么吗?

至于为什么我想要这个,我有一些自动生成的辅助异步函数,我想避免一直踩到它们.

c# attributes visual-studio async-await

6
推荐指数
1
解决办法
302
查看次数

C#Constructor线程安全吗?

假设我有多个线程,每个线程都试图创建同一个类的对象.
在不同线程中同时创建相同类型的对象是否会相互干扰?我是否需要在构造函数中使用"lock"?

c# multithreading constructor

6
推荐指数
1
解决办法
1249
查看次数