小编nun*_*unu的帖子

HttpContext.Current.Cache和HttpContext.Response.Cache有什么区别?

想知道 - HttpContext.Response.CacheHttpContext.Current.Cache物体有什么不同?什么应该在Asp.net MVC Web应用程序中使用?

我为什么问这个问题?

因为,我有自己的[NoCache]属性,它负责在视图重定向期间避免缓存.

例如

public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        var cache = filterContext.HttpContext.Response.Cache;
        cache.SetExpires(DateTime.Now.AddDays(-1));
        cache.SetValidUntilExpires(false);
        cache.SetRevalidation(HttpCacheRevalidation.AllCaches);
        cache.SetCacheability(HttpCacheability.NoCache);
        cache.SetNoStore();
        base.OnActionExecuting(filterContext);
    }
Run Code Online (Sandbox Code Playgroud)

我在我的上面使用了这个属性BaseController,比如...

[NoCache]
public class BaseController : Controller
{

}
Run Code Online (Sandbox Code Playgroud)

这很好用!

但是,在身份验证部分 - 我通过以下机制将一些信息存储在缓存中

public ActionResult Login()
{
    HttpContext.Current.Cache.Insert("someKey", "someValue", null, expiredTime.Value, Cache.NoSlidingExpiration);
    return view();
}
Run Code Online (Sandbox Code Playgroud)

那么,我的问题是......

我在控制器的基类中使用我的自定义属性,它负责清除缓存项,即使我仍然可以访问整个应用程序中的缓存键和值,这是由Login方法代码设置的.

为什么这两种缓存机制的行为不同?这两者有什么区别?

你能否就此提出一些想法或信息.

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

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

具有多线程代码执行的Log4Net C#日志记录问题

Log4Net用来在我的.Net Windows service应用程序中记录异常.

我想提一下,我的Windows服务应用程序正在运行multi-threading execution,这意味着每个任务都在每个不同的线程上处理,我使用了Delegate - (BeginInvoke)模式.

重要的是,我正在使用 基于应用程序的不同场景dynamic properties动态生成多个日志文件Log4Net.

