我在Visual Studio 2015中创建了一个新的ASP.NET Core Web应用程序.我还设置了一个Azure Web应用程序,以便从GitHub中提取应用程序并运行它.这工作正常,但我无法连接到Azure上的数据库.
在本地,这是有效的,它使用config.json和代码Data:DefaultConnection:ConnectionString连接字符串.
如何保留代码,并使其在Azure中运行?我尝试在门户中设置应用程序设置,包括连接字符串和应用程序设置.并使用"SQLCONNSTR_DefaultConnection"和"Data:DefaultConnection:ConnectionString"作为键.
(设置应用程序设置似乎不起作用.我认为我提供的值太长).
那么如何在我的Azure Web应用程序(ASP.NET 5)中提供Azure数据库的连接字符串,而不在源代码管理中检入它?
Update My Startup.cs看起来像这样(参见GitHub上的完整文件):
public Startup(IHostingEnvironment env)
{
var configuration = new Configuration()
.AddJsonFile("config.json")
.AddJsonFile($"config.{env.EnvironmentName}.json", optional: true);
if (env.IsEnvironment("Development"))
{
configuration.AddUserSecrets();
}
configuration.AddEnvironmentVariables();
Configuration = configuration;
}
Run Code Online (Sandbox Code Playgroud)
在该ConfigureServices方法中,还有:
services.Configure<AppSettings>(Configuration.GetSubKey("AppSettings"));
Run Code Online (Sandbox Code Playgroud)
而且,在ConfigureServices方法中:
services.AddEntityFramework()
.AddSqlServer()
.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(Configuration["Data:DefaultConnection:ConnectionString"]))
.AddDbContext<InvoicesDbContext>(options =>
options.UseSqlServer(Configuration["Data:DefaultConnection:ConnectionString"]));
// So this is where I want my app in Azure to use the connection string I
// provide in the …Run Code Online (Sandbox Code Playgroud) 我有一组Excel电子表格,我只想在授权用户的ASP.NET 5 webapp中提供这些电子表格.
非常感谢!
.NET标准2.0的概述(示例)表示它现在使用某种兼容性填充程序来修复第三方库兼容性问题.因此,您可以将第三方库与.NET Standard一起使用,直到它不使用.NET Standard没有的任何API.
目前尚不清楚的是
和
以前,AssemblyInfo.csVisual Studio会自动处理文件以包含程序集范围的属性,如AssemblyVersion,AssemblyName等.
在.NET Core和ASP.NET Core中,project.json负责保存大部分信息.
所以问题是:我是否需要使用该属性标记我的程序集?如果我不用该属性标记汇编,我可以获得什么陷阱?
在这个答案中我发现,
在代码中使用Dispose/Finalize模式时,清除Finalize方法中的非托管资源和Dispose方法中的托管资源.
后来我发现这篇关于敲定和处理的好文章,并对它们有了清晰的认识.本文有以下代码(第3页),用于解释概念:
class Test : IDisposable
{
private bool isDisposed = false;
~Test()
{
Dispose(false);
}
protected void Dispose(bool disposing)
{
if (disposing)
{
// Code to dispose the managed resources of the class
}
// Code to dispose the un-managed resources of the class
isDisposed = true;
}
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
}
Run Code Online (Sandbox Code Playgroud)
但在此之下,出现了相同的注释(我在本问题开头所包含的注释).
Dispose/Finalize模式Microsoft建议您在使用非托管资源时实现Dispose和Finalize.然后,正确的顺序是开发人员调用Dispose.即使开发人员忽略了显式调用Dispose方法,也会在对象被垃圾回收时运行Finalize实现并仍然释放资源.Francesco Balena在他的博客中写道:只有当你的类型调用分配非托管资源(包括非托管内存)的非托管代码并返回最终必须用来释放资源的句柄时,才应使用Dispose/Finalize模式.只需处理和完成必须通过在处理或完成自己的成员之后调用父母的相应方法来链接到他们的父对象". 简单地说,在代码中使用Dispose/Finalize模式时,清除Finalize方法中的非托管资源和Dispose方法中的托管资源.
现在我又困惑了.在整篇文章和代码示例中,显示应释放非托管资源Dispose().但那个评论的相关性是什么?
编辑:
正如确认这一行:
简单地说,当在代码中使用Dispose/Finalize模式时,清理Finalize方法中的非托管资源和Dispose方法中的托管资源.
是错误的,我编辑了这个答案.
如果类T包含对ILogger的依赖,则解析依赖关系:
public class Foo
{
private ILogger _logger;
public Foo(ILogger<Foo> logger)
{
_logger = logger;
}
}
Run Code Online (Sandbox Code Playgroud)
但以下不起作用,因为logger将为null:
public class Foo
{
private ILogger _logger;
public Foo(ILogger logger)
{
_logger = logger;
}
}
Run Code Online (Sandbox Code Playgroud) 我试图在中间件中读取正文以进行身份验证,但是当请求到达api控制器时,对象是空的,因为正在读取正文.有没有办法解决.我正在中间件中读这样的身体.
var buffer = new byte[ Convert.ToInt32( context.Request.ContentLength ) ];
await context.Request.Body.ReadAsync( buffer, 0, buffer.Length );
var body = Encoding.UTF8.GetString( buffer );
Run Code Online (Sandbox Code Playgroud) 我创建了一个.Net Core API,我引用了一个.Net框架应用程序.引用的Application连接到数据库,其连接字符串存储在web.config文件中:
string CONNSTR =ConfigurationManager.ConnectionStrings["SHOPPINGCNN"].ConnectionString;
Run Code Online (Sandbox Code Playgroud)
.Net Core应用程序使用appsettings.json而不是web.config文件.当我运行API并尝试使用引用的应用程序资源时,上面的代码将被触发并返回null,因为.net Core应用程序中不存在web.config文件.解决此问题的最佳解决方案是什么
为了理解我可以用于OpenId Connect Server实现的内容,我已经研究了它们各自的含义:
ASP.NET Core 2的OpenID Connect和OAuth 2.0框架.
AspNet.Security.OpenIdConnect.Server:
对于两个ASP.NET核心的1.x/2.x和OWIN /卡塔纳3.X/4.x的一种先进的OAuth2/ID连接服务器框架,目的是提供一个低级别的,协议的第一种方法.
OpenIddict旨在提供一种简单易用的解决方案,以在任何ASP.NET Core 1.x或2.x应用程序中实现OpenID Connect服务器.
OpenIddict基于
AspNet.Security.OpenIdConnect.Server控制OpenID Connect身份验证流程,可以与任何成员资格堆栈一起使用,包括ASP.NET核心身份.
还检查了所有这些都使用ASP.NET Core Identity作为会员系统.
所以我目前的理解是,IdentityServer4并且OpenIdConnect.Server是解决同一问题的两个替代框架.主要区别在于受支持的ASP.NET Core版本列表.
关于Openiddict- 它是一种基于简化服务器创建的扩展AspNet.Security.OpenIdConnect.Server.
我错过了什么,或者这是一般的事情吗?
我所要做的就是向ASP.Net Core应用程序添加招摇.我正在看一个教程,我看到他们所做的就是services.AddSwaggerGen();在Startup.cs文件的configure服务区域下添加.像任何像MVC这样的普通服务...但是我收到一个错误:
没有给出对应于所需形式参数'setupAction'的参数...
我没有看到有人提供任何争论,services.AddSwaggerGen()所以有谁知道我在这里缺少什么?
我添加了SwashBuckler.AspNetCore依赖项,因此swagger在应用程序中.只是不知道为什么它是红色并给出上述错误.
asp.net-core ×8
c# ×3
.net-core ×2
assemblyinfo ×1
azure ×1
csproj ×1
dispose ×1
finalize ×1
logging ×1
openiddict ×1
swagger ×1