小编Joe*_*tte的帖子

Netcore 2.1.1版本导致应用程序无法运行

似乎突然出现了一些与asp.net核心软件包不同步的东西.

它看起来像Microsoft.AspNetCore.App 2.1.116小时前在nuget.org上发布,但只有158次下载,显然我是其中一个下载程序.

我的.csproj文件是这样的:

<Project Sdk="Microsoft.NET.Sdk.Web">
  <PropertyGroup>
    <TargetFramework>netcoreapp2.1</TargetFramework>
  </PropertyGroup>
  <ItemGroup>
    <ProjectReference Include="..\cloudscribe.Web.Navigation\cloudscribe.Web.Navigation.csproj" />
    <ProjectReference Include="..\cloudscribe.Web.SiteMap\cloudscribe.Web.SiteMap.csproj" />
    <ProjectReference Include="..\cloudscribe.Web.SiteMap.FromNavigation\cloudscribe.Web.SiteMap.FromNavigation.csproj" />
  </ItemGroup>
  <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore.App" Version="2.1.*" />
    <PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="2.1.*" />
  </ItemGroup>
</Project>
Run Code Online (Sandbox Code Playgroud)

它构建但是当我尝试运行它时,我得到:

无法找到任何兼容的框架版本未找到指定的框架"Microsoft.AspNetCore.App",版本"2.1.1".- 检查应用程序依赖性并定位安装在以下位置的框架版本:C:\ Program Files\dotnet\ - 安装.NET Core先决条件可能有助于解决此问题:http://go.microsoft.com/fwlink/? LinkID = 798306&clcid = 0x409 - 可以从 以下位置安装.NET Core框架和SDK: https://aka.ms/dotnet-download - 安装了以下版本:2.1.0 at [C:\ Program Files\dotnet\shared\Microsoft.AspNetCore. APP]

如果我将Microsoft.AspNetCore.App的版本更改为2.1.0并执行dotnet还原,我会得到:

C:_c\cloudscribe.Web.Navigation\src\NavigationDemo.Web\NavigationDemo.Web.csproj:错误NU1107:检测到Microsoft.AspNetCore.Antiforgery的版本冲突.直接从项目引用包以解决此问题.C:_c\cloudscribe.Web.Navigation\src\NavigationDemo.Web\NavigationDemo.Web.csproj:错误NU1107:NavigationDemo.Web - > cloudscribe.Web.Navigation - > Microsoft.AspNetCore.Mvc.Razor 2.1.1 - > Microsoft .AspNetCore.Mvc.ViewFeatures 2.1.1 - > …

asp.net-core

19
推荐指数
2
解决办法
9803
查看次数

ASP.NET 5 MVC 6中的TagBuilder InnerHtml

在我看来,从beta7开始,TagBuilder发生了重大变化,在公告回购中没有提到它们.

具体来说.ToString不再呈现tagbuilder,它只返回类型的名称.以前我们可以在HtmlHelper扩展中做这样的事情来构建嵌套的html元素:

var li = new TagBuilder("li");
li.AddCssClass("inactive");
var span = new TagBuilder("span");
span.SetInnerText(somestring);
li.InnerHtml = span.ToString();
Run Code Online (Sandbox Code Playgroud)

.InnerHtml现在不再接受字符串,因为它现在是IHtmlContent

但由于.ToString()不呈现标记,因此它不起作用:

li.InnerHtml = new HtmlString(span.ToString())
Run Code Online (Sandbox Code Playgroud)

它只是呈现为"Microsoft.AspNet.Mvc.Rendering.TagBuilder",类型的名称.

我没有在TagBuilder上看到任何新方法来提供所需的功能.我错过了什么?我现在如何使用TagBuilder构建复杂的嵌套html?

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

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

在asp.net 5中是否可以在approot中存储和读取自定义文件而不是wwwroot?

当您部署asp.net5/mvc6应用程序时,有一个wwwroot文件夹,其中包含css,js,images等Web资源,并且有一个包和源代码所属的approot文件夹.例如,Microsoft.Framework.Configuration命名空间中的类似乎必须能够从下面的approot读取文件,因为这是config.json文件所在的位置.

我想知道的是,是否可以在Approot中存储和读取我自己的自定义文件?如果是这样怎么样?

例如,我没有使用实体框架,所以我需要一个地方放置sql安装和升级脚本,并且不希望将它们放在wwwroot下面.我也有导航站点地图等自定义配置文件,如果可以将它们放在别处,例如approot,我宁愿不放在wwwroot下面.