现在,在每种logging/ exception情况下(在C#方法中),我都使用Logger.Log方法来记录信息/异常Log4Net.

代码(动态文件生成)

GlobalContext.Properties[FileNameParameter] = DirectoryName + fileName;
LogManager.Info(logMessage);
Run Code Online (Sandbox Code Playgroud)

配置设置

<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
      <file type="log4net.Util.PatternString" value="D:\Data\%property{FileName}_info.log"/>
</appender>
Run Code Online (Sandbox Code Playgroud)

问题是(我相信),由于多线程代码执行,我正在跟踪Log4Net的事情,这很奇怪.

  1. 有时会生成日志文件,但没有消息内容.
  2. 有时文件本身没有生成.
  3. 有时几个文件生成,很少生成.

请你告诉我为什么Log4Net会像这样.我需要使用多线程代码执行的稳定日志记录.

提前致谢!

c# log4net multithreading windows-services exception

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

通过ADFS验证用户(Active Directory联合身份验证服务)

我需要检查特定用户是否存在或不存在于Active Directory中ADFS.

所以,我想我的ADFScheck user Authentication 通过用户名/密码.

任何人都可以提供相同的示例代码或教程.

提前致谢!

.net c# adfs2.0 c#-4.0

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

如何通过用户凭证访问AD FS声明?

我正在开发一个WCF Web服务,以在用户的​​登录操作与其活动目录角色和权限之间建立中介.我不希望我的主机应用程序直接与AD FS通信.我希望任何主机应用程序使用我的Web服务,它将根据给定的凭据提供必要的信息.

在我的Web方法中,我需要通过用户的登录凭据从AD FS(WIF)获取声明.

我的Web方法将有两个输入参数,Window用户的电子邮件ID/Windows帐户名和密码.

所以,我想通过给定用户的凭证在我的Web方法中访问AD FS声明.

如何通过给定用户的凭证获得AD FS声明?

.net c# wcf web-services adfs2.0

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

C#任务在Task.WhenAll之前执行

为什么tasks之前执行Task.WhenAll

如果你看到这里,从下面的代码片段,首先Console.WriteLine("This should be written first..");应该打印,因为我是awaiting它下面的任务..

但是,如果您看到输出结果,Tasks则会在上述语句之前打印方法结果.理想情况下,任务方法应该在我执行时执行await,但似乎 - 任务方法在我将它们添加到任务列表中时执行.为什么会这样?

你能告诉我为什么会这样吗?

码:

public static async Task Test()
{
    var tasks = new List<Task>();

    tasks.Add(PrintNumber(1));
    tasks.Add(PrintNumber(2));
    tasks.Add(PrintNumber(3));

    Console.WriteLine("This should be written first..");

    // This should be printed last..
    await Task.WhenAll(tasks);
}

public static async Task PrintNumber(int number)
{
    await Task.FromResult(0);

    Console.WriteLine(number);
}
Run Code Online (Sandbox Code Playgroud)

产量

在此输入图像描述

.net c# multithreading task-parallel-library async-await

4
推荐指数
1
解决办法
3473
查看次数

在.Net Core中使用Swagger在API方法中设置自定义路径前缀

我想在 .Net Core API 方法中使用 swagger添加自定义路径前缀。

例如,我的 API 方法声明如下:

[Route("api/v1/Customer")]
[HttpGet]
public async Task<IActionResult> Customer()
{
        // some implementation
        return Ok();
}
Run Code Online (Sandbox Code Playgroud)

所以目前,如果我使用http://localhost:50523/api/v1/Customer调用 API,它工作得很好。

现在,我想添加一些自定义路径前缀。例如,/some/custom/path/在实际 API 方法路径之前。这意味着,如果我使用http://localhost:50523/some/custom/path/api/v1/Customer调用 API,它应该可以工作。

我想在 .Net core 中使用 Swagger 来实现此目的,并且我不想更改操作方法级别的 API 路径,因为我编写了数百个 API 方法,并且我不想更改每个操作方法上的 URL。

任何帮助将不胜感激。

asp.net asp.net-mvc swagger .net-core asp.net-core

4
推荐指数
2
解决办法
7389
查看次数

C#抽象类,适用于数组初始化

我们知道我们无法创建实例abstract class.

我只是想知道,如果我们创建抽象类的数组,它肯定会工作.

例如

public abstract class Creator
{
    public abstract void DoSomething();
}

Creator creator = new Creator(); // this will give you compilation error!

Creator[] creator = new Creator[2]; // this will SURE work and will NOT give you compilation error.
Run Code Online (Sandbox Code Playgroud)

任何人都可以让我知道为什么会发生这种情况以及为什么它正在使用数组初始化?

提前致谢.

c# oop abstract-class design-patterns

3
推荐指数
1
解决办法
3515
查看次数

C#lambda有条件地获得不同的值列表

我有一个用户列表,如下所示:

List<User> users = new List<User>();

users.Add(new User(){ UserId = "11", City = "London" });
users.Add(new User(){ UserId = "12", City = "London" });
users.Add(new User(){ UserId = "12", City = "London" });
users.Add(new User(){ UserId = "11", City = "Newyork" });
users.Add(new User(){ UserId = "14", City = "Virginia" });
Run Code Online (Sandbox Code Playgroud)

在这里,我希望获得具有不同City by的不同UserIDC# lambda expression

因此,在上面的情况下,我应该得到一个List<string>只包含UserId = 11项目,因为UserId是相同的,但城市对于这两个项目是不同的.

能否告诉我如何通过C#lambda代码执行此操作.

提前致谢.

c# linq lambda

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

List.Select()方法不执行Func <>内的方法

为什么在这个给定的例子中没有打印出姓名?

customer.Select()方法真的不打印数据.是不是真的没有执行方法Func<>内部Select()或这里发生了不同的事情?

码:

public static void Main()
{
     var customers = new List<Customer>()
     {
         new Customer() { Name = "Bill" }, 
         new Customer() { Name = "Steve" }
    };

    customers.Select(
    c =>
    {
        Console.WriteLine("Name is {0}" + c.Name);
        return 0;
    });

    Console.Read();
}
Run Code Online (Sandbox Code Playgroud)

有人请让我知道它为什么不执行OR打印?

.net c# lambda

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

在每个不同的线程上调用服务并等待所有服务响应

当我在一个Windows service项目上工作时,我发现在集成以下功能时遇到了麻烦.

  1. 我需要call 5 different web services on 5 different thread一次通话(单一方法).

  2. 我必须have to wait for all 5 service's response然后我必须执行下一个任务.

问题:我将如何wait for all service's response which is called by each different thread?进行下一步任务.

提前致谢.

.net c# multithreading

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