小编Ron*_*n C的帖子

如何从Controller返回特定的状态代码而没有内容?

我希望下面的示例控制器返回没有内容的状态代码418.设置状态代码很容易,但似乎需要做一些事情来发出请求结束的信号.在ASP.NET Core之前的MVC或WebForms中可能是一个调用,Response.End()但它如何在ASP.NET Core中Response.End不存在?

public class ExampleController : Controller
{
    [HttpGet][Route("/example/main")]
    public IActionResult Main()
    {
        this.HttpContext.Response.StatusCode = 418; // I'm a teapot
        // How to end the request?
        // I don't actually want to return a view but perhaps the next
        // line is required anyway?
        return View();   
    }
}
Run Code Online (Sandbox Code Playgroud)

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

103
推荐指数
6
解决办法
11万
查看次数

如何在 VS 2022 中禁用新的基于 AI 的 IntelliCode?

从表面上看,适用于 Visual Studio 2022 的新的基于 AI 的 IntelliCode 似乎很酷。因此,当我安装 VS2022 并询问我是否允许在我的代码上训练模型时,我说当然,因为我想看看它如何改善开发人员体验。

但现在我已经使用 VS2022 编码一周了,我发现与 VS2019 相比,在编辑器中使用 300K 行代码库总是感觉很慢。我什至看到过一些奇怪的东西,我确信我输入了一件事,但代码却被分割成完全不同的东西,有时是我正在工作的上方的几行代码。不知怎的,VS2022编辑器和我不同步。另外,在使用编辑器时,我听到机器上的风扇高速运转,表明我的机器正在非常努力地工作。我不记得 VS2019 中有过这种情况。因此,解决所有这些问题我的第一个想法是在 VS2022 中恢复更多 VS 2019 IntelliCode 体验。

所以我进入Tools> Options> IntelliCode>General来开启新功能。我仍然希望拥有像 VS2019 中那样的 IntelliCode,但我想关闭新的 AI 驱动模型,这些模型(理论上)会减慢我的编辑体验。查看设置时,不清楚要更改哪些设置。更糟糕的是,甚至不清楚何时启用或禁用某些功能。他们都表现出来了Default

在此输入图像描述

查看Microsoft Docs也没有多大帮助。它不提供有关Default默认启用或默认禁用这些选项中的哪些选项的任何信息。

我猜我可能想禁用Automatic model training,也许C# deep-learning base model for completions。但我应该禁止其他人吗?如果我确实关闭了,C# deep-learning base model for completions我是否会禁用 VS2019 中我想要的功能?我启动了 VS2019 来检查它的 IntelliCode 选项,可惜所有设置也都设置好了Default。所以我既不知道之前启用了什么,也不知道现在启用了什么。我只知道我的编辑经历并不让我开心。

谁能告诉我如何配置这些设置,以便我拥有在 VS2019 中享受的 IntelliCode 体验,而无需承担 …

c# visual-studio intellicode visual-studio-2022

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

如何修复 Visual Studio 2022 警告 CA1416“所有平台均可访问调用站点”但“仅支持:'windows'”?

所以我有一个 C# 类库项目,我只打算在 Windows 上使用。它包含一些使用System.Drawing.Image仅在 Windows 上可用的类的类。升级到 Visual Studio 2022 并将目标框架设置为 .NET 6.0 后,我看到一堆警告:

\n
\n

CA1416 “此调用站点可在所有平台上访问。\'SomeClass.SomeMethod\' 仅在以下平台上受支持:\'windows\'。

\n
\n

请参阅下面的屏幕截图了解一些示例:

\n

Visual Studio 2022 中的“错误列表”窗格显示多个 CA1416“此调用站点在所有平台上均可访问。\'.\' 仅在:\'windows\' 上受支持。”  错误

\n

从某种意义上说,VS2022 扫描了库并找到了我在库中使用的所有平台特定代码,这很酷。但我想告诉 VS,我只打算在 Windows 上使用该库,它可以消除所有这些警告。

\n

首先,我检查了Target framework项目属性中的选项,但没有看到任何 Windows 特定目标。

\n

项目属性的应用程序 \xe2\x86\x92 常规页面上的“目标框架”下拉框已展开以显示 .NET、.NET Core 和 .NET Framework 的可用版本

\n

然后我决定直接编辑项目.csproj并更改Target framework

\n
<TargetFramework>net6.0</TargetFramework>\n
Run Code Online (Sandbox Code Playgroud)\n

\n
<TargetFramework>net6.0-windows</TargetFramework>\n
Run Code Online (Sandbox Code Playgroud)\n