我知道我可以使用IHostingEnvironment env.MapPath("〜/ somefileinwwwrootfoilder.json")访问wwwroot下面的文件

有没有类似的方法来访问approot下的文件?

asp.net-core-mvc asp.net-core

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

visual studio code 1无法使用xrdp在ubuntu上启动

我在ubuntu 14.4 LTS上安装了vscode 1.0.如果我使用unity桌面本地登录并在终端中键入"code"命令,它可以正常工作.

但是,当我进入盒子时,我必须使用xfce4桌面,因为xrdp显然不能与单位一起使用,当我尝试从命令行启动它时,我在终端中没有出现任何错误,但UI从未出现过.

我以前安装了旧版本的vscode,并且在安装1.0之前没有卸载它,以防这可能是一个因素.

当我输入

code --version
Run Code Online (Sandbox Code Playgroud)

它正确报告1.0.0

有谁有任何想法来解决这个问题?我真的希望能够使用我的Windows 10机器上的rdp工作

更新:这个问题似乎只发生在使用rdp,如果我在本地使用xfce4登录,它就像在Unity桌面一样工作.我的ubuntu盒子是带有最新BIOS的intel nuc5ppyh,我想也许代码是在不可见的显示输出上启动的.以前这个盒子被配置为镜像到hdmi输出,我使用它也连接到电视.我已经尝试从bios中禁用hdmi输出并使用xrandr搞乱,但仍然无法使其在rdp上运行.我不是Linux专家,但仍然认为它可能实际上是在不可见的显示输出中加载代码但不确定如何解决问题

ubuntu xrdp visual-studio-code

9
推荐指数
2
解决办法
9311
查看次数

ASP.NET 5中是否有缓存模式的指导

在ASP.NET 5中,我们有两个用于缓存IDistributedCache和IMemoryCache的接口,然后我们还有LocalCache,它是IDistributedCache的一个实现,它在内部使用MemoryCache.

IMemoryCache似乎有我习惯的api,你放入一个任何类型的对象,你得到一个可以回放到原始类型的对象.使用MemoryCache时我认为不涉及序列化,对象只是直接存储在内存中,这就是api更简单的原因.

IDistibutedCache似乎就像我们应该用来开发可扩展的云应用程序,但它有一个不太吸引人的api,因为我们传入一个字节数组并返回一个字节数组.在这种情况下,对象必须是可序列化的,我们必须自己序列化它们,以便将它们放入缓存中并在检索后反序列化它们,例如在此代码片段中:

public async Task<TreeNode<NavigationNode>> GetTree()
{
    if (rootNode == null)
    {
        await cache.ConnectAsync();
        byte[] bytes = await cache.GetAsync(cacheKey);
        if (bytes != null)
        {
            string json = Encoding.UTF8.GetString(bytes);
            rootNode = BuildTreeFromJson(json);
        }
        else
        {
            rootNode = await BuildTree();
            string json = rootNode.ToJsonCompact();

            await cache.SetAsync(
                                cacheKey,
                                Encoding.UTF8.GetBytes(json),
                                new    DistributedCacheEntryOptions().SetSlidingExpiration(
                                    TimeSpan.FromSeconds(100))
                                    );
        }
    }

    return rootNode;
}
Run Code Online (Sandbox Code Playgroud)

在这个具体示例中,我使用自定义序列化和反序列化,因为此示例中的对象需要一些序列化帮助,因为它不仅仅是一个简单的类.

对于具有易于序列化的对象的缓存的更一般用法,似乎我应该在IDistributedCache周围实现某种缓存助手或包装,以创建一个更类似于IMemoryCache的api,这样我就可以传入对象并通过密钥并减少我的缓存代码的复杂性和重复.在内部,我想我的CacheHelper类只会使用标准的json序列化,还是我应该使用其他东西?

在框架中是否有任何关于此类CacheHelper的计划,还是应该实现自己的?

我认为特别是在像Azure这样的环境中我应该为从SqlAzure数据库中经常检索的大多数事物实现缓存以降低成本,而IDistributeCache允许通过DI轻松插入不同的缓存解决方案Azure缓存或Redit等.

这是正确的方法还是有更好的方法或模式的指导?

使用LocalCache时是否与直接使用MemoryCache有任何性能差异?

我们应该总是或几乎总是使用IDistributedCache,还是有特定的示例场景,首选使用IMemoryCache?

serialization caching asp.net-core-mvc asp.net-core

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

如何在asp.net 5类库nuget包中包含视图

