我正在编写一个上传函数,并且httpRuntime在web.config中使用大于指定最大大小的文件时捕获"System.Web.HttpException:超出最大请求长度"时遇到问题(最大大小设置为5120).我正在使用一个简单<input>的文件.
问题是在上传按钮的click-event之前抛出了异常,并且异常发生在我的代码运行之前.那么如何捕获和处理异常呢?
编辑:异常立即抛出,所以我很确定它不是由于连接速度慢导致的超时问题.
我不确定在TypeScript中处理"this"范围的最佳方法.
这是我转换为TypeScript的代码中常见模式的示例:
class DemonstrateScopingProblems {
private status = "blah";
public run() {
alert(this.status);
}
}
var thisTest = new DemonstrateScopingProblems();
// works as expected, displays "blah":
thisTest.run();
// doesn't work; this is scoped to be the document so this.status is undefined:
$(document).ready(thisTest.run);
Run Code Online (Sandbox Code Playgroud)
现在,我可以将呼叫改为......
$(document).ready(thisTest.run.bind(thisTest));
Run Code Online (Sandbox Code Playgroud)
......确实有效.但它有点可怕.这意味着代码可以在某些情况下编译和工作正常,但如果我们忘记绑定范围,它将会中断.
我想在类中做一个方法,这样在使用类时我们不需要担心"this"的作用范围.
有什么建议?
另一种方法是使用胖箭头:
class DemonstrateScopingProblems {
private status = "blah";
public run = () => {
alert(this.status);
}
}
Run Code Online (Sandbox Code Playgroud)
这是一种有效的方法吗?
我已经从传统形式转换了一些类:
class TestOverloads {
private status = "blah";
public doStuff(selector: JQuery);
public doStuff(selector: string);
public doStuff(selector: any) {
alert(this.status);
}
}
Run Code Online (Sandbox Code Playgroud)
改为使用箭头函数表达式:
class TestOverloads2 {
private status = "blah";
public doStuff = (selector: any) => {
alert(this.status);
}
}
Run Code Online (Sandbox Code Playgroud)
以便在回调中使用类方法时避免使用作用域问题(请参阅此处了解背景信息).
我无法弄清楚如何重新创建我的重载函数签名.使用胖箭时如何编写重载?
谁能解释为什么这段代码有效:
public class AdministratorSettingValidationAttribute : Attribute
{
public AdministratorSettingValidationAttribute(AdministratorSettingDataType administratorSettingDataType)
{
DataType = administratorSettingDataType;
}
public AdministratorSettingValidationAttribute(AdministratorSettingDataType administratorSettingDataType, Type enumerationType)
{
DataType = administratorSettingDataType;
EnumerationType = enumerationType;
}
}
Run Code Online (Sandbox Code Playgroud)
...但重构它以使用可选参数:
public AdministratorSettingValidationAttribute(AdministratorSettingDataType administratorSettingDataType, Type enumerationType = null)
{
DataType = administratorSettingDataType;
EnumerationType = enumerationType;
}
Run Code Online (Sandbox Code Playgroud)
...导致编译时错误:" 属性参数必须是属性参数类型的常量表达式,typeof表达式或数组创建表达式 ".
我正在使用启用了延迟加载的Entity Framework Core 2.1.2,并使用AsNoTracking执行查询。我正在使用Include来引入我的导航属性(一个集合)。
如果我所有的实体中至少有一个孩子,则一切正常。
但是,如果我的任何实体都没有子代,那么我会得到一个错误:
System.InvalidOperationException:生成警告“ Microsoft.EntityFrameworkCore.Infrastructure.DetachedLazyLoadingWarning”的错误:尝试对类型为“ ParentProxy”的分离实体延迟加载导航属性“ Children”。分离的实体或使用'AsNoTracking()'加载的实体不支持延迟加载。
这是问题的重现(使用NuGet引入Microsoft.EntityFrameworkCore 2.1.2,Microsoft.EntityFrameworkCore.Proxies 2.1.2,Microsoft.EntityFrameworkCore.InMemory 2.1.2之后,可以从控制台应用程序运行该问题):
using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.EntityFrameworkCore;
namespace LazyLoadingIssue
{
public class Parent
{
public int Id { get; set; }
public string ParentName { get; set; }
public virtual ICollection<Child> Children { get; set; }
}
public class Child
{
public int Id { get; set; }
public int ParentId { get; set; }
public virtual Parent Parent { get; set; }
public string …Run Code Online (Sandbox Code Playgroud) 有没有办法为匿名类添加额外的属性(或创建具有额外属性的新实例)?
string cssClasses = "hide";
object viewData = new { @class = cssClasses };
if (suppliedId != null)
{
// add an extra id property to the viewData somehow...
// desired end result is { @id = suppliedId, @class = cssClasses }
}
// ... code will be passing the viewData as the additionalViewData parameter in asp.mvc's .EditorFor method
Run Code Online (Sandbox Code Playgroud) 我正在尝试构建一个将应用于IQueryable集合的表达式.
我可以构建一个这样的表达式:
[TestClass]
public class ExpressionTests
{
private IQueryable<MyEntity> entities;
private class MyEntity
{
public string MyProperty { get; set; }
}
[TestInitialize]
public void Setup()
{
entities = new[]
{
new MyEntity {MyProperty = "first"},
new MyEntity {MyProperty = "second"}
}.AsQueryable();
}
[TestMethod]
public void TestQueryingUsingSingleExpression()
{
Expression<Func<MyEntity, bool>> expression = e => e.MyProperty.Contains("irs");
Assert.AreEqual(1, entities.Where(expression).Count());
}
}
Run Code Online (Sandbox Code Playgroud)
现在我想分开表达式的两个部分:
[TestMethod]
public void TestQueryingByCombiningTwoExpressions()
{
Expression<Func<MyEntity, string>> fieldExpression = e => e.MyProperty;
Expression<Func<string, bool>> operatorExpression = e => e.Contains("irs");
// …Run Code Online (Sandbox Code Playgroud) 打字稿intellisense工作正常:
class SampleClass {
/**
* Does stuff
*
* @param blah stuff needing done
*/
public doStuff(blah: string) {
}
}
var sample = new SampleClass();
// intellisense works correctly and shows parameter description:
sample.doStuff("hello");
Run Code Online (Sandbox Code Playgroud)
但是切换到使用胖箭头似乎打破了jsdoc intellisense(方法签名仍然出现,但jsdoc描述都没有):
class SampleClass2 {
/**
* Does stuff
*
* @param blah stuff needing done
*/
public doStuff = (blah: string) => {
}
}
var sample2 = new SampleClass2();
// intellisense gives the method signature still but no longer picks up any …Run Code Online (Sandbox Code Playgroud) 我正在尝试将旧的 WCF 客户端转换为 dotnet core。我成功地从 wsdl 生成了代理,并一直在尝试配置它们,以便我可以成功调用端点。根据一些谷歌搜索,似乎在 dotnet core 下我需要从代码配置我的 WCF 客户端。
以下是旧应用程序 web.config 中的 WCF 配置部分:
<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
<behaviors>
<endpointBehaviors>
<behavior name="clientEndpointCredential">
<clientCredentials>
<clientCertificate storeName="My" storeLocation="LocalMachine" x509FindType="FindBySubjectName" findValue="CERTNAME" />
</clientCredentials>
</behavior>
</endpointBehaviors>
</behaviors>
<bindings>
<basicHttpBinding>
<binding name="OUR_Customer_OUTBinding" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" maxBufferSize="2147483647" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647" messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered" useDefaultWebProxy="true">
<readerQuotas maxDepth="32" maxStringContentLength="5242880" maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="16384" />
<security mode="Transport">
<transport clientCredentialType="Certificate" proxyCredentialType="None" realm="" />
</security>
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint address="https://the-full-url" behaviorConfiguration="clientEndpointCredential" binding="basicHttpBinding" bindingConfiguration="OUR_Customer_OUTBinding" contract="CustomerInterface.OUR_Customer_OUT" name="HTTPS_Port" …Run Code Online (Sandbox Code Playgroud) 我正在尝试调试在我们的 TFS 构建代理上运行的 msbuild 脚本。我对构建代理服务器没有权限。
有没有一种方法可以向我的 msbuild 脚本(“消息”或类似脚本)添加一些调试功能,以输出给定目录中所有文件的列表?
我正在使用meteor编写应用程序,我需要在某个时间每晚运行一个进程.此过程将需要访问Meteor的Mongo数据库,并且也将受益于其他Meteor功能.
是否可以按计划运行流星过程或某种类型的任务?或者我需要使用不同的堆栈来实现我想要的吗?
我正在尝试将TypeScript(0.9.5)安装到我的工作PC上的Visual Studio 2012中,它只有IE8(我知道,我知道,这是一种可怕的事态......).
安装过程无法完成,并说我应该先安装IE10.
有没有人有任何变通办法可以让我在保持IE8的同时安装它?
c# ×4
typescript ×4
.net ×1
.net-core ×1
asp.net ×1
asp.net-mvc ×1
ef-core-2.1 ×1
jsdoc ×1
linq ×1
meteor ×1
msbuild ×1
this ×1
wcf ×1
wcf-binding ×1
wcf-security ×1