我正在试图弄清楚如何使用Simple Injector,我已经在项目周围使用它,没有注册简单服务及其组件的问题.
但是,我希望在具有两个以上实现接口的构造函数的组件时使用依赖注入器.
public DAL: IDAL
{
private Logger logger;
string _dbInstance;
public DAL()
{
logger = new Logger();
}
public DAL(string databaseInstance)
{
logger = new Logger();
_dbInstance = databaseInstance;
}
}
Run Code Online (Sandbox Code Playgroud)
以下是我注册服务的方式:
container.Register<IDAL, DAL>();
Run Code Online (Sandbox Code Playgroud)
运行代码,这是发生的错误:
要使容器能够创建DAL,它应该只包含一个公共构造函数,但它有2个.
删除构造函数后,下一个错误是它不允许我的构造函数接受参数.
DAL类型的构造函数包含String类型的参数'databaseInstance',它不能用于构造函数注入.
有什么方法我可以在类有2个以上的公共构造函数的情况下进行依赖注入吗?或者有一个接受参数的公共构造函数?
我在这里阅读文档:SimpleInjector(入门)
该文档开始易于理解,但它会呈指数级复杂,如果他们提到的后一个例子中的任何一个与我的问题有关,我就很难解读.
c# dependency-injection inversion-of-control constructor-injection simple-injector
我读了这篇文章http://www.asp.net/mvc/tutorials/mvc-4/bundling-and-minification,我觉得它中缺少很多内容.
我正在开发一个使用未经编辑的javascript文件的项目.然而,当我决定将我的项目发布到另一台服务器时,这就成了一个问题,其中bundle.config劫持了我的javascript文件,做了一些我从未知道我需要测试我的开发的东西,现在我的开发机器抛出各种各样的javascript错误.所以现在,我在这里,阅读bundle.config对min文件的作用.
阅读完文章后,我做了以下假设:
如果我将项目设置为调试模式,我的项目将获得所有不包含任何"min.js"文件的javascript文件.
如果我将项目设置为发布模式,我的项目将尝试获取所有min.js文件,如果没有min.js文件,则非min文件将转换为缩小版本.
基于这两个假设,事实证明我错了.切换到Release模式对min文件没有任何作用,它的作用方式与我的Debug模式相同.
其次,进入web.config并将以下内容设置为false(以前为true):
<compilation debug="false" />
Run Code Online (Sandbox Code Playgroud)
获取所有未缩小的文件并缩小它们,忽略我拥有的任何最小文件!我没有看到任何关于File.min.js的内容,我看到的就像是:"文件?v = dw-fikdksdm ..."这很好,因为这被认为是"捆绑"并且缩小了,但为什么我不能只看到我的分钟装?如果缩小和捆绑会引发javascript错误会怎样?那时我该怎么办?我可以阻止某些javascript文件不被包含在一个包中和/或缩小吗?
另外我注意到在尝试加载javascript资源时会发生一些403错误.
有人可以解释这里发生了什么以及为什么这违背了我原来的假设?
我一直在寻找一个使用jquery的滑动覆盖面板,它不会破坏我的bootstrap 3 css文件.但我找不到任何东西.我需要一个类似于表单,下拉菜单,可选网格,输入框等的面板.我在此菜单面板上执行的任何操作都将自动刷新内容面板; 但在我的情况下,它并不是真正的"菜单",它只是一个滑动或弹出窗口,你可以填写.
我搜索过这个网站:
http://designhuntr.com/15-slide-panel-jquery-plugins/
没有一个人能给我我想要的东西.我需要一个左侧的滑动面板,填充表格(如bootstrap手风琴,select2下拉).
第一个链接给出了我想要的内容,但渲染我的bootstrap css的内容却陷入了严重的冲突并且变得毫无用处.
我能找到的最完美的例子就在这里:
http://demos.jquerymobile.com/1.3.0-beta.1/docs/panels/#
单击叠加按钮时; 它在功能方面完全符合我的要求.
但是使用这个库也与bootstrap冲突.我尝试了5个不同的库,都以失败告终.似乎这样一个简单的想法本来可以有某种余地.
如果有人取得任何成功,我很乐意听到.否则我在这一点上都没有选择.
[编辑2014年6月17日]对我来说,一个重要的要求就是让一个保持静止的按钮,它不随滑动面板移动.每次用户滑出面板时,我都不希望用户移动按钮.我还需要为ie7 +存在此功能.我想要更多地控制什么是移动,想要滑动,效果,一切.不是完全100%完全幻灯片.
我在尝试决定接受我所拥有的项目的路线时遇到了问题.
我一直在阅读OWIN规范和.NET中的Katana实现.我之所以选择Katana路由,是因为与ADFS和令牌/ Cookie生成相关的owin组件.
我有两个项目,一个用于MVC 5网站,另一个用于Web API.它们将来可能会停留在两台独立的服务器上,但现在它们是相同的.
我知道我将使用IIS,所以我不需要调查Owin管道.
我的要求是将有使用ADFS登录的用户,以及将使用角色/成员资格提供程序使用令牌/ Cookie生成登录的其他用户.根据谁进行身份验证,我的网页的某些部分将被公开.网页工程师用剃须刀完成.
有没有人有任何我可以阅读的材料来帮助解释我可以采取的设计流程?或者任何人都做了一个类似于我正在经历的项目,可以添加任何建议?有很多不同的文件描述了我需要的特定事物,但不是大局; 比如只讨论WebAPI和ADFS,或WebAPI和windows azure等.
我的理论是在MVC5网站项目上实现认证/授权,在Web API上进行授权(两者之间需要以某种方式进行通信).然后,我可能为ADFS创建项目的副本,并为令牌/ cookie身份验证创建另一个副本?或者我可能需要进行4种不同的身份验证:2对于我在MVC5网站和Web API上进行身份验证的adfs,以及另外2次用于令牌/ cookie生成的身份验证.
任何建议都会有所帮助,因为我对这种技术不是很熟悉.
我几乎到处寻找,但我很难找到解决方案。我花了一周时间使用存储过程创建了一个非常复杂的计算查询,我想从这个查询中获取结果并将其放入 POCO 类中,类似于我在使用 EF 6 之前所做的。
基本上是这样的:
var p1 = new SqlParameter { ParameterName = "Param1", Value = 1 };
var p2 = new SqlParameter { ParameterName = "Param2", Value = 2 };
string query = "EXEC Calcs_Selections @Param1, @Param2";
var calcs = context.Database.SqlQuery<CalcViewPOCO>(query, p1, p2).ToList();
Run Code Online (Sandbox Code Playgroud)
我读过这里的文献:
没有 DbSet 的原始 SQL 查询 - Entity Framework Core
并发现 EF Core 中不再有“免费 sql”了。FromSQL 基本上将结果投影到在数据库中找到的真实实体中,我不想要它,因为我没有找到具有相同列的表。相反,一种解决方案是扩展 DBContext,并创建一个新的 DBSet
但我真的不知道如何做到这一点。我有一个数据库优先模型,并使用了 Scaffold-DbContext:
使用现有数据库在 ASP.NET Core 上使用 EF Core
我不想添加到自动创建的上下文中,在我的情况下是 …
使用的技术:
我一直在努力解决在单一解决方案中使用Web API项目和单独的Web站点项目的想法.
现在默认情况下,web api不允许跨源策略.所以我在我的Web API 2中使用了CORS,虽然我能够使它工作,它只适用于最新的浏览器; 我需要IE7到IE9的向后兼容性.
所以我玩了JSONP.我不喜欢缺乏对此的支持.我能够让它为我的Web API 2项目工作,但是如果我想使用BreezeCons,如果使用breezejs web api库则它不起作用.如果我想创建一个ODataController,它也不起作用.
所以我正在摆脱交叉原点共享的想法; 虽然希望将来有足够的支持jsonp,无论我使用BreezeJS WebAPI助手还是ODataControllers.
目前,我不知道如何将我的WebAPI项目和我的MVC 5网站放在我可以拥有的相同域中:
我是否必须在主机文件中进行一些配置?如果我想从VS2013运行我的项目,它是否能够在同一个域下运行两个项目..或者我是否必须继续手动更改浏览器中的URL?
所以我决定将我的simpleinjector版本升级到3.0,突然间我收到一条消息:
'SimpleInjector.Extensions.OpenGenericBatchRegistrationExtensions.RegisterManyForOpenGeneric(SimpleInjector.Container,System.Type,params System.Reflection.Assembly [])'已过时:'此扩展方法已被删除.请改用Container.Register(Type,IEnumerable).
文档中仍然有这个方法:
http://simpleinjector.readthedocs.org/en/latest/advanced.html
所以我很好奇,有什么替代方案:
container.RegisterManyForOpenGeneric(typeof(IEventHandler<>),
container.RegisterAll,
typeof(IEventHandler<>).Assembly);
Run Code Online (Sandbox Code Playgroud) 因此,我遵循了以下教程:
他们每个人都描述了为控制器启用EnableCors的方法,也可以按全局添加。
我遵循了所有这三个步骤中概述的步骤,在我的App_Start / WebApiConfig.cs文件中输入了以下内容:
public static void Register(HttpConfiguration config)
{
config.EnableCors();
config.Routes.MapHttpRoute(
name: "Default",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { controller = "", action = "Get" }
);
}
Run Code Online (Sandbox Code Playgroud)
在我的控制器中,我添加了:
[EnableCors(origins: "http://localhost:50247", headers: "*", methods: "*")]
public class TestController : ApiController
{ ... }
Run Code Online (Sandbox Code Playgroud)
但是当我去运行程序时,它给了我以下错误:
XMLHttpRequest无法加载http:// localhost:49705 / api / Test / GetTestData。所请求的资源上没有“ Access-Control-Allow-Origin”标头。因此,不允许访问源' http:// localhost:50247 '。
但是,当我在App_Start / WebApiConfig.cs中添加以下内容以使EnableCors遍及整个应用程序时:
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
var cors …Run Code Online (Sandbox Code Playgroud) 我正在看一个项目,我发现了一些非常好奇的东西.
有一个静态类,它有一组方法,每个方法都调用一个远程服务器.
该模板看起来像这样:
public static class DAI
public static ResponseObject ExecStatement(string db, string sql)
{
{ ... }
}
public static DataSetResponseObject GetDataSet(string db, string sql)
{
{ ... }
}
public static DataTableResponseObject GetDataTable(string db, string sql)
{
{ ... }
}
}
Run Code Online (Sandbox Code Playgroud)
但是项目中的任何地方都没有调用此类.相反,它调用非静态类容器.
public class ExecSP : IExecSP
{
string _db;
public ExecSP(string db)
{
_db = db;
}
public ResponseObject OutputAsResponseObject(string sql)
{
return DAI.ExecStatement(_db, sql);
}
public ResponseObject OutputAsDataSet(string sql)
{
return DAI.GetDataSet(_db, sql);
}
public …Run Code Online (Sandbox Code Playgroud) 我有一个需要解决的严重问题.
在VS2013中的服务器资源管理器中,我使用有效的用户和密码凭据建立了与数据库的连接.
所以我有一个名为Connect1的模式,它需要访问另一个名为Connect2的模式,这两个模式都在相同的数据源名称下:Dev1.我正在连接的用户称为Connect1,因此默认情况下我已连接到架构Connect1.我能够验证我是否具有此用户访问Connect2的访问权限.
使用ODP.NET托管驱动程序,我能够设置它.提供所有连接细节.
配置显示在此页面中:
使用适用于Visual Studio的Oracle Developer Tools
为了允许查看模式,我不得不更改Filters选项卡,并添加我正在使用的所有相关模式(添加Connect2).然后我点击更新,我就可以将这些表用到我的edmx文件中.
但是,当我关闭Visual Studios时会出现问题.我的过滤器丢失了,我的连接又恢复使用Connect1.
然后,这会在我的edmx文件中用一系列破坏我的表映射
错误11007:未映射实体类型"Table1"
这真是令人沮丧,因为我不得不一遍又一遍地重复相同的过程手动重新映射我的所有表.
当我从我的服务器资源管理器更新数据连接以包含第二个模式时,令人困惑的是.EF工作并检测表格; 但我的应用程序配置和连接字符串尚未更改.因此,这让我相信,如果我要将我的项目推广到生产或测试,它将会破坏,因为我的项目中没有任何内容可以显示需要Connect2.
entity-framework oracle11g .net-4.5 visual-studio-2013 odp.net-managed