但是,遗憾的是,即使在重新编译之后,警告也没有消失。然后我读了一些警告CA1416,果然Microsoft Docs中说,评估此警告时会忽略目标框架名称,但是,VS 确实根据影响此警告的 TFM 向项目添加了一个属性,但是仅当项目配置为AssemblyInfo.cs动态生成文件时,它才会这样做。但是,唉,我的项目是AssemblyInfo.cs作为实际文件维护的,而不是在构建时自动生成的。

\n

因此,此时,我已准备好踢球并禁用CA1416我的项目的警告。因此,在项目的.proj文件中,我添加了CA1416发布和调试版本,如下所示:

\n
<PropertyGroup Condition="\'$(Configuration)|$(Platform)\'==\'Debug|AnyCPU\'">\n    <NoWarn>1701;1702;CA1416;</NoWarn>\n</PropertyGroup>\n\n<PropertyGroup Condition="\'$(Configuration)|$(Platform)\'==\'Release|AnyCPU\'">\n    <NoWarn>1701;1702;CA1416;</NoWarn>\n</PropertyGroup>\n
Run Code Online (Sandbox Code Playgroud)\n …

c# code-analysis visual-studio microsoft.codeanalysis .net-6.0

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

访问Asp.Net Core App中的Web.config设置?

我知道asp.net核心有一个非常灵活的新配置系统,这很棒.但是我喜欢从.net 4.x开始的基于web.config的配置系统.例如,可以将注释放在web.config文件中,因为它是一个xml文件.对我而言,值得坚持使用xml,而不是采用闪亮的新json方法.[ 更新:我现在明白json方法也支持文件中的注释.]

因此,如果我有一个针对完整框架的Asp.Net核心Web项目,我似乎应该可以使用基于web.config的System.Configuration.ConfigurationManager.AppSettings[key]方法来获取设置.

但是当我尝试时,该值总是返回null(至少在使用VS2015的IIS Express时).

它应该工作正常吗?关于我可能会看到什么的任何想法?

Web.config文件

<configuration>
    <appSettings>
        <add key="SomeSetting" value="true"/>
    </appSettings>

    <system.webServer>
        <handlers>
            <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified"/>
        </handlers>

        <aspNetCore processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false"/>
     </system.webServer>
</configuration>
Run Code Online (Sandbox Code Playgroud)

代码访问设置:

string key = "SomeSetting";
string setting = ConfigurationManager.AppSettings[key];
if (setting == null)
       throw new Exception("The required configuration key " + key + " is missing. ");
Run Code Online (Sandbox Code Playgroud)

更新
经过更多的研究,我现在明白为什么它不起作用,但我还没有找到解决方法.根本原因似乎是ConfigurationManager在不同的文件中而不是在web.config中查找配置信息.

这可以通过查看AppDomain.CurrentDomain.SetupInformation.ConfigurationFile财产来看出.在我的情况下,而不是指向website_folder\web.config它,而是指向website_folder\bin\Debug\net461\win7-x64\wwwGiftOasisResponsive.exe.Configwebsite_folder是包含我的网站的文件夹的路径.

文档和intellisense说AppDomain.CurrentDomain.SetupInformation.ConfigurationFile是一个可设置的属性,但当我尝试时,我发现它设置它不会改变它的值.很奇怪.

所以,虽然我现在看到问题是什么,但我似乎无法找到解决问题的方法.

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

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

如何在使用自定义位置时在asp.net core mvc中指定视图位置?

假设我有一个控制器使用基于属性的路由来处理请求的/ admin/product网址,如下所示:

[Route("admin/[controller]")]        
public class ProductController: Controller {

