小编Fel*_*lix的帖子

在ASP.NET Core中模拟IPrincipal

我有一个ASP.NET MVC核心应用程序,我正在编写单元测试.其中一个操作方法使用用户名来实现某些功能:

SettingsViewModel svm = _context.MySettings(User.Identity.Name);
Run Code Online (Sandbox Code Playgroud)

这显然在单元测试中失败了.我环顾四周,所有建议都是从.NET 4.5到模拟HttpContext.我相信有更好的方法可以做到这一点.我试图注入IPrincipal,但它引发了一个错误; 我甚至试过这个(出于绝望,我想):

public IActionResult Index(IPrincipal principal = null) {
    IPrincipal user = principal ?? User;
    SettingsViewModel svm = _context.MySettings(user.Identity.Name);
    return View(svm);
}
Run Code Online (Sandbox Code Playgroud)

但这也引发了一个错误.无法在文档中找到任何内容......

c# unit-testing xunit.net asp.net-core-mvc

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

C#7.1无法发布

我有ASP.NET Core C#web应用程序.我做了一些现在使用C#7.1功能的更改.我更改了项目版本,因此编译并运行正常.但是,当我尝试发布项目时,我收到一个错误:

功能'默认文字'在C#7.0中不可用.请使用语言版本7.1或更高版本.

我看到的编译命令是:

C:...\.nuget\packages\microsoft.net.compilers\2.6.1\tools\csc.exe /noconfig /unsafe- /checked- /nowarn:1701,1702,1705,1701,1702,2008 /nostdlib+ /errorreport:prompt /warn:4 /define:TRACE;RELEASE;NETCOREAPP2_0 /errorendlocation /preferreduilang:en-US /warnaserror+:NU1605`
Run Code Online (Sandbox Code Playgroud)

正如其他地方所建议的,我安装了Microsoft.Net.Compilers(v2.6.1),但没有任何区别.

是否有专门影响发布的Visual Studio设置?

更新:看起来控制台应用程序没有这个问题.如果它成功构建,它也会成功发布.但是,Web应用程序不会发布.是否有人成功发布了具有C#7.1功能的ASP.NET Core Web应用程序?

c# visual-studio visual-studio-2017 c#-7.1

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

在webpack升级后找不到命名空间NodeJS

我有使用WebPack构建的Angular2应用程序.我将WebPack从v1.8升级到v2,一切似乎都运行良好.唯一的问题是旧代码具有以下内容:

import Timer = NodeJS.Timer;
....
apptInterval: Timer;
....
this.apptInterval = setInterval(() => { ... }, 1000);
Run Code Online (Sandbox Code Playgroud)

升级后,这给了我一个错误: TS2503: Cannot find namespace 'NodeJS'.

tsconfig.json看起来像这样:

{
"compilerOptions": {
   "target": "es5",
   "module": "commonjs",
   "moduleResolution": "node",
   "sourceMap": true,
   "emitDecoratorMetadata": true,
   "experimentalDecorators": true,
   "lib": ["es2015", "dom"],
   "noImplicitAny": true,
   "suppressImplicitAnyIndexErrors": true
   }
}
Run Code Online (Sandbox Code Playgroud)

Angular/Webpack的文档不再具有typings.json; 但是,即使我从Webpack 1目录中复制,它也无济于事.内容是typings.json是

{
"globalDependencies": {
  "jasmine": "registry:dt/jasmine#2.2.0+20160621224255",
  "node": "registry:dt/node"
  }
}
Run Code Online (Sandbox Code Playgroud)

有趣的是,如果我删除对NodeJS的引用,一切正常.像这样:

apptInterval: any;
....
this.apptInterval = setInterval(() => { ... }, 1000);
Run Code Online (Sandbox Code Playgroud)

如果我查看F12调试器,apptInterval的类型是ZoneTask.我确信有一种方法可以使它变得强大,但它逃脱了我.我发现的唯一建议是运行typings install dt~node …

typescript webpack angular

12
推荐指数
2
解决办法
9240
查看次数

程序集使用版本X,其版本高于引用的程序集错误

从ASP.NET Core 2.0升级到2.1-preview2后,我收到以下错误:

Error   CS1705  Assembly 'System.Data.SqlClient' with identity 'System.Data.SqlClient, Version=4.4.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' uses 'System.Runtime, Version=4.2.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' which has a higher version than referenced assembly 'System.Runtime' with identity 'System.Runtime, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'
Run Code Online (Sandbox Code Playgroud)

当我四处寻找类似的错误时,我看到很多关于csproj或json文件中引用的版本的讨论(取决于讨论的年龄).但在.NET Core中只有一个引用Microsoft.AspNetCore.App.所以,我没有办法操纵任何一个System.Data.SqlClient或的引用System.Runtime

另一个观察结果,虽然大多数错误引用实际代码,例如connection.Open()有两个对不存在的文件CSC第1行的引用.

更新:如果我创建一个新项目并在那里复制有问题的代码,我没有收到任何错误.所以,显然对不匹配版本的引用是在项目的某个地方...但我无法弄清楚在哪里!

c# conflicting-libraries asp.net-core asp.net-core-2.0

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

Angular 12 对请求的 IE 11 支持发出警告。为什么?

将 Angular 从 v.11 升级到 v.12 后,我收到以下警告:

警告:在项目的浏览器列表配置中请求支持 IE 11。自 Angular v12 起不推荐使用 IE 11 支持。有关更多信息,请参阅https://angular.io/guide/browser-support

我的项目中没有浏览器列表。并且在polyfill.ts与 IE 相关的所有内容中都被注释掉了。Angular 从哪里推断出这个请求?

internet-explorer angular angular12

11
推荐指数
1
解决办法
4360
查看次数

Visual Studio混淆了javascript中的服务器代码

我遇到了一个恼人的问题:以下代码在Visual Studio中发出警告.

<script type="text/javascript">
var x = <%: ViewData["param"] %>;
</script>
Run Code Online (Sandbox Code Playgroud)

警告是"预期表达".Visual Studio变得混乱,之后的所有javascript代码都会发出大量警告.当然,这是所有的警告,它在运行时完美地运行 - 但很容易错过十几个误报中的真实警告.

它在VS2008中的工作方式相同,并没有在VS2010中修复.有人知道是否有解决方法或补丁?

javascript asp.net asp.net-mvc visual-studio

10
推荐指数
1
解决办法
1450
查看次数

在View T4模板中获取控制器名称

我有一个类似于这里描述的问题:MVC T4 MvcTextTemplateHost和自定义"控制器"T4模板,但希望,更简单.

我有一个用于ASP.NET MVC项目的自定义视图模板(View.tt,Create.tt).我无法弄清楚如何在这些视图模板中获取控制器名称.mvcHost.ControllerName和mvcHost.ControllerRootName在视图模板中都为空.但是,管道控制器名称中的某个位置已知的,因为视图是在ControllerName文件夹中创建的.我想在模板本身中引用它.

具体来说,我想生成HTML.ActionLink("Edit", MVC.<controllername>.Edit(id))而不是HTML.ActionLink("Edit", "Edit", new {id = item.id})

是否可以在View模板中获取控制器的名称?

asp.net-mvc t4 visual-studio-2010

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

跨域Ajax调用没有找到元素位置:moz-nullprincipal

我试图通过jquery调用调用跨域Web服务$.ajax()该服务返回

<?xml version="1.0" encoding="utf-8"?>
<double xmlns="http://www.webserviceX.NET/">1.4248</double>
Run Code Online (Sandbox Code Playgroud)

如果我指定dataType xml(或者没有指定任何东西 - 正确猜测jquery),我会收到XML Parsing Error: no element found Location: moz-nullprincipal:{4030734c-b902-4251-9067-1d1b5b15fc72} Line Number 1, Column 1:错误(看起来没有任何东西从服务中回来).但是,如果我指定dataType jsonpscript- 我可以在firebug中看到所有内容都正确返回; 然而jquery显然试图评估结果并给我相应的错误(缺少分号或类似).

是否有jQuery的解决办法,使跨域调用不评价它?

笔记:

  1. 知道回退选项是在我的服务器上调用一个程序,该程序将调用Web服务并将结果返回给浏览器;
  2. 确实指定了crossDomain:true.它似乎没有任何区别.
  3. "错误"函数确实被调用.但是,而不是原始值"数据"包含"parseerror".

jquery cross-domain

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

如何从javascript Array.map()回调中排除一些元素

基本上,我想实现以下内容:

var categories = [];
var products = // some array of product objects
products.map(function(value) {
   if(categories.indexOf(value.Category === -1)) categories.push(value.Category);
});
Run Code Online (Sandbox Code Playgroud)

因此,categories数组包含唯一的产品类别列表.

觉得应该有一个更好的方法去做,但没有想到任何事情.

如果没有,那么可能首先没有必要使用map().我可以这么简单

var categories = [];
var products = // some array of product objects
for (var i = 0; i < products.length; i++) {
   if(categories.indexOf(products[i].Category === -1)) categories.push(products[i].Category);
}
Run Code Online (Sandbox Code Playgroud)

更新那些坚持认为它是"如何制作阵列唯一"问题的复制品.我看到了这个帖子,对于我的情况,我认为它不适用.我没有一系列值,我需要使其独特.我有一个对象数组,我需要构建一个唯一值数组.差异可能很微妙 - 但是要了解该主题的用例,我将构建一个非唯一的数组,然后使其唯一.似乎比我原来的解决方案更糟糕

javascript arrays

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

如何为标记为必需的字段定义CSS样式?

我有一个AngularJS和Bootstrap的应用程序,虽然我不确定它是否相关.我想为必填字段定义CSS样式.我看到很多例子,如果字段class='required',例如这里:

.form-group.required .control-label:after {
   content:"*";
   color:red;
}
Run Code Online (Sandbox Code Playgroud)

但是,如果字段有required='required',但没有required类,是否可以这样做?

实际上,我有一个有条件地需要使用的字段,ng-required='chkChecked'虽然我也可以添加ng-class={'required': chkChecked},但如果可能的话,我宁愿避免它

更新只是为了澄清 - 如果它具有"必需"属性,无论它是否具有required类,我都要设置该字段的样式.我的初始问题可以解释为我想要在需要时设置元素的样式,但是没有必需的类.事实并非如此.抱歉.

另外,我宁愿把星号粘贴到输入字段,而不是说的标签,贴到外地本身(这可以通过以下方式实现一个红色边框上input[:required](我不知道).我曾尝试.form-group:required,但由于某种原因它没有做任何事情,虽然我<div class="form-group" required="required">在F12 看到

css css3 twitter-bootstrap angularjs twitter-bootstrap-3

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