小编ana*_*der的帖子

无法加载文件或程序集System.Net.Http版本4.1.1.0

我正在将Net Framework 4 dll移植到Net Core.当移植我的单元测试项目时,我得到一个运行一些特定测试的异常(不是全部).

System.IO.FileLoadException:无法加载文件或程序集'System.Net.Http,Version = 4.1.1.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'或其依赖项之一.定位的程序集的清单定义与程序集引用不匹配.(HRESULT异常:0x80131040)

这是我的dll的project.json

 {
  "version": "1.0.0-*",

  "dependencies": {
    "log4net": "2.0.7",
    "NETStandard.Library": "1.6.1",
    "Newtonsoft.Json": "9.0.1",
    "StackExchange.Redis": "1.2.1"
  },

  "frameworks": {
    "netstandard1.6": {
      "imports": "dnxcore50"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

这是单元测试项目的Packages.config

<packages>
  <package id="Castle.Core" version="4.0.0" targetFramework="net462" />
  <package id="log4net" version="2.0.7" targetFramework="net462" />
  <package id="Microsoft.Win32.Primitives" version="4.0.1" targetFramework="net462" />
  <package id="Moq" version="4.7.1" targetFramework="net462" />
  <package id="Newtonsoft.Json" version="9.0.1" targetFramework="net462" />
  <package id="StackExchange.Redis" version="1.2.1" targetFramework="net462" />
  <package id="System.Diagnostics.DiagnosticSource" version="4.0.0" targetFramework="net462" />
  <package id="System.IO" version="4.1.0" targetFramework="net462" />
  <package id="System.IO.FileSystem" …
Run Code Online (Sandbox Code Playgroud)

.net c# porting .net-framework-version .net-core

34
推荐指数
4
解决办法
3万
查看次数

Autofac属性注入在属性上失败

我已经找到了一些问题,但是他们倾向于指出我正在遵循的确切文档......但它仍然没有用.

我正在构建一个相当简单的ASP.NET MVC 4站点,计划是使用ActionFilterAttribute基于日志的.我有一个DataAccessProvider类打开与数据库的事务并提供工作单元实例,我试图将它注入filter属性.

文件说,这是不够的,只是打电话RegisterFilterProvider(),并确保相关类型注册.它明确表示没有必要注册属性,但我已经尝试了有无.我的代码目前看起来像这样:

var builder = new ContainerBuilder();
builder.RegisterControllers(Assembly.GetExecutingAssembly());

builder.Register(x => new EntityAccessProvider())
    .As<IDataAccessProvider>()
    .InstancePerHttpRequest();

builder.RegisterType<DebugLogAttribute>().PropertiesAutowired();
// ^ I've tried it with and without this line

builder.RegisterFilterProvider();
var container = builder.Build();

DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
Run Code Online (Sandbox Code Playgroud)

然后,文档中的示例只是在过滤器上放置一个属性,所以我做了同样的事情:

public class DebugLogAttribute : ActionFilterAttribute
{
    private IDataAccessProvider DataAccess { get; set; }

    public override void OnActionExecuting(ActionExecutingContext filterContext) { ... }
    public override void OnActionExecuted(ActionExecutedContext filterContext) { ... }
}
Run Code Online (Sandbox Code Playgroud)

文档说这一切都是必需的 - 甚至不是注入的构造函数; 这是通过注入财产来完成的.但是,当我运行此代码时,该DataAccess属性始终是 …

c# autofac actionfilterattribute asp.net-mvc-4

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

将私有Nuget包源添加到Visual Studio Online

我有一个私有的NuGet包源运行,我用它来共享我的项目之间的某些功能和扩展.它在Visual Studio中运行良好,但最近我开始为Visual Studio Online上的一个项目设置持续集成构建,似乎VSO无法看到我的私有源.

我正在使用新的包恢复方法 - 涉及在VS选项中设置"允许NuGet下载丢失的包"复选框.我没有在解决方案上下文菜单中使用"启用NuGet包恢复"选项,因为这实际上是执行此操作的旧方法并导致其他地方出现问题.

我也没做任何修改我的项目文件的事情; 我正在使用自定义构建定义(使用XAML Workflow的东西),这样我就可以将它应用到我的任何项目中,只需从构建定义编辑器下的"构建过程模板"下拉列表中选择它.我这样做是因为我正在添加各种其他步骤,包括一些后期构建脚本,以便于自动部署到托管服务器; 其中一些步骤有点复杂,因此将它们保留在构建过程中意味着我只需要设置一次.

因此,如果不使用将nuget.exe放入解决方案文件夹的旧上下文菜单解决方案,并且不会弄乱项目本身,我如何才能获得VSO的构建以从我的私有源恢复包?

构建工作流模板有一个活动"NuGetRestore",它可以获取命令行参数.我添加了以下内容:

"-source https://www.nuget.org/api/v2/ http://www.example.com/nuget"
Run Code Online (Sandbox Code Playgroud)

但这似乎没有什么区别.此活动还有一个"指定需要恢复其NuGet包的解决方案"的字段,我只是将ProjectsToBuild其设置为定义构建时设置的变量.我没有从nuget.exe得到任何错误(至少,我没有看到),但构建失败.有趣的是,它表示相关的命名空间不存在,而不是无法解析引用.有任何想法吗?

build-definition nuget nuget-package-restore azure-devops

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

Linq to SQL,InsertOnSubmit vs. InsertAllOnSubmit性能?

两者之间的性能是否存在巨大差异,例如我有这两个代码片段:

public void Insert(IEnumerable<ManageGeofenceViewModel> geofences)
{
    var insertGeofences = new List<Geofence>();

    foreach(var geofence in geofences)
    {
        Geofence insertGeofence = new Geofence
        {
            name = geofence.Name,
            radius = geofence.Meters,
            latitude = geofence.Latitude,
            longitude = geofence.Longitude,
            custom_point_type_id = geofence.CategoryID
        };

        insertGeofences.Add(insertGeofence);

    }

    this.context.Geofences.InsertAllOnSubmit(insertGeofences);
    this.context.SubmitChanges();
}
Run Code Online (Sandbox Code Playgroud)

VS

public void Insert(IEnumerable<ManageGeofenceViewModel> geofences)
{
    foreach(var geofence in geofences)
    {
        Geofence insertGeofence = new Geofence
        {
            name = geofence.Name,
            radius = geofence.Meters,
            latitude = geofence.Latitude,
            longitude = geofence.Longitude,
            custom_point_type_id = geofence.CategoryID
        };
        this.context.Geofences.InsertOnSubmit(insertGeofence);
    }
    this.context.SubmitChanges();
} …
Run Code Online (Sandbox Code Playgroud)

c# sql linq linq-to-sql

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

MVC5中的授权/角色

我在MVC5(VS2013)中使用授权/角色时遇到了麻烦.

身份验证几乎可以开箱即用(也就是说只需使用Visual Studio创建默认的MVC项目).我将DefaultConnection连接字符串更改为有效(但不存在)的数据库.然后我注册一个新的用户和数据库被自动创建,以表,如AspNetUsersAspNetRoles.

但是,我似乎无法对角色做任何事情.要做的第一件事似乎是使用C#代码添加角色,例如:

Roles.CreateRole("Admin");
Run Code Online (Sandbox Code Playgroud)

我收到一条消息的异常:

"尚未启用角色管理器功能."

我在web.config中使用以下命令启用它:

<roleManager enabled="true"/>
Run Code Online (Sandbox Code Playgroud)

现在得到例外:

"无法连接到SQL Server数据库."

这曾经非常容易使用System.Web.Security.SqlRoleProvider,但不适用于MVC5默认的新提供程序.关于这一点有很多非常复杂的文章,但在我看来,它是如此必要和直接的东西,必须有一个简单的方法来使它工作.

非常感谢任何帮助.

c# asp.net-mvc-5 role-manager

6
推荐指数
2
解决办法
5631
查看次数

将多个 Web.config 部分移动到同一个单独的文件

在 ASP.NET MVC 4 中,我知道您可以通过将configSource这些部分的属性指向相关文件来将 Web.config 文件的部分移动到其他文件。我也知道您可以appSettings通过使用file属性指向正确的文件来更多的部分。但是,据我所知,这些方法将您限制为每个文件的一个部分。

我想要做的是将最终用户可以编辑的所有设置移动到一个文件中,以便我们可以告诉用户这个文件可以被调整,但任何其他.config文件都应该单独保留。不幸的是,如果我将(例如)appSettingsconnectionStrings部分移动到同一个文件,我会收到错误消息。

  • 如果我将它们直接放入文件中,则会收到有关具有多个根 XML 元素的错误。很公平。
  • 如果我<configuration>像在主 Web.config 文件中那样用标签包装这些部分,我会收到一条错误消息,指出“configSource 文件的格式必须是包含该部分名称的元素”,这表明每个部分的限制文件相当严格。

有没有解决的办法?我可以将多个部分放在一个文件中吗?

web-config asp.net-mvc-4

5
推荐指数
0
解决办法
554
查看次数

字典<X,Func <Y >>从其中的Func <>访问包含的Dictionary

这有点奇怪.

我正在构建一个Web应用程序,我正在整理一个简单的工厂模式,以处理一些对象实例化.我不喜欢丑陋的开关盒块,所以我倾向于这样做:

public enum Option
{
    Option1,
    Option2,
    Option3
}

public Dictionary<Option, Func<MyBaseClass>> OptionMapping 
   = new Dictionary<Option, Func<MyBaseClass>>
{
    { Option1, () => new DerivedClassOne() },
    { Option2, () => new DerivedClassTwo() },
    { Option3, () => new DerivedClassThree() }
};
Run Code Online (Sandbox Code Playgroud)

然后开关块变为MyBaseClass selectedThing = OptionMapping[currentOption]();.

在我编写这段代码时,我想到如果你遇到过两个选项需要相同动作的情况,你最终会Func<>在两个地方找到相同的结果,我宁愿避免.假设目前你不能只重构一些逻辑来将这两个选项合并为一个,我想知道是否有办法让一个Func人调用另一个.

我的第一个想法是:

public Dictionary<Option, Func<MyBaseClass>> OptionMapping 
   = new Dictionary<Option, Func<MyBaseClass>>
{
    { Option1, () => new DerivedClassOne() },
    { Option2, () => new DerivedClassTwo() },
    { Option3, () => …
Run Code Online (Sandbox Code Playgroud)

c# dictionary this

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

反序列化具有不同类型的JSON数组

我是JSON.NET的新手,我需要帮助反序列化以下JSON

{
   "items": [
      [10, "file1", "command 1"],
      [20, "file2", "command 2"],
      [30, "file3", "command 3"]
   ]
}
Run Code Online (Sandbox Code Playgroud)

对此

IList<Item> Items {get; set;}

class Item
{
   public int    Id      {get; set}
   public string File    {get; set}
   public string Command {get; set}
}
Run Code Online (Sandbox Code Playgroud)

JSON中的内容始终是相同的顺序。

c# json.net

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

在kivy中将文本与ScrollView中的Label边缘对齐

我试图使标签水平滚动,并希望halign:"rightvalign:middle按照下面的代码

ScrollView:

  Label:    
    id:maindisplay
    text:"0"
    font_size:"50sp"
    text_size: None ,self.height[1] #  Set the text wrap box height
    size_hint_x:None
    width: self.texture_size[0]

#Following part is not working
    halign: 'right'
    valign: 'middle'
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

python android label scroll kivy

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

在HTML中渲染任意JSON

我正在编写一个数据查看器页面来渲染从服务器以JSON格式发送的对象.JSON对象的内容和复杂性各不相同,从具有少量属性的扁平对象到具有多层嵌套和数组字段的较大结构.我想做的是渲染对象的简单表示,可能是ul.从那里我可以添加东西以允许可点击的展开/折叠行为或其他东西.

我知道这将需要一个我可以在顶层调用的递归函数,然后将为它发现的每个嵌套级别再次调用它.我对Javascript不太自信,而且我对它的了解并不是很远.我也不知道我不知道属性名称的事实 - 不同的对象将具有不同的属性,具有不同的名称.

是否有一种相对简单的方法来渲染这样的对象,还是我必须改变服务器发送的JSON的形式?

编辑:JSON的样本可能无济于事; 他们变化很大.就像我说的,有些很简单,有些很复杂.最简单的对象是这样的:

{
    "id": "5",
    "category": "12",
    "created": "25-Sep-2012"
}
Run Code Online (Sandbox Code Playgroud)

而我目前最复杂的是这样的:

{
   "Attempted":"EditUser",
   "Exception":{
      "Message":"Something",
      "TargetSite":"somewhere",
      "Inner Exception":{
         "Message":"Something else",
         "TargetSite":"somewhere.core",
             "Inner Exception":{
            "Message":"Another message",
            "TargetSite":"something.core.subr",
            "Inner Exception":{
               "Message":"Object reference not set to an instance of an object.",
               "TargetSite":"System.Web.Mvc.ActionResult Update(Int32, System.String, System.String)",
               "StackTrace":[
                  "at Application.Controllers.AdminController.Update(Int32 id, String email, String password) in c:\\Docs\\Apps\\Main\\MyBranch\\Source\\Application\\Application\\Controllers\\AdminController.cs:line 123"
               ],
               "Inner Exception":{

               }
            }
         }
      }
   },
   "details":{
      "userEmail":"test@email.com",
      "userId":"25",
      "userRole":"User"
   }
}
Run Code Online (Sandbox Code Playgroud)

如您所见,它是错误日志的JSON表示,包括软件抛出的异常(敏感细节已被遮盖).JSON对象是从审计日志的"详细信息"字段生成的,因此将来可能会记录其他事件,其详细信息格式与我现在预测的任何格式不同,这就是为什么我要处理任意JSON而不依赖于了解格式.

html javascript json

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