小编Chr*_*lsh的帖子

如何在 ASP.NET 中将 IHttpClientFactory 添加到 NInject

我正在尝试将IHttpClientFactoryNInject 添加到我的 C# ASP.NET Web 窗体应用程序中,以便我可以在服务中使用它。然而,网上有很多关于使用IHttpClientFactory(而不是创建大量实例)的文档:HttpClient

  1. 文档/示例基于使用 .NET Core 接口,我正在使用 ASP.NET(即 .NET Framework),例如https://learn.microsoft.com/en-us/dotnet/architecture/microservices/implement- elastic-applications/use-httpclientfactory-to-implement-resilient-http-requestshttps://learn.microsoft.com/en-us/aspnet/core/fundamentals/http-requests ?view=aspnetcore-3.0
  2. 文档往往是关于IHttpClientFactory使用 Microsoft 自己的依赖注入系统而不是 NInject 进行连接。

那么,我尝试了什么?好吧,我不知道从哪里开始,因为尽管IHttpClientFactory在命名空间中定义良好System.Net.Http,但没有公开可将其绑定到的具体实现。我想写这个:

public class ClassLibNinjectModule : NinjectModule
{
    public override void Load()
    {
        Bind<System.Net.Http.IHttpClientFactory>().ToConstant<System.Net.Http.HttpClientFactory>();
    }
}
Run Code Online (Sandbox Code Playgroud)

