没有数据库提供程序配置EF7

使用Entity Framework 7和MVC6时,我似乎收到此错误消息 System.InvalidOperationException未配置任何数据库提供程序。 在设置服务时,通过在DbContext类或AddDbContext方法中覆盖OnConfiguring来配置数据库提供程序。 我相信我已经做了我应该做的一切,所以也许它是一个错误。 我使用的是Entity Framework的7.0.0-beta7版本。 我已经设置了我的DbContext,一个接口,所以我可以模拟DbContext(在EntityFramework 6中需要进行unit testing)。 我的服务将接口作为构造函数,我在MVC 6中设置了DI。 在我的Startup.cs文件中,我有以下内容 public void ConfigureServices(IServiceCollection services) { // entity framework services.AddEntityFramework() .AddSqlServer() .AddDbContext(options => options.UseSqlServer(Configuration[“Data:MyConnection:ConnectionString”]) ); // Add MVC services to the services container. services.AddMvc(); // new context on each request services.AddScoped(); } 我已经检查了我的connectionString,并且返回了一个有效的连接。 我还检查了我的服务,正在注入该对象,并且它不是null,因此应该全部工作。 我的config.json文件看起来像这样 { “Data”: { “MyConnection”: { “ConnectionString”: “Server=(local);Database=XXXX;Trusted_Connection=True;” […]

如何转义要在OData查询中使用的单引号?

我正在使用OData来查询我的数据库。 当“adapterName”只包含文本时,以下代码行正常工作。 ds.query(‘/DataAdapters?$filter=Name eq \” + adapterName + ‘\”, ifmgr_CreateAdapter_Step1, onGenericFailure, ”); 如果“adapterName”包含单引号则失败。 我尝试使用以下代码转义单引号: adapterName = adapterName.replace(/\’/g, ‘\\\”); 虽然这正确地逃避了用户定义的文本,但该函数仍然失败。 谁能告诉我查询中文本的正确格式是什么?

前置于C#数组

给定C#中填充的byte[] values ,我想将值(byte)0x00到数组中。 我假设这将需要创建一个新数组并添加旧数组的内容。 速度是我的应用程序的一个重要方面。 做这个的最好方式是什么? – 编辑 – byte[]用于存储DSA(数字签名算法)参数。 每个arrays只需执行一次操作,但速度很重要,因为我可能在许多不同的byte[]上执行此操作。

只能在Type.IsGenericParameter为true的Type上调用方法

我在一个例程上得到这个错误,该例程使用reflection来转储一些对象属性,类似下面的代码。 MemberInfo[] members = obj.GetType().GetMembers(BindingFlags.Public | BindingFlags.Instance) ; foreach (MemberInfo m in members) { PropertyInfo p = m as PropertyInfo; if (p != null) { object po = p.GetValue(obj, null); … } } 实际错误是“调用目标已抛出exception”,内部exception为“只能在Type.IsGenericParameter为true的Type上调用Method”。 在调试器obj的这个阶段出现 {Name = “SqlConnection” FullName = “System.Data.SqlClient.SqlConnection”} 使用System.RuntimeType类型 方法m是{System.Reflection.MethodBase DeclaringMethod} 请注意,obj的类型为System.RuntimeType,成员包含188个项目,而简单的typeof(System.Data.SqlClient.SqlConnection).GetMembers(System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance)仅返回65。 我尝试在obj和p.PropertyType上检查isGenericParameter,但对于大多数属性(包括p.GetValue工作的那些属性),这似乎都是错误的。 那么究竟什么是“Type.IsGenericParameter为真的类型”,更重要的是如何在没有try / catch的情况下避免这个错误?

Json.NET StringEnumConverter无法按预期工作

我正在尝试使用Json.NET和System.Net.Http.HttpClient来发送带有枚举属性的对象,但是枚举总是被序列化为整数值而不是等效的字符串。 我试过按照这里的说明: http://james.newtonking.com/archive/2013/05/08/json-net-5-0-release-5-defaultsettings-and-extension-data 通过将一个StringEnumConverter实例添加到JsonSerializerSettings并尝试使用[JsonProperty(ItemConverterType = typeof(StringEnumConverter))]来装饰枚举属性,这两个似乎都不适用于我的示例。 我正在使用Json.NET版本5.0.8 谁能告诉我,我做错了什么? 以下是要复制的示例控制台应用程序,同时显示全局序列化程序设置和修饰属性: 谢谢。 using System; using System.Net.Http; using Newtonsoft.Json; using Newtonsoft.Json.Converters; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { HttpClient client = new HttpClient { BaseAddress = new Uri(“http://test-uri.com”) }; JsonConvert.DefaultSettings = (() => { var settings = new JsonSerializerSettings(); settings.Converters.Add(new StringEnumConverter()); return settings; }); […]

正确的.NET方式来实现单个实例应用程序

我已经在StackOverflow上看到至少三种不同的方法来实现这一点。 使用MUTEX: 接受此SO问题的答案 使用Microsoft.VisualBasic库的WindowsFormsApplicationBase: 对此SO问题的第二高投票答案 使用Process.GetProcessNames检查您的应用程序是否正在运行: 此处的方法是作为此SO问题的答案发布的 我相信还有更多方法可以做到这一点。 我只是想知道其中一个是否是首选的,如果我选择“错误的”,可能会产生什么后果。

ASP.NET Web API – 没有“MediaTypeFormatter”可用于读取“Int32”类型的对象

我不完全确定这里发生了什么。 我可能在某个地方弄乱了,但我不知道是什么。 我的API控制器方法如下所示: public HttpResponseMessage Put(int id) 我也试过一个字符串也有同样的错误。 有任何想法吗? 谢谢。 编辑:要清楚 – id是路由参数。 请求的主体是JSON。 如果我删除route参数,该方法将正常运行。

跨多个子域的URL路由

我发现自己处境艰难。 我们正在开发一个ASP.NET MVC 2应用程序,它由多个部分组成。 设计目标是让这些部分跨越多个子域。 每个子域都有自己的控制器。 挑战在于我们的托管服务提供商的控制面板允许对子域进行两种forms的重定向,而且这两种forms都不符合要求。 选择是: 重定向到URL。 选择是否重定向到相对于请求URL的确切目的地或目的地。 重定向到我的主机空间中的特定文件夹。 我将尝试说明预期的行为。 假设默认路由是{controller}/{action}/{id} ,我希望URL http://subdomain.welcome.com/a/b由MVC应用程序处理,如http://welcome.com/subdomain/a/b 。 URL重定向可以解决此问题,除了用户在浏览器中看到URL更改的事实。 我们不希望客户端看到重定向发生。 重定向到我们的MVC应用程序根文件夹根本不起作用。 该应用程序不会接收请求,IIS会传回4xx错误。 编辑: 为了找到答案,我会简化一下。 “重定向到URL”不能执行我想要的操作,因此会重定向到文件夹。 如果我将子域重定向到我的MVC应用程序的根文件夹并且IIS不会接收请求,这是IIS或我的提供商的限制吗?

Web API中的MVC-6与MVC-5 BearerAuthentication

我有一个Web API项目,使用UseJwtBearerAuthentication到我的身份服务器。 启动时的配置方法如下所示: public void Configure(IApplicationBuilder app, IHostingEnvironment env) { app.UseJwtBearerAuthentication(options => { options.AutomaticAuthentication = true; options.Authority = “http://localhost:54540/”; options.Audience = “http://localhost:54540/”; }); // Configure the HTTP request pipeline. app.UseStaticFiles(); // Add MVC to the request pipeline. app.UseMvc(); } 这是有效的,我想在MVC5项目中做同样的事情。 我试着这样做: Web api: public class SecuredController : ApiController { [HttpGet] [Authorize] public IEnumerable<Tuple> Get() { […]

发布错误:无法加载文件或程序集“Microsoft.Web.XmlTransform”,Version = 1.4.0.0,Culture = neutral等等或其依赖项之一

我想发布一个MVC项目,我不断收到此错误: System.IO.FileNotFoundException:无法加载文件或程序集“Microsoft.Web.XmlTransform”,Version = 1.4.0.0,Culture = neutral,PublicKeyToken = …或其依赖项之一。 该系统找不到指定的文件。 我搜索并尝试在SO或MSDN上找到的一些解决方案无济于事。 我真的很想要一些建议。 该项目之前已成功发布,但在尝试重新发布我的更新版本后,这个问题突然出现了。