我正在创建一个包含一些ViewComponents的类库项目.很高兴VS 2015可以自动为我生成NuGet包,但有什么方法可以让它包含我的ViewComponents需要的.cshtml视图文件等内容文件?

以前我已经用批处理文件和nuspec文件打包以使其包含内容,我是否必须继续使用这种方法,还是有办法告诉VS 2015要包含的内容文件?

asp.net-core-mvc visual-studio-2015 asp.net-core

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

如何在MVC 6 beta7中插入自定义视图引擎?

在beta6中,我们能够像这样插入自定义视图引擎:

services.AddMvc()
.AddViewOptions(options =>
 {
     options.ViewEngines.Clear();
     options.ViewEngines.Add(typeof(MyCustomViewEngine));

 });
Run Code Online (Sandbox Code Playgroud)

这不再适用于beta7和options.ViewEngines似乎已经改为

IList<IViewEngine>
Run Code Online (Sandbox Code Playgroud)

我不明白如何插入一个而不必新建它并提供其依赖

options.ViewEngines.Add(new it up here?);
Run Code Online (Sandbox Code Playgroud)

如何在beta7中插入我自己的自定义视图引擎?

asp.net-core-mvc asp.net-core

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

使用ASP.NET Core和MVC存储本地文件

使用Asp.NET Core,环境中的便捷路径查找功能已经消失.HttpContext和HttpServerUtility已被剥离.而Cache框架中的Application存储已经消失.我不能再(在代码中)假设我的服务器使用的是IIS,或者它甚至在Windows机器上运行.

而且我没有数据库; 我有一组JSON文件.其中,由于此问题范围之外的原因,无法存储在数据库中.

如何读取和写入服务器上的文件?

asp.net-mvc asp.net-core

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

将非必需的字符串属性从null水合为空字符串

如果我有一个模型类

public class Foo
{
    public string Property1 { get; set; } = string.Empty;
    ... other properties omitted for brevity
}
Run Code Online (Sandbox Code Playgroud)

它被保存到数据库为null,因为它不是必需的属性.但现在当我检索属性为null的实体时.我在这个实体上有很多不需要的字符串属性,我不想对这些属性进行大量的空值检查,我只是希望它们在数据库中为null时被重新水化为空字符串.我不介意它们作为null存储在db中,但是当从db中检索实体时,如果它在db中为null,我希望将它映射回空字符串.

我认为这必须是一个相当常见的场景,并且想知道我是否缺少一些简单的方法来配置设置或其他东西.我是使用EF的新手.

在我的OnModelCreating这个属性我有:

.HasMaxLength(50)
.HasDefaultValue(string.Empty)
Run Code Online (Sandbox Code Playgroud)

但它仍然存储为null并重新水合为null.我再次不介意它被存储为null但是如果它在db中为null,我希望它作为空字符串水合.

我尝试像这样修改模型类:

private string property1 = string.empty;
public string Property1
{
    get { return property1; }
    set { property1 = value ?? string.Empty; }
} 
Run Code Online (Sandbox Code Playgroud)

认为EF必须使用setter但这仍然导致null属性.到目前为止,通过制作这样的属性,我能够解决它的唯一方法是:

private string property1 = string.empty;
public string Property1
{
    get { return property1 ?? string.empty; }
    set { property1 = value ?? string.Empty; }
} 
Run Code Online (Sandbox Code Playgroud)

我真的宁愿不必像我这样做所有的财产.

任何人都可以提出一个更清洁的方法来做这件事或纠正我,如果我做错了什么或不寻常或认为它错了.我错过了一些更容易实现的方法吗?

我不想使属性成为必需属性,因为空字符串也不满足该情况.

entity-framework-core

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

升级到ASP.NET Core MVC 2.2后,默认路由操作不起作用

将我的应用程序从asp.net core 2.1更新到2.2后,似乎默认路由操作不适用于单独类库中的控制器。

例如,我有一个像这样的默认路由:

routes.MapRoute(
            name: "default",
            template: "{controller}/{action}"
            ,defaults: new { controller = "Home", action = "index" }
            );
Run Code Online (Sandbox Code Playgroud)

在我的类库中,我有一个控制器SiteAdminController,它具有Index动作方法。

当我访问url / siteadmin时,我得到的是HomeController索引,而不是SiteAdminController的index操作

如果我使用/ siteadmin / index,那么它可以工作

如何在不要求在URL中显式执行index操作的情况下使其工作?在2.1中工作正常

asp.net-core-mvc asp.net-core

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