然而:

  1. System.Net.Http.HttpClientFactory是静态类型并且它不实现System.Net.Http.IHttpClientFactory(不同的方法:CreateClient()vs Create()
  2. 我似乎不知道如何将服务绑定到静态提供者。

谁能告诉我哪里出错了?谢谢。

asp.net webforms ninject .net-framework-version

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

如何在网络服务和手机之间进行身份验证?

我想制作一个Windows Mobile 6手机应用程序.此应用程序将与我想要的Web服务进行通信.

我对手机的网络服务和编程应用程序了解不多,所以我有几个问题.

  1. 我该如何进行身份验证?就像我的用户加载我的应用程序并转到登录页面.他们输入凭证.这将被发送到服务器并进行身份验证.现在我送回什么?是否有某种FormsAuthentication?

  2. 他们登录后我必须继续检查他们是否登录?就像在asp.net mvc中一样,我在所有标签上都有AuthorizeAttributes.这样,没有人可以只输入该动作方法的URL并能够访问它.但由于这是一个应用程序,我不确定他们是否可以(比方说)转到您的登录表单(第一个表单),然后以某种方式,在没有登录的情况下,转到您的主表单(登录表单之后的表单).

  3. Web服务是否具有asp.net mvc等授权标签?因为我可能需要沿着这些方面的东西来确保他们的网络中没有一种类型能够浏览我的webservice路径并访问我在其中制作的所有方法.

  4. 我正在制作一个asp.net mvc应用程序,当用户在我的网站上输入他们的凭据时.它发送的是我猜的是明文吗?到服务器哈希然后检查.我知道也许有一天,当我能负担得起它可能会让ssl更安全.

所以我的问题是如何将凭证从手机发送到服务器将不如我现在对我的网站的安全性更低?差不多?可以做些什么来使它更安全(再次是SSL?).

谢谢

.net c# asp.net-mvc web-services

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

在类属性上使用 JsonConverter 时选择 NamingStrategy

我有 ac# 类,我正在尝试使用Newtonsoft.Json. 该属性是一个枚举类型,我希望该值被序列化为“枚举名称的小写版本”。有一个JsonConverterAttribute可用于在属性上指定它,也有一个预写的,StringEnumConverter但我需要CamelCaseNamingStrategy在该转换器上指定,但我无法计算出语法。

我试图将它分配给属性本身:

public class C
{
    [JsonConverter(typeof(StringEnumConverter),NamingStrategy=typeof(CamelCaseNamingStrategy))]
    public ChartType ChartType { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我也尝试将它类似地添加到枚举类型本身:

[JsonConverter(typeof(StringEnumConverter),NamingStrategy=typeof(CamelCaseNamingStrategy))]
public enum ChartType { Pie, Bar }
Run Code Online (Sandbox Code Playgroud)

但是语法是错误的。我在Newtonsoft 文档中找不到任何此类示例。

所需的序列化将是:"ChartType":"pie""ChartType":"bar"

有任何想法吗?谢谢。

c# json.net jsonconverter

7
推荐指数
2
解决办法
5280
查看次数

nuget未在Visual Studio Team Services下下载软件包(visualstudio.com)(自动软件包还原)

我真的很疯狂与nuget并在Visual Studio Team Services(visualstudio.com)下构建解决方案.任何帮助都感激不尽.

我有一个包含36个项目的解决方案.许多项目使用相同的5或6个nuget包.我已仔细按照迁移MSBuild集成解决方案的说明使用自动包恢复,因此在我的解决方案文件夹下有一个.nuget文件夹,其中包含唯一的NuGet.Config文件,不再包含Nuget.exe或Nuget.targets文件.所有项目都删除了Nuget.targets行.

我正在使用Visual Studio 2013 Professional(v12 Update 2),并且本地构建的解决方案没有错误或警告.即使在清理并删除packages文件夹之后,它也会下载并构建正常.packages文件夹未在Visual Studio Team Services中签入.

检查构建日志表明:

  1. nuget在Build的开始没有启动,以便检查,下载和解压任何未解析的软件包(它是在从MSBuild-Integrated迁移到自动软件包恢复之前这样做的 - 尽管如此,它无法解决参考)
  2. 我遗留了113个错误,主要是项目无法解析引用.
  3. 与本地构建(和MSBuild集成)不同,Visual Studio Team Services现在甚至不在其构建日志中提及 nuget!

事情开始失败的日志示例(虽然这显然是因为nuget没有介入):

Project "C:\a\src\TFS\RSPlatform\Main\Source\RSPlatform Team Project.sln" (1) is building "C:\a\src\TFS\RSPlatform\Main\Source\Support\A2Refresh\A2Refresh.csproj" (8) on node 1 (default targets).
PrepareForBuild:
  Creating directory "obj\Release\".
ResolveAssemblyReferences:
  Primary reference "Bytescout.Spreadsheet".
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Microsoft.Common.targets(1605,5): warning MSB3245: Could not resolve this reference. Could not locate the assembly "Bytescout.Spreadsheet". Check to make sure the assembly exists on disk. If this reference is required by your …
Run Code Online (Sandbox Code Playgroud)

visual-studio-2013 nuget-package-restore azure-devops

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

InRequestScope 的作用类似于 InTransientScope

我有一个 ASP.NET Web 应用程序(.NET Framework 4.8),我在其中设置了 NInject,但是我设置的任何服务InRequestScope都像瞬态范围一样通过(即为依赖于依赖的每个实体创建新实例)它 - 在同一个网络请求中)。

我使用的 NuGet 包如下(最新):

  1. Ninject v3.3.4
  2. Ninject.Web.Common v.3.32(“Web 项目的引导程序”)

App_Start\Ninject.Web.Common.cs 存在且正确,如下所示:

[assembly: WebActivatorEx.PreApplicationStartMethod(typeof(ScormWebService.App_Start.NinjectWebCommon), "Start")]
[assembly: WebActivatorEx.ApplicationShutdownMethod(typeof(ScormWebService.App_Start.NinjectWebCommon), "Stop")]

namespace ScormWebService.App_Start
{
    using Microsoft.Web.Infrastructure.DynamicModuleHelper;
    using Ninject;
    using Ninject.Web.Common;
    using Ninject.Web.Common.WebHost;
    using Services;
    using System;
    using System.Web;

    public static class NinjectWebCommon
    {
        private static readonly Bootstrapper bootstrapper = new Bootstrapper();
        public static IKernel Kernel { get; private set; }

        /// <summary>
        /// Starts the application
        /// </summary>
        public static void Start()
        {
            DynamicModuleUtility.RegisterModule(typeof(OnePerRequestHttpModule)); …
Run Code Online (Sandbox Code Playgroud)

c# asp.net ninject

6
推荐指数
0
解决办法
199
查看次数

IIS AppPool 到 SQL Server 权限(添加 NT AUTHORITY\IUSR)

我有一个运行 Windows Server 2012 R2、IIS 8.5(包括 ClassicASP 功能)和 SQL Server 2014 Express 的新服务器版本。我想使用应用程序池标识连接到数据库。数据库设置为“Windows 身份验证模式”。

我的应用程序池标识名为activbase.net. 我在 SQL Server 中设置了一个名为的安全登录IIS AppPool\activbase.net,用户将它映射到我的数据库db_datareaderdb_datawriter访问。

但是,当我尝试从网站访问数据库时,我得到:

无法打开登录请求的数据库“ActivbaseLive”。登录失败。

我认为这足以使连接正常工作。应用程序日志(事件查看器)显示:

用户“NT AUTHORITY\IUSR”登录失败。原因:无法打开明确指定的数据库“ActivbaseLive”。[客户: ]

所以我NT AUTHORITY\IUSR同样添加到 SQL Server>Security>Logins and Databases>[ActivbaseLive]>Security>Users,这解决了问题。

我的问题如下:

  1. NT AUTHORITY\IUSR除了IIS AppPool\activbase.net登录名/用户之外,我是否还需要向我的 SQL Server 实例和数据库添加登录名/用户?
  2. 这样做是否存在安全问题?(注意:这将是一个生产环境)

谢谢,克里斯

applicationpoolidentity sql-server-2014-express iis-8.5

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

创建新数据库时的最佳 ANSI 选项

我正在为我们的生产环境在 SQL Server 2012 上创建一个新数据库。当我使用 SQL Server Management Studio 中的“New Database...”选项并生成输出时,我得到:

CREATE DATABASE [AAA]
 CONTAINMENT = NONE
 ON  PRIMARY 
( NAME = N'AAA', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQL2014\MSSQL\DATA\AAA.mdf' , SIZE = 5120KB , FILEGROWTH = 1024KB )
 LOG ON 
( NAME = N'AAA_log', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQL2014\MSSQL\DATA\AAA_log.ldf' , SIZE = 1024KB , FILEGROWTH = 10%)
GO
ALTER DATABASE [AAA] SET COMPATIBILITY_LEVEL = 120
GO
ALTER DATABASE [AAA] SET ANSI_NULL_DEFAULT OFF 
GO
ALTER DATABASE [AAA] SET ANSI_NULLS OFF …
Run Code Online (Sandbox Code Playgroud)

sql sql-server sql-server-2012

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

Serilog 未在生产服务器上创建日志文件

我创建了一个 C# .net5.0 控制台应用程序,在测试期间 Serilog 一直正常工作,记录到控制台和文件(同一文件夹;path=“log.txt”)。但是,当我在服务器上的应用程序上运行时,控制台和文件日志记录接收器都不起作用!我现在认为问题不在于接收器本身,而是 Serilog 实际上没有工作。

我尝试启用自我日志:

Serilog.Debugging.SelfLog.Enable(msg =>
    Console.WriteLine(msg)
);
Run Code Online (Sandbox Code Playgroud)

但即使在我的开发环境中的调试器中运行,Console.WriteLine(msg)行也永远不会被调用!

appsettings.json的如下:

{
"Serilog": {
    "MinimumLevel": {
        "Default": "Debug",
        "Override": {
            "Microsoft": "Information",
            "System": "Information"
        }
    },
    "WriteTo": [
        {
            "Name": "Console",
            "Args": {
                "theme": "Serilog.Sinks.SystemConsole.Themes.AnsiConsoleTheme::Code, Serilog.Sinks.Console",
                "outputTemplate": "[{Timestamp:HH:mm:ss} {Level:u3}] {Message:lj} {NewLine}{Exception}"
            }
        },
        {
            "Name": "File",
            "Args": {
                "path": "log.txt",
                "rollingInterval": "Infinite",
                "outputTemplate": "{Timestamp:HH:mm:ss.fff} [{Level:u3}] {Message:lj}{NewLine}{Exception}",
                "shared": false
            }
        }
    ],
    "Enrich": [ "FromLogContext" ]
},

"Database": {
    "Server": "(local)",
    "Database": "ActivbaseLive" …
Run Code Online (Sandbox Code Playgroud)

serilog serilog-sinks-file

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

无法在Nuget中将Ninject升级到最新版本

我有一个使用一些Ninject程序包的ASP.NET WebForms应用程序,但是我只能使用某个版本。当我尝试升级到最新版本时,出现“无法解决依赖关系”问题。

有问题的软件包是:

Package                       InstalledVer   LatestVer
------------------------------------------------------
Ninject                       v3.2.2         v3.3.4
Ninject.Web                   v3.2.1 ?      v3.2.1
Ninject.Web.Common            v3.2.3         v3.3.1
Ninject.Web.Common.WebHost    v3.2.3         v3.3.1
Run Code Online (Sandbox Code Playgroud)

如果尝试更新Ninject,则会得到:

无法解决依赖关系。'Ninject 3.3.4'与'Ninject.Web 3.2.1约束:Ninject(> = 3.2.0 && <3.3.0)'不兼容

但是Ninject.Web已经是最新版本了!

我应该更改Dependency行为Ninject.Web还是不安全?如果这样做,应该将“依赖关系”行为更改为什么?

谢谢

ninject ninject.web nuget

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

无法启动SSMS(SQL Server 2014 Express) - 无效的许可证数据.需要重新安装

我有一台运行Windows Server 2012 RS和IIS 8.5的新服务器.
我已经安装了SQL Server 2014 Express,并且在使IIS下的站点连接到(最初占位符)数据库时遇到了问题.为了让Visual Studio 2010 Shell显示调试信息,我subinacl按照这个问题运行(如何修复"无效的许可证数据.需要重新安装."Visual C#2010 Express中的错误?)但是现在SSMS本身不再发布!当我尝试启动它时,我得到一个框说:

许可证数据无效.需要重新安装.

当我试图调试原始问题时,底层的Visual Studio 2010 Shell报告了这一点,但现在SSMS在启动时说的是正确的.

我已经卸载并重新安装了SSMS,但问题仍然存在.我已经安装了Visual Studio 2012 Express,看看是否能修复许可证问题,但事实并非如此.任何建议将不胜感激.

在此输入图像描述

ssms windows-server-2012-r2 sql-server-2014-express

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

无法分配 Action 属性

这里一定要疯了,但我看不出我在下面的代码中做错了什么导致语法错误

CS0828:无法将“方法组”分配给匿名类型属性

我看不到有关代码的任何匿名内容,该属性有一个名称。我分配给它的方法被命名为等。

    // A basic function that takes an int and has void return
    private static void DoSomething(int d) 
    {
        // .... do stuff
    };

    // A class is defined with an Action<int> delegate
    private class XX
    {
        public Action<int> YY { get; set; }
    }

    // An instance of the class which clearly assigns a known method to the property
    private static readonly XX xx = new
    {
        // error "CS0828: Cannot assign 'method group' to anonymous type …
Run Code Online (Sandbox Code Playgroud)

c# func

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