小编Bla*_*ell的帖子

使用ASP.NET Core Web Application(.NET Core)和net461设置为唯一框架并使用(.NET Framework)模板之间的区别

随着.NET Core RC2的发布,Microsoft制作了它,现在有3个Web应用程序模板:

  • ASP.NET Web应用程序(.NET Framework) - 旧的
  • ASP.NET核心Web应用程序(.NET Framework) - 新的,仅在Windows上托管
  • ASP.NET核心Web应用程序(.NET核心) - Linux,OSX,Windows

我试图使用新的核心Web应用程序模板,但没有尝试针对Linux,OSX,Windows,所以看起来ASP.NET核心Web应用程序(.NET Framework)对我来说是完美的.我花了一段时间,但我了解到,为了添加一个可以使用这个项目类型的类库,你需要添加一个类库(.NET Core)并将框架部分更改为net461以匹配Web应用程序.

"frameworks": {
    "net461": { }
}
Run Code Online (Sandbox Code Playgroud)

我的问题:

创建ASP.NET核心Web应用程序(.NET核心)和在project.json之间有什么区别,使net461成为唯一的目标框架

只创建一个ASP.NET核心Web应用程序(.NET Framework)项目,默认情况下只包含net461.

还有其他不同之处,我不知道项目的发布方式等等吗?

.net c# asp.net asp.net-core

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

错误处理(将ex.Message发送到客户端)

我有一个ASP.NET Core 1.0 Web API应用程序,并尝试弄清楚如果我的控制器调用的函数错误输出异常消息到客户端.

我尝试了很多东西,但没有实现IActionResult.

我不明白为什么这不是人们需要的常见事情.如果真的没有解决方案可以有人告诉我为什么?

我确实看到了一些使用的文档HttpResponseException(HttpResponseMessage),但为了使用它,我必须安装compat shim.在Core 1.0中有没有新的方法来做这些事情?

这是我一直在尝试使用垫片,但它不起作用:

// GET: api/customers/{id}
[HttpGet("{id}", Name = "GetCustomer")]
public IActionResult GetById(int id)
{
    Customer c = _customersService.GetCustomerById(id);
    if (c == null)
    {
        var response = new HttpResponseMessage(HttpStatusCode.NotFound)
        {
            Content = new StringContent("Customer doesn't exist", System.Text.Encoding.UTF8, "text/plain"),
            StatusCode = HttpStatusCode.NotFound

        };

        throw new HttpResponseException(response);

        //return NotFound();
    }
    return new ObjectResult(c);
}
Run Code Online (Sandbox Code Playgroud)

HttpResponseException抛出时,我查看客户端,无法找到我在内容中发送任何内容的消息.

c# asp.net asp.net-web-api asp.net-core asp.net-core-1.0

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

AWS - 无法分离网络接口 - 您不得管理“ela-attach”附件

我做了 AWS mysfits 教程,我认为清理就像删除 Cloud Formation 堆栈一样简单。但是,项目未能删除,因此我尝试手动清理它们以协助删除 Cloud Formation 堆栈。

尝试分离网络接口时,我不断收到错误消息(我已登录到 root 帐户):

分离网络接口时出错:

eni-0047gfhfgh8ab0e: You are not allowed to manage 'ela-attach' attachments.
eni-0f4a46hgfha757e: You are not allowed to manage 'ela-attach' attachments.
Run Code Online (Sandbox Code Playgroud)

如果不删除这些,我将无法删除我的 VPC。

由于以下原因,整个堆栈无法删除:以下资源无法删除:[InternetGateway, PublicSubnetTwo, VPC, GatewayAttachement, PublicSubnetOne]。

amazon-ec2 amazon-web-services amazon-vpc

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

ASP.NET Core Web API模板中没有单独的用户帐户auth选项

关于为什么在最新的ASP.NET Core Web API模板中没有单独的用户帐户身份验证选项,我感到有点困惑.

是否仍然可以按照MVC模板的方式实现单个用户帐户,还是没有意义?

假设我正在创建一个独立的Web API,它将拥有访问具有AspNet Identity表的数据库的所有业务逻辑和数据层.我打算用MVC应用调用这个API.

我知道这样做的一种方法是使用个人用户帐户auth创建一个asp.net MVC应用程序,并使用controllers/api文件夹在MVC应用程序中构建API.但是,我不希望这样做,因为我希望API是它自己的独立项目,可以托管在完全不同的服务器上,并由多个应用程序访问,而不仅仅是MVC应用程序.

由于没有模板,有人可以引导我在正确的方向上进行身份验证通常如何工作吗?

