小编Bal*_*ldy的帖子

IN和而不是Linq to Entities(EF4.0)

这已经毁了我几天的生命,有时间问...

我正在为我的应用程序使用Entity Framework 4.0.

位置(如房屋或办公室)有一个或多个设施(如浴室,卧室,斯诺克台等).

我想在位置页面上显示一个复选框列表,其中包含设施的复选框列表,并检查该位置当前具有的列表.

我的设施模型就像这样......

public class FacilityViewItem
{
    public int Id { get; set; }
    public string Name { get; set; }
    public bool Checked { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

因此,当我将位置视图模型传递给UI时,我想传递List<T>其中T属于FacilityViewItem类型的设施.

为了获得该位置已经具有的设施很简单 - 我使用Location.Facilities进行查询,返回一个EntityCollection,其中T是Facility类型.这是因为设施是导航属性....

var facs = from f in location.Facilities
select new FacilityViewItem()
{
    Id = f.FacilityId,
    Name = f.Name,
    Checked = true
};
Run Code Online (Sandbox Code Playgroud)

所以这就是我的问题所在 - 我想要其他设施,那些位置没有.

我尝试过使用Except()和Any()和Contains(),但是我得到了同样的错误.

不起作用的查询示例......

var restOfFacilities = from f in ctx.Facilities
    where !hasFacilities.Contains(f)
    select new FacilityViewItem()
        {
            Id = …
Run Code Online (Sandbox Code Playgroud)

linq linq-to-entities entity-framework-4

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

Angular 4.x:没有服务提供者

我无法将服务注入Angular 4.x中的另一个服务并收到错误: Error: No provider for SkillsService!

我创建了一个repo来重现这个错误.您可以通过克隆repo本地运行它,只需ng test从repo根目录运行.

我采取的步骤......

  1. 使用创建应用 ng new
  2. 使用创建ContactService ng g service contact
  3. 使用创建SkillsService ng g service skills
  4. 将SkillsService添加到ContactService的构造函数(使用@Inject批注)
  5. 将SkillsService和ContactService作为提供者添加到app.module.ts
  6. 运行ng test并收到错误:Error: No provider for SkillsService!

如何为SkillsService的ContactService添加提供程序?

似乎它必须是非常简单的东西,但它很难从文档和搜索中解决.

angular-services angular

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

asmx web服务在.net 4.0中返回xml而不是json

我刚刚将我的网站的测试副本升级到asp.net 4.0并注意到一个奇怪的问题,只有在我将网站上传到我的服务器时才会出现.

该站点有一个返回json的asmx Web服务,但当我在我的服务器上运行该站点时,它返回xml.它已经在asp.net 3.5中运行了一年多.

webMethod用正确的属性装饰......

[WebMethod][ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public List<LocationRecentChange> RecentChanges()
Run Code Online (Sandbox Code Playgroud)

在我的本地机器上它返回json.

然而在服务器(Windows 2008 64位)上它返回xml.

使用firebug控制台,你会看到200 OK响应和一堆XML,在我的本地机器上返回的数据是我期望的JSON.

这是调用服务的JavaScript.

function loadRecentData() {
$.ajax({
    type: "POST",
    url: "service/spots.asmx/RecentChanges",
    data: "{}",
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: loadRecentUpdates,
    failure: function(msg) {
        //alert(msg);
    }
});
Run Code Online (Sandbox Code Playgroud)

}

欢迎任何建议,这让我难过!

c# jquery json web-services asp.net-4.0

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

在TFS 2010中分支并被迫重新下载代码

当我在TFS 2010中从主线创建分支时,我必须下载我刚刚分支的所有代码.

我的笔记本电脑上已经有最新的主线版本了,为什么TFS要求我有效地下载硬盘上已有的内容?

即使我将主线文件复制到一个文件夹并将新分支映射到该文件夹​​,它仍然执行完全递归获取并将我们的带宽扼杀30分钟左右.

这似乎是浪费时间和带宽 - 是他们的解决方法/程序,我不知道?

version-control tfs tfs2010

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

Azure源网站从源代码管理部署失败对nuget依赖性失败

Asp.Net v4 Webforms App依赖于Windows.Azure.Storage.如果我使用WebDeploy将其部署到Azure网站,这一切都可以正常工作.

现在我想在我的bitbucket repo中使用一个分支,让它从源代码控制中自动部署.

我设置了分支,将azure链接到它,然后触发部署.

但它失败了,这是在Azure日志中...

D:\ Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(1578,5):警告MSB3245:无法解析此引用.无法找到程序集"Microsoft.WindowsAzure.Storage,Version = 2.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35,processorArchitecture = MSIL".检查以确保磁盘上存在程序集.如果您的代码需要此引用,则可能会出现编译错误.[C:\ DWASFiles \网站\ KDB\VirtualDirectory0 \站点\库\ Pfv.Kdb.UI\Kdb.UI.csproj]

Nuget启用了包恢复,我检查了nuget.targets以确保将DownloadNugetExe条件设置为true.

为什么它没有引入nuget依赖?

bitbucket azure msdeploy nuget

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

在TFS源代码管理中使用编辑 - 合并 - 提交工作流程

我已经使用sourcegear vault和subversion/visual svn了很长一段时间,并且是CVS断开连接样式"编辑 - >合并 - >提交"使用源代码控制方式的忠实粉丝.

自从我们搬到TFS 2010后,我又被重新引入了可怕的"结账 - >编辑 - >签入"源安全风格的工作方式.意味着任何时候只有一个用户可以处理文件.

我找不到任何暗示可以改变的东西.

可能吗?

tfs tfs2010

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

如何在ASP MVC 5中使用MediatR和Autofac?

笔者提供了一个例子说明如何使用MediatR使用Autofac一个控制台应用程序:

var builder = new ContainerBuilder();
builder.RegisterSource(new ContravariantRegistrationSource());
builder.RegisterAssemblyTypes(typeof (IMediator).Assembly).AsImplementedInterfaces();
builder.RegisterAssemblyTypes(typeof (Ping).Assembly).AsImplementedInterfaces();
builder.RegisterInstance(Console.Out).As<TextWriter>();

var lazy = new Lazy<IServiceLocator>(() => new AutofacServiceLocator(builder.Build()));
var serviceLocatorProvider = new ServiceLocatorProvider(() => lazy.Value);
builder.RegisterInstance(serviceLocatorProvider);
Run Code Online (Sandbox Code Playgroud)

我拿了这个例子并尝试使用ASP MVC 5和Autofac.Mvc5包:

var builder = new ContainerBuilder();
builder.RegisterSource(new ContravariantRegistrationSource());
builder.RegisterAssemblyTypes(typeof(IMediator).Assembly).AsImplementedInterfaces();
builder.RegisterAssemblyTypes(typeof(AddPostCommand).Assembly).AsImplementedInterfaces();
builder.RegisterControllers(typeof(HomeController).Assembly);
var container = builder.Build();
var lazy = new Lazy<IServiceLocator>(() => new AutofacServiceLocator(container));
var serviceLocatorProvider = new ServiceLocatorProvider(() => lazy.Value);
builder.RegisterInstance(serviceLocatorProvider);
DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
Run Code Online (Sandbox Code Playgroud)

当我运行Web应用程序时,我得到一个错误页面,告诉我ServiceLocationProvider依赖项尚未注册.我究竟做错了什么?

怀疑这个问题是由于我调用 …

c# asp.net-mvc dependency-injection autofac mediatr

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

在控制台应用程序内通过ADFS进行静默身份验证

我有一个引用ADAL.net库的ac#控制台应用程序(Microsoft.IdentityModel.Clients.ActiveDirectory版本2.19.208020213)

控制台应用程序的目的是使用受ADFS保护的HTTP终结点。

ADFS auth的实现如下。

var uc = new UserCredential("user", "password");
var ctx = new AuthenticationContext("https://sts.example.com/adfs", false);
var token = ctx.AcquireToken(ClientResourceUri, ClientId, uc);
Run Code Online (Sandbox Code Playgroud)

对AcquireToken的调用引发异常...

' https://sts.example.com/adfs/ ' 不支持此方法重载

在不使用UserCredential对象的情况下调用AcquireToken,而是提供redirectUri可以工作,但是会引发一个对话框提示输入用户名和密码,这不适合,因为控制台应用程序将在非用户环境中执行...

var redirect = new Uri("https://example.com/arbitaryRedirect");
var token = ctx.AcquireToken(ClientResourceUri, ClientId, redirect);
//dialog is shown
Run Code Online (Sandbox Code Playgroud)

如果我切换到adal.net库的最新Alpha版本(3.6.212041202-alpha),该错误将更加明显...

MSIS9611:授权服务器不支持所请求的'grant_type'。授权服务器仅支持“ authorization_code”或“ refresh_token”作为授予类型。

但是,开采google的收益很少。

实际上可以针对ADFS进行静默身份验证吗?

我会基于基于其他帖子的回答而假设正确的方法是使用WsTrustChannelFactory来正确吗?

如果没有,最好的方法是什么?

adfs adal

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

使用Autofac传递NLog的声明类的类型

这个问题后,我希望autofac将声明对象的类型注入到我的NLog服务的构造函数中,以便它可以正确记录哪个类型是日志记录条目.

我的NLogService类看起来像这样......

public class NLogService : ILogService
{
    private readonly Logger _logger;

    public NLogService(Type t)
    {
        var consumerType = t.DeclaringType.FullName;
        _logger = LogManager.GetLogger(consumerType);
    }
Run Code Online (Sandbox Code Playgroud)

然而它在应用程序启动时失败,因为它显然无法解决注入NLogService的构造函数的内容,并出现以下错误...

可以使用可用的服务和参数调用在'MyProduct.Domain.Services.Logging.NLogService'类型上找到'公共绑定标志'的构造函数:无法解析构造函数'Void .ctor'的参数'System.Type t'(系统类型)'.

所以,我的问题是 - 如何指示autofac注入调用类的类型?

我试过这个......

public NLogService(Type t)
    {
        var method = MethodBase.GetCurrentMethod();
        Type consumingType = method.DeclaringType;
        var consumerType = consumingType.FullName;
        var consumerType = t.DeclaringType.FullName;
        _logger = LogManager.GetLogger(consumerType);
    }
Run Code Online (Sandbox Code Playgroud)

但我最终还是结束了 MyProduct.Domain.Services.Logging.NLogService

我想要的是进行实际日志记录的类的类型.

我已经尝试过这个建议,它对我也没有用.

dependency-injection nlog autofac

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

在 TFS 中移动分支

我们针对 Web 产品上开发的每个新功能进行分支,因此在 TFS 2010 中,文件夹结构看起来像这样......

$/Product/Mainline/...
$/Product/Branches/...
$/Product/Releases/...
$/Product/Merged Branches/...

Mainline 文件夹下只有 1 个解决方案,即“主干”。

分支包含作为开发中功能的主线分支。

合并的分支包含先前已合并回主线的分支。

Releases 包含了这一点——releases。合并到主线然后发布的分支。

一旦分支生命周期结束,我喜欢将它们存档在“合并分支”文件夹中,但是“移动”选项似乎永远不可用,它总是变灰。

来自 Vault 这是一种奇怪的行为,我总是可以移动 Vault 中的任何文件夹,无论我是否在本地拥有它。

此外,有时确实会出现这样的情况:如果该功能已被客户取消/搁置,我们会停止在某个分支上工作。显然分支的生命周期应该尽可能短,但这确实发生了并且能够移动分支似乎仍然是必要的。

我觉得我错过了有关工作区的一些东西?或者干脆你不打算移动分支,只需在它们合并到主线后删除它们。

有人经历过吗?或者对更好的实践有建议?

tfs

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

使用现有的自定义基础从HttpHandler访问Ninject Kernel.Get()

我有一个ASP.Net webforms应用程序,它使用Ninject 2.2.0.0

我有一个HTTPHandler,它继承自Microsoft.Web.ImageHandler类.

在其中我需要访问我创建的服务类的实例.

因为我不能从Ninject.Web.HttpHandlerBase继承我认为我只是将内核暴露为Global.asax类的属性...

protected override IKernel CreateKernel()
    {
        IKernel kernel = new StandardKernel(new DefaultModule());

        var sms = kernel.Get<SiteMapService>();
        SiteMapSvc = sms;
        Kernel = kernel;
        return kernel;

    }

    public IKernel Kernel
    {
        get; set;
    }
Run Code Online (Sandbox Code Playgroud)

并使用kernel.Get方法获取服务..

var global = (Global) HttpContext.Current.ApplicationInstance;

var service = global.Kernel.Get<PhotoService>();
Run Code Online (Sandbox Code Playgroud)

这失败了以下......

   [ArgumentNullException: Cannot be null
Parameter name: root]
   Ninject.ResolutionExtensions.GetResolutionIterator(IResolutionRoot root, Type service, Func`2 constraint, IEnumerable`1 parameters, Boolean isOptional, Boolean isUnique) in c:\Projects\Ninject\ninject\src\Ninject\Syntax\ResolutionExtensions.cs:258
   Ninject.ResolutionExtensions.Get(IResolutionRoot root, Type service, IParameter[] parameters) in c:\Projects\Ninject\ninject\src\Ninject\Syntax\ResolutionExtensions.cs:151
   Thumb.GenerateImage(NameValueCollection parameters) in …
Run Code Online (Sandbox Code Playgroud)

webforms ninject httphandler

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

绑定Ninject 3.0中的泛型类型

我希望Ninject为实现通用接口的特定程序集中的所有类型创建Bindings,而不是在运行时全部指定它们.有点像开放式仿制药在Autofac中的运作方式.

这就是我想出来的......

kernel.Bind(x => x.FromThisAssembly()
    .SelectAllClasses()
    .Where(t => t.IsAssignableFrom(
        typeof(ICommandHandler<>)))
        .BindAllInterfaces());
Run Code Online (Sandbox Code Playgroud)

调用下面的方法,我希望实现所有类型的数组,ICommandHandler<T>但它不产生任何...

public void Process<TCommand>(TCommand command) 
    where TCommand : ICommand
{
    var handlers = 
        _kernel.GetAll<ICommandHandler<TCommand>>();

    foreach(var handler in handlers)
    {
        handler.Handle(command);
    }
}
Run Code Online (Sandbox Code Playgroud)

有没有现成的方法来实现这一目标?或者我是否需要使用convention API自行推送?

这似乎是一种相当普遍的模式,并且想知道如果不编写自己的实现就可以实现这一点.

.net c# generics ninject ioc-container

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

UserManager.CreateAsync(用户,密码)陷入无限循环

我试图做一个非常简单的实现,IUserStore基本上:

  • 使用NHibernate
  • 将用户保存在单个表中(无索赔/登录)
  • 将角色名称存储在同一个表中的nvarchar列中('|'如果有多个项目,则为pipe()).

当我运行以下方法时:

[Fact]
public void Create_A_User()
{
    // _session is a valid NHibernate ISession object
    using (var userStore = new SimpleUserStore<SimpleIdentityUser>(_session))
    using (var userManager = new UserManager<SimpleIdentityUser>(userStore))
    {
        var user = new SimpleIdentityUser
        {
            UserName = "kenny_mccormick",
            RolesStr = "admin",
        };

        var createTask = userManager.CreateAsync(user, "the_password");

        var result = createTask.Result; // this never finishes...
    }
}
Run Code Online (Sandbox Code Playgroud)

最后一行永远不会完成执行.

奇怪的是,UserManager永远不会调用我的任何功能SimpleUserStore; 它在那之前就被卡住了.

以下是我定义的组件:

用户类:

public class SimpleIdentityUser : IUser
{
    public virtual …
Run Code Online (Sandbox Code Playgroud)

c# task-parallel-library async-await asp.net-identity

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