    // GET: /admin/product
    [Route("")]
    public IActionResult Index() {

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

现在让我们说我希望将我的视图组织在一个文件夹结构中,该文件夹结构大致反映了它们相关的url路径.所以我希望这个控制器的视图位于这里:

/Views/Admin/Product.cshtml
Run Code Online (Sandbox Code Playgroud)

更进一步,如果我有这样的控制器:

[Route("admin/marketing/[controller]")]        
public class PromoCodeListController: Controller {

    // GET: /admin/marketing/promocodelist
    [Route("")]
    public IActionResult Index() {

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

我希望框架在这里自动查找它的视图:

Views/Admin/Marketing/PromoCodeList.cshtml
Run Code Online (Sandbox Code Playgroud)

理想情况下,用于通知视图位置框架的方法将基于基于属性的路由信息​​以一般方式工作,而不管涉及多少URL段(即,嵌套的程度有多深).

如何指示Core MVC框架(我目前正在使用RC1)在这样的位置查找控制器的视图?

asp.net-core-mvc asp.net-core asp.net-core-1.0 asp.net-core-2.1

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

为什么StringValues用于Request.Query值?

假设我有一些看起来像这样的网址:www.myhost.com/mypage?color = blue

在Asp.Net Core中,我希望通过执行以下操作获取颜色查询参数值:

string color = Request.Query["color"];

但事实证明,Request.Query["color"]返回类型的值StringValues而不是string.这是为什么?

显然,StringValues类型可以包含一个字符串数组,并且包含对隐式转换的支持string[]很酷,但为什么查询参数值需要?

必须获得这样的价值似乎很奇怪:

string color = Request.Query["color"].ToString();

更糟糕的是,检查一个值以查看是否指定了查询参数不能再这样做了

  if(Request.Query["color"] == null) { 
      //param was not specified
  }
Run Code Online (Sandbox Code Playgroud)

但必须像这样检查

 if(Request.Query["color"].Count == 0) { 
      //param was not specified
 }
Run Code Online (Sandbox Code Playgroud)

由于单个查询参数不能有多个值(据我所知)为什么Request.Query["color"]返回一个StringValues对象而不是一个字符串?

c# asp.net-core

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

如何轻松更改 Visual Studio 2022 编辑器字体和颜色以匹配 VS 2019

我很欣赏 Visual Studio 团队不断努力为开发人员改进 VS 环境。然而,我发现 VS 2022 编辑器中使用的字体和颜色太大了,而且很费脑力。我非常想更改 VS 2022 文本编辑器字体和颜色以匹配我在 VS 2019 中使用的字体和颜色。

不幸的是,这并不像进入“工具”>“选项”>“环境”>“字体和颜色”并将字体从Cascadia Code回更改为Consolas. 当然可以做到这一点,这是向前迈出的一步,但字体颜色是浅色的。这显然是因为 VS 2022 中的字体颜色总体上变浅了,以部分补偿Cascadia Code字体非常重的事实。如果您想保留Cascadia Code作为编辑器字体,这当然是有道理的。但我不这么认为。我想切换回Consolas,并且我也想要 VS 2019 使用的字体颜色。

那么有人知道让 VS 2022 编辑器使用 VS 2019 使用的文本颜色编码的简单方法吗?

visual-studio visual-studio-2022

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

如何通过Asp.Net Core中间件的JsonResult进行响应?

我想通过一个JsonResultAsp.Net Core中间件来回应,但是如何实现这一点并不明显.我用Google搜索了很多但收效甚微.我可以通过一个JsonResult全局来回应,通过IActionFilter设置ActionExecutedContext.ResultJsonResult那个很酷.但在这种情况下,我想JsonResult从我的中间件中有效地返回一个.怎么能实现呢?

我提出了关于问题的问题,JsonResult IActionResult但理想情况下,解决方案可以使用任何IActionResult来编写来自中间件的响应.

asp.net-mvc json middleware asp.net-core

14
推荐指数
4
解决办法
6420
查看次数

VS 2015 Update 2 - 调试时不存在变量,为什么?

我正在使用VS 2015 Update 2和配置为调试模式的asp.net 5 Web项目.当我使用F5运行项目来调试它并达到断点时,即使它们在范围内,也无法在监视窗口中观察到某些变量.此外,如果我将鼠标悬停在这些变量上,则不会显示任何值.

如果我使用相同的visual studio来创建一个空Web项目并添加一个webform并将代码放在load方法中,那么调试器工作正常.也就是说,我可以在监视窗口中看到变量,我可以通过将它们悬停在它们上面来查看它们的值.我从中收集到,问题的根本原因不是VS2015 Update 2,而是与项目或解决方案配置有关,可能特定于asp.net 5 web项目.

我在网上搜索答案,并在尝试调试编译器优化代码时遇到类似问题.但是我在调​​试模式下运行解决方案.有什么建议?

错误的屏幕截图

我知道在调试时当前上下文中不存在Variable,但它适用于不同版本的visual studio,并且那里提供的解决方案无法解决我的问题.

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

13
推荐指数
2
解决办法
2501
查看次数

在 ASP.NET Core 6 中,为什么 System.Private.ServiceModel.resources.dll 的已发布输出中需要语言文件夹以及如何消除它们?

在 ASP.NET Core 6 中,当发布为独立的 win-x86 网站时,会在发布文件夹中创建一堆语言文件夹。

在此输入图像描述

这些文件夹包含一个 dll,即System.Private.ServiceModel.resources.dll. 据我所知,这些文件夹不存在于 Asp.NET 5 中,并且它们给部署添加了我不希望有的混乱/噪音。

System.Private.ServiceModel.resources.dll您能否解释为什么此类部署需要所有这些本地化版本?另外,由于我的网站只有英文,我可以安全地删除所有语言文件夹(即 cs、de、es、fr、it、ja、ko、pl、pt-BR、ru、tr、zh-Hans、zh-汉特)?最后,有没有更好的方法让这些消失呢?例如某处的某些配置?

asp.net-core dotnet-publish .net-6.0 visual-studio-2022

12
推荐指数
1
解决办法
4561
查看次数