想知道 - HttpContext.Response.Cache与HttpContext.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方法代码设置的.
为什么这两种缓存机制的行为不同?这两者有什么区别?
你能否就此提出一些想法或信息.
我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的事情,这很奇怪.
请你告诉我为什么Log4Net会像这样.我需要使用多线程代码执行的稳定日志记录.
提前致谢!
我需要检查特定用户是否存在或不存在于Active Directory中ADFS.
所以,我想我的ADFS来check user Authentication 通过用户名/密码.
任何人都可以提供相同的示例代码或教程.
提前致谢!
我正在开发一个WCF Web服务,以在用户的登录操作与其活动目录角色和权限之间建立中介.我不希望我的主机应用程序直接与AD FS通信.我希望任何主机应用程序使用我的Web服务,它将根据给定的凭据提供必要的信息.
在我的Web方法中,我需要通过用户的登录凭据从AD FS(WIF)获取声明.
我的Web方法将有两个输入参数,Window用户的电子邮件ID/Windows帐户名和密码.
所以,我想通过给定用户的凭证在我的Web方法中访问AD FS声明.
如何通过给定用户的凭证获得AD FS声明?
为什么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 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。
任何帮助将不胜感激。
我们知道我们无法创建实例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)
任何人都可以让我知道为什么会发生这种情况以及为什么它正在使用数组初始化?
提前致谢.
我有一个用户列表,如下所示:
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代码执行此操作.
提前致谢.
为什么在这个给定的例子中没有打印出姓名?
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打印?
当我在一个Windows service项目上工作时,我发现在集成以下功能时遇到了麻烦.
我需要call 5 different web services on 5 different thread一次通话(单一方法).
我必须have to wait for all 5 service's response然后我必须执行下一个任务.
问题:我将如何wait for all service's response which is called by each different thread?进行下一步任务.
提前致谢.
c# ×9
.net ×5
adfs2.0 ×2
asp.net-mvc ×2
lambda ×2
.net-core ×1
asp.net ×1
asp.net-core ×1
async-await ×1
c#-4.0 ×1
caching ×1
exception ×1
linq ×1
log4net ×1
oop ×1
swagger ×1
wcf ×1
web-services ×1