我有一个小型的Web应用程序,使用部署在Azure上的Asp.Net Core 1.1开发,效果很好.我刚刚迁移了项目以使用Asp.Net Core 2.0并尝试在Azure上部署它.部署进行得很顺利,但是当我打开网站时,出现了502.5错误.当我检查我的Azure日志流时,我收到以下错误:
当CGI应用程序未返回有效的HTTP标头集,或者代理或网关无法将请求发送到父网关时,会发生此错误.如果不是CGI问题,您可能需要获取网络跟踪或联系代理服务器管理员.
毫无疑问,它在我的开发机器上使用相同的代码运行良好.请注意,我也在使用Entity Framework Core 2.0,尽管我在Azure上停用了数据库创建(以检查它是否不是原因).
有关信息,我从1.1迁移到2.0的方法是将目标框架设置更改为"netcoreapp2.0"并使用NuGet包"Microsoft.AspNetCore.All".只是为了确定,我还删除了我的发布配置文件并重新创建了一个.
是否有可能Azure上尚未提供Asp.Net Core 2.0?我是Asp.Net Core的新手,因此我不知道Azure上何时提供新版本.
编辑
当我尝试通过natemcmaster提出的调试控制台使用dot net CLI运行我的应用程序时,我遇到了以下问题:
未处理的异常:System.IO.FileLoadException:无法加载文件或程序集'Microsoft.AspNetCore.Hosting.Abstractions,Version = 2.0.0.0,Culture = neutral,PublicKeyToken = adb9793829ddae60'.定位的程序集的清单定义与程序集引用不匹配.(HRESULT异常:0x80131040)
我在我的桌面上下载了DLL并使用Dot Net Peak检查了版本,事实上,DLL是1.1.2,虽然我使用Visual Studio创建项目并直接发布它,因此它是Visual Studio的问题吗?还是Nuget?
我目前通过这种方式在" en-US " 上定义" LOCALE_ID " :
@NgModule({
providers: [{ provide: LOCALE_ID, useValue: "en-US" }, ...],
imports: [...],
bootstrap: [...]
})
Run Code Online (Sandbox Code Playgroud)
它运作得很好.但是,为了测试法语中日期的样子,我用" fr-FR " 替换了" en-US " 然后我得到了错误:
缺少区域设置"fr-FR"的区域设置数据.
我做了一些研究,但没有发现任何与之相关的内容.法语的语言环境是否包含在默认包中?这是一个不同的包吗?我必须自己创建它们吗?
我正在尝试使用flexbox进行简单的设计,但我遇到了IE11的问题.基本上,我想要一个仅在内容不够高时才能粘在底部的页脚.我这样做对Chrome没有任何问题:
*,
*:after,
*:before {
box-sizing: border-box;
}
html,
body {
height: 100%;
margin: 0;
padding: 0;
}
body {
display: flex;
flex-direction: column;
}
main {
flex: 1;
}
Run Code Online (Sandbox Code Playgroud)
<header>
Header
</header>
<main>
<p>Main</p>
<p>Main</p>
<p>Main</p>
<p>Main</p>
<p>Main</p>
</main>
<footer>
Footer
</footer>
Run Code Online (Sandbox Code Playgroud)
只需<p>main</p>
使用IE11来查看错误行为的数量即可.
有没有办法在没有JavaScript的情况下实现这一目标?
最近,我决定将使用Angular的"快速入门"从头开始创建的大项目迁移到使用Angular CLI 1.5.5的版本.现在,我正在解决出现的各种问题,我无法解决这个问题.
我读到最好使用rxjs的lettable操作符,我做了它并且它工作得很好.但是,我也有这些代码行:
import { Observable } from "rxjs/Observable";
import "rxjs/add/observable/forkjoin";
...
let piecesGrouping$: Observable<IGroupedPiece[]>[] = deliveries.map(delivery => this._pieceService.getGroupedPieces(delivery.pieces));
Observable
.forkJoin(...piecesGrouping$)
.subscribe((groups) => {
groups.forEach((group, i) => deliveries[i].groupedPieces = group);
resolve();
});
Run Code Online (Sandbox Code Playgroud)
他们在之前使用rxjs 5.4.3的版本中工作得很好,现在使用rxjs 5.5.2,他们不再使用了,我得到以下错误:
错误:未捕获(在承诺中):TypeError:无法读取未定义的属性'apply'TypeError:无法读取未定义的属性'apply'
我试图替换传播操作符,piecesGrouping$[0], piecesGrouping$[1]
因为错误本身没有说什么forkJoin
,然后我得到:
错误:未捕获(在承诺中):TypeError: WEBPACK_IMPORTED_MODULE_8_rxjs_Observable .a.forkJoin不是函数TypeError: WEBPACK_IMPORTED_MODULE_8_rxjs_Observable .a.forkJoin不是函数
所以看起来我输入forkJoin
错误的方式.我试图从"rxjs/observable/forkJoin"导入它,但它也没有用.
我错过了什么?
我正在为我的应用程序使用Angular 2路由,它工作得很好,但我不知道如何定义"其他"路由.因此,如果当前URL与任何"支持"路由不对应,则将显示的路由.
以下是我当前配置的示例:
@RouteConfig([
{ path: '/', name: 'Home', component: StoryComponent, useAsDefault: true },
{ path: '/story', name: 'Story', component: StoryComponent },
{ path: '/subscription', name: 'Subscription', component: SubscriptionComponent}
])
Run Code Online (Sandbox Code Playgroud) 我按照angular2 快速启动创建我的项目,一切正常,但我的"tsc -w"命令行不断告诉我:
app/components/company/company.ts(1,36): error TS2307: Cannot find module '@angular/core'.
app/components/company/company.ts(5,22): error TS2307: Cannot find module '@angular/router'.
app/components/mission/mission.ts(1,36): error TS2307: Cannot find module '@angular/core'.
app/components/mission/mission.ts(3,22): error TS2307: Cannot find module '@angular/router'.
Run Code Online (Sandbox Code Playgroud)
还有很多其他的这样的路线.但是,一切都已成功编译,我的应用程序工作正常,但将所有这些警告/错误作为真正的错误在它们中间丢失是非常烦人的.
我正在使用Angular2 rc1,TypeScript 1.8.10,WebStorm EAP(尽管我没有使用WebStorm TypeScript编译系统,我依赖于带有"tsc -w"命令行的开放式终端).
我在SO上检查了与之相关的其他问题,但我找不到任何真正帮助我的东西.
更新
这是我的tsconfig.json文件:
{
"compilerOptions": {
"target": "es5",
"sourceMap": true,
"experimentalDecorators": true,
"emitDecoratorMetadata": true,
"module": "system",
"noImplicitAny": false,
"outDir": "js",
"rootDir": "app"
},
"exclude": [
"node_modules",
"typings/main",
"typings/main.d.ts"
]
}
Run Code Online (Sandbox Code Playgroud) 我正在创建一个项目,我需要一个"常量"类来包含一些配置值.以下是此类的摘录:
export class Constants
{
static Configuration = class
{
static CookieName:string = 'etl_language';
};
...
static View = class
{
static Militaries:string = 'militaries';
static Mutants:string = 'mutants';
static Objects:string = 'objects';
static Scientists:string = 'scientists';
};
}
Run Code Online (Sandbox Code Playgroud)
当我在Angular 2的组件中时,我可以通过导入它来使用该类:
import {Constants} from "../../misc/constants";
Run Code Online (Sandbox Code Playgroud)
然后,只需参考它:
this.cookieName = Constants.Configuration.CookieName;
Run Code Online (Sandbox Code Playgroud)
它工作得很好,但我觉得我应该使用Angular 2的依赖注入引擎在构造函数中注入对该类的引用,但它似乎有点矫枉过正.但是,我觉得我违反了做事的"角度方式",所以我不知道我是否可以坚持我的解决方案,或者我是否必须使用DI.
有什么建议?
我有以下表格:
const enum Fields {
FirstName = 'firstName',
LastName = 'lastName'
}
interface FormType {
[Fields.FirstName]: FormControl<string | null>;
[Fields.LastName]: FormControl<string | null>;
}
public form!: FormGroup<FormType>;
this.form = new FormGroup({
[Fields.FirstName]: new FormControl(null, { validators: Validators.required }),
[Fields.LastName]: new FormControl(null, { validators: Validators.required }),
});
Run Code Online (Sandbox Code Playgroud)
使用 theenum
是我为了避免输入错误而养成的习惯。
当我这样做时this.form.getRawValue().firstName
, 的类型firstName
被正确定义为string | null
。但是,我更喜欢使用FormBuilder
来构建我的表单,但我找不到使用 来翻译上面表单的方法FormBuilder
。我试过这个:
this.form = this._fb.group<FormType>({
[Fields.FirstName]: ['', Validators.required],
[Fields.LastName]: ['', Validators.required],
});
Run Code Online (Sandbox Code Playgroud)
我当然可以使用一个FormGroup
没有任何类型的简单的,但它会达不到目的:p
然而,这甚至不能作为 的推断类型 …
我正在尝试在 TypeScript 中使用“moment-duration-formation”,但是即使它有效,webpack 仍然抱怨它无法在线找到“format”方法:
return moment.duration(value, "minutes").format("...");
Run Code Online (Sandbox Code Playgroud)
这是package.json
{
"devDependencies": {
"@types/moment-duration-format": "^1.3.7"
},
"dependencies": {
"moment": "^2.18.1",
"moment-duration-format": "^1.3.0"
}
}
Run Code Online (Sandbox Code Playgroud)
和 tsconfig.json:
{
"compilerOptions": {
"typeRoots": [ "./node_modules/@types" ]
}
}
Run Code Online (Sandbox Code Playgroud)
在 (angular2) 组件中:
import * as moment from "moment";
import * as momentDurationFormat from "moment-duration-format";
...
let result: string = moment.duration(this.selectedHangarDistance * 10, "minutes").format("...")
Run Code Online (Sandbox Code Playgroud)
我也尝试过
import "moment-duration-format";
Run Code Online (Sandbox Code Playgroud)
但它并没有改变任何东西:
[at-loader] ./src/app/components/building/shop/shop.component.ts:190:81 TS2339 中出现错误:类型“持续时间”上不存在属性“格式”。
我有一个angular2组件,模板看起来像这样:
<div>
<div><ng-template #left></ng-template></div>
<div><ng-template #right></ng-template></div>
</div>
Run Code Online (Sandbox Code Playgroud)
我希望能够检索所有ng-template
元素的引用,ViewChildren
但我不知道我需要在括号之间传递的类型.
angular ×8
typescript ×3
angular-cli ×1
angular-i18n ×1
angular14 ×1
angularjs ×1
asp.net-core ×1
azure ×1
css ×1
flexbox ×1
formbuilder ×1
html ×1
javascript ×1
momentjs ×1
rxjs ×1
webpack ×1