asp.net asp.net-web-api asp.net-identity asp.net-core asp.net-core-webapi

27
推荐指数
2
解决办法
6758
查看次数

使用内置功能在MVC6中使用JQuery AJAX提交剃刀表单

我想知道是否有一种特定的方法在MVC6中使用jQuery AJAX提交表单,仍然使用ASP.NET MVC的Auto Binding功能.我相信其他版本的MVC你可以使用jquery.unobtrusive-ajax并简单地使用

@using (Ajax.BeginForm("SaveData", new AjaxOptions(){}
Run Code Online (Sandbox Code Playgroud)

由于MVC6有一些变化,我想知道新的推荐方法是什么,除了在提交表单时向服务器执行正常的AJAX帖子.这意味着我将手动获取每个输入字段的值,将它们转换为JSON并将它们发送到控制器,以便所有内容都绑定到ViewModel.

如果我将以下JavaScript用于AJAX,那么任何AJAX表单设置都可以吗?

$('form').submit(function () {
    $.ajax({
        type: "POST",
        url: "/Products/Create/",
        data: JSON.stringify(data),
        contentType: "application/json; charset=utf-8",
        dataType: "json"
    });
});
Run Code Online (Sandbox Code Playgroud)

javascript ajax asp.net-mvc jquery asp.net-core-mvc

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

使用IConfigurationRoot将应用程序的连接字符串传递到ASP.NET 5中的存储库类库

我有一个ASP.NET 5 MVC Web应用程序,在Startup.cs中我看到了公共属性

IConfigurationRoot Configuration 
Run Code Online (Sandbox Code Playgroud)

正在设定 builder.Build();

在整个MVC Web应用程序中,我可以做到

Startup.Configuration["Data:DefaultConnection:ConnectionString"]
Run Code Online (Sandbox Code Playgroud)

appsettings.json文件中获取conn字符串.

如何appsettings.json使用构造函数注入将ASP.NET 5 MVC中指定的连接字符串传递到我的存储库类库?

更新:
这是所有其他存储库继承的基本存储库(如您所见,我现在在这里有一个硬编码连接字符串):

public class BaseRepo
{
    public static string ConnectionString = "Server=MYSERVER;Database=MYDATABASE;Trusted_Connection=True;";

    public static SqlConnection GetOpenConnection()
    {
        var cs = ConnectionString;
        var connection = new SqlConnection(cs);
        connection.Open();
        return connection;
    }
}
Run Code Online (Sandbox Code Playgroud)

在我的appsettings.json文件中的asp.net 5 Web应用程序中,我有以下内容,相当于将连接字符串添加到.net 4.5 webapp中的web.config:

  "Data": {
    "DefaultConnection": {
      "ConnectionString": "Server=MYSERVER;Database=MYDATABASE;Trusted_Connection=True;"
    }
  }
Run Code Online (Sandbox Code Playgroud)

另外在我的asp.net 5 Web应用程序中,我的Startup.cs中有以下默认代码,它将站点配置加载到IConfigurationRoot类型的公共属性中:

 public IConfigurationRoot Configuration { get; set; }
// Class Constructor
        public Startup(IHostingEnvironment env)
        { …
Run Code Online (Sandbox Code Playgroud)

c# configuration asp.net-core-mvc asp.net-core

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

带有onclick事件集的Font-Awesome图标

我正在尝试使用以下font-awesome图标

<i class="fa fa-minus-circle"></i>
Run Code Online (Sandbox Code Playgroud)

作为我页面上列表中项目旁边的删除图标,如下所示:

Item 1  delete-icon
Item 2  delete-icon
Run Code Online (Sandbox Code Playgroud)

点击其中一个图标我需要运行一个JavaScript函数...

我应该用什么html元素包装图标?我注意到当我使用锚标签时它变成蓝色,当我使用按钮时它最终被包裹在一个按钮中.还有其他选择吗?

基本上我想这样做

<a onclick="Remove()"><i class="fa fa-minus-circle"></i></a>
Run Code Online (Sandbox Code Playgroud)

或这个

<button onclick="Remove()"><i class="fa fa-minus-circle"></i></button>
Run Code Online (Sandbox Code Playgroud)

但只有图标显示为没有修改.没有蓝色,没有包裹在按钮内.

html javascript css jquery font-awesome

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

在ASP.NET Core 1.0 MVC6中使用内置IoC配置AutoMapper 4.2

我试图找出在我的应用程序的Startup.cs文件中配置AutoMapper的正确方法,然后在我的应用程序中使用它.

我正在尝试使用这个文档,它解释了如何在没有旧的静态API的情况下仍然给AutoMapper一个静态的感觉.该示例使用StructureMap.

我想知道如何做类似的事情,但是在使用内置服务容器的Core 1.0应用程序中.

我假设在配置函数中我将配置AutoMapper,然后在ConfigureServices函数中我将其添加为瞬态.

我假设最后最干净,最正确的方法是使用依赖注入.这是我目前的尝试,但它不起作用:

Startup.cs

public IMapper Mapper { get; set; }
private MapperConfiguration MapperConfiguration { get; set; }
public void ConfigureServices(IServiceCollection services)
{
     services.AddTransient<IMapper, Mapper>();
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
    MapperConfiguration MapperConfiguration = new MapperConfiguration(cfg =>
    {
        cfg.CreateMap<Product, ProductViewModel>().ReverseMap();
    });

    Mapper = MapperConfiguration.CreateMapper();
}
Run Code Online (Sandbox Code Playgroud)

在我的控制器中:

private IMapper _mapper { get; set; }
// Constructor
public ProductsController(IMapper mapper)
{
    _mapper = mapper;
}

public IActionResult Create(ProductViewModel vm)
{
    Product product = …
Run Code Online (Sandbox Code Playgroud)

c# asp.net automapper asp.net-core-1.0

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

VS2017无法加载文件或程序集Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll或其依赖项之一

当试图打开旧的解决方案时,VS2017有一个旧的单元测试项目在构建时给我一个问题.

构建此测试项目时,我不断收到以下错误:

无法加载文件或程序集'file:/// C:\ Projects\MyProj\Test\DAL\UnitTestProj\Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll'或其依赖项之一.该系统找不到指定的文件.

我检查了项目的引用,它似乎是引用Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll.此外,没有代码错误.我怎么能弄清楚它是否是它无法找到的依赖项之一?

.net asp.net visual-studio vs-unit-testing-framework visual-studio-2017

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

ASP.NET 5中Global.json中项目部分的说明

我注意到在创建一个新的ASP.NET 5项目时,有一个对我来说完全有意义的src目录,因为我总是将所有解决方案的代码放在一个名为source的目录中.

我注意到有一个名为global.json的文件,默认情况下包含以下内容:

{
  "projects": [ "src", "test" ],
  "sdk": {
    "version": "1.0.0-rc1-update1"
  }
}
Run Code Online (Sandbox Code Playgroud)

我在ASP.NET 5文档中找到了以下内容: projects属性指定哪些文件夹包含解决方案的源代码.默认情况下,项目结构将源文件放在src文件夹中,允许将构建工件放置在同级文件夹中,从而更容易从源代码控制中排除这些内容.

但是,这是我想到的项目结构(在同一个解决方案中,它基本上是我想要的两个大型项目):

MySolution
    MySolutionProject1Src
        client
            p1.WebAPI
        business
            p1.Business
            p1.Model
        data
            p1.Repository
        test
            p1.BusinessTests
            p1.WebAPITests


    MySolutionProject2Src
        client
            p2.Web
        business
            p2.Business
            p2.Model
        data
            p2.Repository
        test
            p2.BusinessTests
Run Code Online (Sandbox Code Playgroud)

那么我会将global.json更新为以下内容吗?(每个父目录一个):

{
  "projects": [ "MySolutionProject1Src", "MySolutionProject2Src" ],
  "sdk": {
    "version": "1.0.0-rc1-update1"
  }
}
Run Code Online (Sandbox Code Playgroud)

或者应该是更像这样的东西(每个子目录一个):

{
  "projects": [ "MySolutionProject1Src/client", "MySolutionProject1Src/business", "MySolutionProject1Src/data" "MySolutionProject1Src/test", "MySolutionProject2Src/client", "MySolutionProject2Src/business", "MySolutionProject2Src/data" "MySolutionProject2Src/test" ],
  "sdk": {
    "version": "1.0.0-rc1-update1"
  }
}
Run Code Online (Sandbox Code Playgroud)

或者我应该只是将其保留为"src"并将所有内容作为子文件夹放在src下面.

我假设我可以创建我想要的任何解决方案结构,但我关注的是更新global.json项目部分以匹配它时要遵循的规则.根据文档,它表示将为global.json中指定的每个路径创建一个artifacts文件夹.所以我想知道我是否需要为解决方案中的每个项目创建一个工件文件夹,或者只是外部的一个大项目.

c# asp.net asp.net-core-mvc asp.net-core

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