我有一个带有webbrowser控件的Windows窗体.使用此控件,我需要登录网站,并获取和发布数据.
登录部分将保持手动,因为各种标题和cookie已创建并存储.
但是,是否可以使用控件发送post/get请求?
我的控制器动作被调用两次,我无法弄清楚为什么!
这是一个典型的控制器:
[Authorize]
public abstract class BaseController : ApiController
{
protected readonly ILogService logService;
protected HttpResponseMessage response = null;
protected BaseController(ILogService logService)
{
this.logService = logService;
}
protected override void Initialize(HttpControllerContext controllerContext)
{
base.Initialize(controllerContext);
//check authorization here
}
}
public abstract class EntityController<T> : BaseController
{
public EntityController(ILogService logService) : base(logService) { }
[HttpGet]
public abstract IHttpActionResult Get(int id);
[ActionName("Find")]
[HttpGet]
public virtual IHttpActionResult Find(string param)
{
return null;
}
[HttpPost]
[ValidateModel]
public abstract IHttpActionResult Create(T dto);
[HttpPut]
[ValidateModel]
public …Run Code Online (Sandbox Code Playgroud) 在我的数据库中,我有一个地址表,该表与其他表(例如,客户,员工等)一起用作外键中的主表。
此SQLFiddle显示之间的关系addresses和customers,其中customers具有2个地址。
目前FK设置为ON DELETE NO ACTION,我开始将它们更改为ON DELETE SET NULL。
对于大多数只有一个地址列的表来说,这已经很好用了。在一个只有一个地址列的特定表上,以及在有多个地址列的所有表上,我得到了错误:
消息1785,级别16,状态1,第1
行在表“客户”上引入外键约束“ FK_customers_shipping_address”可能会导致循环或多个级联路径。指定ON DELETE NO ACTION或ON UPDATE NO ACTION,或修改其他FOREIGN KEY约束。消息1750,级别16,状态1,行1
无法创建约束。请参阅先前的错误。
如果我不使用,CASCADE为什么会出现此错误?有没有解决的办法?
我有这两个实体:
public class Parent
{
public ICollection<Child> Children {get; set;}
}
public class Child
{
public decimal Percentage {get; set;}
}
Run Code Online (Sandbox Code Playgroud)
我想添加验证规则,以便Percentage所有子项的总数为100.如何在以下验证器中添加此规则?
public ParentValidator()
{
RuleFor(x => x.Children).SetCollectionValidator(new ChildValidator());
}
private class ChildValidator : AbstractValidator<Child>
{
public ChildValidator()
{
RuleFor(x => x.Percentage).GreaterThan(0));
}
}
Run Code Online (Sandbox Code Playgroud) 我正在使用最新版本的CefSharp,我需要显示Flash.使用Chrome时,页面会正确显示.但是,当使用CefSharp时它不会.
到目前为止我试过:
var browser = new ChromiumWebBrowser(URL)
{
BrowserSettings = new BrowserSettings() {
Java = CefState.Enabled,
Plugins = CefState.Enabled,
},
Dock = DockStyle.Fill
};
Run Code Online (Sandbox Code Playgroud)
当我加载时,about:plugins我得到:
CEF 3.2357.1287.g861c26e
铬43.0.2357.130
操作系统Windows
WebKit 537.36
JavaScript 4.3.61.30
闪
用户代理Mozilla/5.0(Windows NT 6.2; Win64; x64)AppleWebKit/537.36(KHTML,与Gecko一样)Chrome/43.0.2357.130 Safari/537.36
如何在CefSharp中启用Flash?
我有一个简单的DTO类,我将其设置为窗体上绑定源的数据源.
表单包含具有Value属性的自定义控件.这是属性:
[Browsable(false)]
[Bindable(BindableSupport.Yes, BindingDirection.TwoWay)]
public virtual T Value
{
get { return this.value; }
set { this.value = value; }
}
Run Code Online (Sandbox Code Playgroud)
当控件绑定到bindingsource时,setter被调用6次.当控件未绑定时,setter仅被调用2次
在这两种情况下,第一次调用是因为设计器代码有一行:
mycontrol.Value = null;
Run Code Online (Sandbox Code Playgroud)
最后一次调用是因为我设置了一个值.所以第一次和最后一次通话都是正常的.但是当绑定控件时,为什么setter被称为额外4次?
我有以下方法提交更改数据库(使用实体框架):
public async Task<int> CommitAsync(Info info)
{
if (this.Database.Connection.State == ConnectionState.Closed)
await this.Database.Connection.OpenAsync();
await SetInfo(info);
return await base.SaveChangesAsync();
}
Run Code Online (Sandbox Code Playgroud)
以上方法是否可以安全使用,或者我应该:
async-await,或ContinueWith我有一个模型类:
public class MyModel() { //properties here... }
Run Code Online (Sandbox Code Playgroud)
我想验证一个MyModel对象列表。所以我创建了这个验证器:
class MyModelListValidator : AbstractValidator<List<MyModel>>
{
public MyModelListValidator ()
{
RuleFor(x => x)
.SetCollectionValidator(new MyModelValidator())
.When(x => x != null);
}
private class MyModelValidator : AbstractValidator<MyModel>
{
public MyModelValidator()
{
//MyModel property validation here...
}
}
}
Run Code Online (Sandbox Code Playgroud)
但上面的不起作用。另一种方法是创建一个类,如:
public class MyModelList()
{
public List<MyModel> Items { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
这会奏效。
但是有没有办法在不使用这个额外类的情况下做到这一点?
我按如下方式装饰了一个动作
[SwaggerResponse(HttpStatusCode.OK, "List of customers", typeof(List<CustomerDto>))]
[SwaggerResponse(HttpStatusCode.NotFound, Type = typeof(NotFoundException))]
Run Code Online (Sandbox Code Playgroud)
OK模型显示正确.
但是,在Repsonse Messages下,我得到'对象不是原始' NotFound.自定义异常派生自Exception,实现ISerializable,也有[Serializable]和[DataContract()]
如何显示实际数据类型而不是消息?
另外,如果我使用这些属性装饰所有动作,那么在正常使用WebApi时是否会导致性能下降?
我正在将我的 ASP.Net 应用程序迁移到 ASP.Net 核心,我拥有的一项功能是我的所有控制器都继承自我所做的基本控制器:
protected override void Initialize(HttpControllerContext controllerContext)
{
base.Initialize(controllerContext);
string token = controllerContext.Request.Properties["token"] as string;
user = UserCache.Get(token);
//Called by derived controllers
//to set their repository user
SetInfo();
}
Run Code Online (Sandbox Code Playgroud)
我需要将上面的代码移动到中间件吗?中间件是否允许我设置调用控制器的 SetInfo() 方法?
c# ×9
asp.net ×2
winforms ×2
asp.net-core ×1
asp.net-mvc ×1
async-await ×1
asynchronous ×1
cefsharp ×1
data-binding ×1
flash ×1
http ×1
sql ×1
sql-server ×1
swagger ×1
swashbuckle ×1