我是否应该使用OwinContext的环境来保存每个请求的特定于应用程序的数据

我需要一种方法来存储每个请求的日志对象。 使用HttpContext,我会将其添加到项目Dictionary中。 如果我能帮助它,我不想把HttpContext带进去。 下面的代码是我建议的Unity LifeTimeManager,它将在OwinContext的Environment属性中存储对象,我可以使用我的Owin中间件访问它。 public class OwinContextLifetimeManager : LifetimeManager { private string key = (new Guid()).ToString(); private IDictionary environment; public OwinContextLifetimeManager(IDictionary environment) { this.environment = environment; } public override object GetValue() { if (environment != null && environment.ContainsKey(key)) return environment[key]; else return null; } public override void RemoveValue() { if (environment != null) environment.Remove(key); […]

如何访问另一个程序集中的类以进行unit testing?

我正在开始对Visual-Studio 2008方式进行unit testing,我想知道为了测试目的,完成跨程序集class访问的最佳方法是什么。 基本上,我在一个解决方案中有两个项目: MyProject(C#) MyProjectTests(C#测试项目) MyProject中的所有内容当前都具有默认的可访问性,如果我没记错,这意味着一切都是internal 。 我主要想在class上进行测试,但是有一些delegates参与其中。 将来某个时候可能会有一个外部API,但我大约有20%的function完整(至少在纸面上)并且我非常谨慎地在这个未经测试的核心上层叠更多代码。 因此,我想在应用程序完成足够传统(读取:坏和/或懒惰)function测试之前完成一些测试,并且肯定在版本n + 1外部API启动之前完成。 除了直接的答案,我们将非常感谢解决方案的一个例子。

如何在C#中将ArrayList转换为字符串数组(string )

如何在C#中将ArrayList转换为string[] ?

如何在字典中的第一个索引中插入元素?

是否有方法或技术允许您将元素插入到Dictionary ,以保证该项位于该字典的KeyCollection的第一个索引中。 例如: Dictionary dic = foo.GetOutput(); // `dic` is something like: // {“foo”, “baa”}, // {“a”, “b”} 我需要这样的东西: dic.Add(“key”, “value”, 0); // where `0` is the index that `key` to be inserted. foreach(KeyValuePair key in dic) { Console.WriteLine(“{0} = {1}”, key.Key, key.Value); } 输出: key = value foo = baa a = b 很感谢任何forms的帮助。 […]

System.ArgumentException:表类型参数必须具有有效的类型名称

我试图将用户定义的表类型传递给C#中的查询。 类型定义为2列(org和sub org) 这就是我的代码: DataSet ds = new DataSet(); try { DataTable FilteredOrgSubOrg = new DataTable(“OrgSubOrgValueType”); FilteredOrgSubOrg.Columns.Add(“org”, typeof(string)); FilteredOrgSubOrg.Columns.Add(“subOrg”, typeof(string)); FilteredOrgSubOrg.Rows.Add(org, orgsub); using (SqlConnection conn = new SqlConnection(cCon.getConn())) { using (SqlCommand cmd = conn.CreateCommand()) { cmd.CommandText = “select * from myTable ex where year = @year’ and qtr = @qtr” + ” and EXISTS(SELECT 1 […]

具有空选择的SelectList

我的视图中有一堆下拉列表,例如: @Html.DropDownListFor(model => model.Process, Model.ProcessList) 它们都基于数据库表中的数据接受SelectList ,如下所示: ProcessList = new SelectList(_db.Processes, “ID”, “Name”); 其中_db.Processes返回一个ObjectSet 。 我遇到的问题是,有时由下拉列表设置的属性可能没有选择,即null 。 如何在SelectList >中添加null选择

Swashbuckle 5找不到我的ApiControllers

我真的需要我的WebAPI 2项目的API文档,我使用了Swashbuckle 5 NuGet包。 开箱即用,我可以点击{myrooturl} / swagger并弹出一个UI,但那里没有控制器,方法或任何东西。 只是我的标题:[base url:/EM.Services,api version:v1] 我看了一下Swashbuckle文档,因为我正在使用由IIS托管的OWIN,所以我修改了SwaggerConfig: c.RootUrl(req => req.RequestUri.GetLeftPart(UriPartial.Authority) + req.GetRequestContext().VirtualPathRoot.TrimEnd(‘/’)); 按照这个文件: https : //github.com/domaindrivendev/Swashbuckle/blob/1326e753ce9b3a823b3c156b0b601134692ffc58/README.md#transitioning-to-swashbuckle-50 我还设置了项目的构建以生成XML文档,并将我的SwaggerConfig指向它: private static string GetXmlCommentsPath() { // tried with an without the \bin return String.Format(@”{0}\bin\EM.Services.XML”, AppDomain.CurrentDomain.BaseDirectory); } 我不确定XML文档的工作/不工作是否与它有关,因为我在swagger-ui页面上完全没有控制器。 值得一提的是,我的所有控制器都inheritance自BaseController,而BaseController又inheritance自ApiController。 我的WebApiConfig有什么东西搞砸了吗? public static void Register(HttpConfiguration config) { config.SuppressDefaultHostAuthentication(); config.Filters.Add(new HostAuthenticationFilter(OAuthDefaults.AuthenticationType)); config.Filters.Add(new ValidateModelAttribute()); config.Filters.Add(new BaseAuthenticationAttribute()); config.MapHttpAttributeRoutes(); config.Routes.MapHttpRoute( […]

常量枚举中的循环定义

我正在尝试创建一个Enum类型的常量但是我得到一个错误..我的枚举是: public enum ActivityStatus { Open = 1, Close = 2 } 我有一个使用它的模型: public class CreateActivity { public int Id; public const ActivityStatus ActivityStatus = ActivityStatus.Open; } 发生以下错误: 错误1“Help_Desk.Models.CreateActivity.ActivityStatus”常量值的评估涉及循环定义…… 但是,如果我更改ActivityStatus属性的名称,它的工作原理! public class CreateActivity { public int Id; public const ActivityStatus AnyOtherName = ActivityStatus.Open; } 为什么会这样?

如何连接已经打开的浏览器?

我非常感谢有关如何使用Selenium Webdriver通过C#连接到已经打开的浏览器的指南。 这个问题占我脚本开发时间的30%左右!

环境常数

对于Tab字符,DotNet中的Environment.NewLine是否等效?