If there is a possibility to do it automatically I sure want to know. I always upgrade as follows: Assuming you have all checked in to source control (we use tfs)
It took me 3 hours to upgrade. But good testing is very hard and takes a lot of time.
Hopefully this will help you, good luck!
When testing our application we ran into the problem that we couldn't register as a new user or reset the password. Looks like the Register.js and ResetPassword.js are cousing the trouble. These files are coming with the download on <a class="postlink" href="https://aspnetzero.com/Download">https://aspnetzero.com/Download</a>. If I compare sources on github there is a difference
Update: The PasswordComplexityHelper is causing the problems. Also if the password meets the requirements it will never submits the form. If I delete the _passwordComplexityHelper code from the javascript files everything works fine, except for the check on the password complexity of course. I think the problem is in
jQuery.validator.addMethod("passwordComplexity", function (value, element) {
there is a rule
if (setting.useUpperCaseLetters && !/[a-z]/.test(value)) {
return false;
}
This always gives false and that's why it never submits. I think it should be
if (setting.useLowerCaseLetters && !/[a-z]/.test(value)) {
return false;
}
Also if you don't configure the maxlength or min length this also goes wrong, because it compares it with zero. Of course this is always true
if (value.length < setting.minLength) {
and because of that it always give a validation error.
Thanks for the response, I think your right.
I ended up with the following code and this work fine, but is it the right way to do it?
[AbpAuthorize(AppPermissions.Pages_Tenant_Projects_Schedules_Edit)]
protected virtual async Task UpdateProjectSchedules(CreateOrUpdateProjectScheduleInput input)
{
await _projectValidationManager.ValidateProjectDefaults(input.ProjectId);
await _projectScheduleValidationManager.ValidateUpdateProjectSchedule(input);
var existingProjectSchedule = await _scheduleRepository.GetAsync(input.Id.Value);
existingProjectSchedule = Mapper.Map<CreateOrUpdateProjectScheduleInput, ProjectSchedules>(input, existingProjectSchedule);
}
Hi,
Thank you for your reply. Getting the record first will work, but getting records before every update is an expensive database call. Especially when a lot of users use the application and do a lot of updates and it seems not really necsessary. I saw in debug mode that tenantId becomes 0 when doing the mapping, this is ok since it doen's know what value it should be. The strange thing is that it worked in an earlier release, and also it works with a create. Also in that case the tenantId becomes 0 when a mapping is done. Abp framework checks if it is empty or zero and adds the tenantid with the one from session.
We also have the same issue. We also using S1 from Azure. Warm up time is slow, after warmup it runs very well, but if de website is ide for about 1 min it is very slow again. I'm also curious if there is a tweak for this.
Hi Ismcagdas,
The problem still exists, but we solved it by setting the tenantId with the one from the session. But I don't think this is a nice solution. I think the tenantid is not set anymore in de abp filtering for updates. I just upgraded to the latest version 1.0.0
var projectDelivery = input.MapTo<ProjectDeliveries>();
projectDelivery.TenantId = AbpSession.TenantId.Value;
return await _deliveriesRepository.UpdateAsync(projectDelivery);
We don't use the database per tentant functionality. It also doesn't clarify why it does work with a get or create.
After upgrading to the latest version of ABP we have a problem when updating a record the tenantId becomes 0 and records will not be visible in the application anymore. When getting or creating records there is no problem, only when updating a record.
Here is some example code we use to update a record. Before the upgrade this code worked fine!
[AbpAuthorize(AppPermissions.Pages_Tenant_Projects_Deliveries_Edit)]
private async Task<ProjectDeliveries> UpdateProjectDelivery(CreateOrUpdateProjectDeliveryInput input)
{
await _projectValidationManager.ValidateProjectDefaults(input.ProjectId);
await _deliveryValidationManager.ValidateUpdateProjectDelivery(input);
var projectDelivery = input.MapTo<ProjectDeliveries>();
return await _deliveriesRepository.UpdateAsync(projectDelivery);
}
Thanks ismcagdas, I didn't knew there was a logfile for that. When opening the logfile the problem was immediately clear. "Only one complex type allowed as argument to a web api controller action". Strange thing is that I didn't change that code and sometimes it worked and sometimes it didn't.
You have made up my day!!!
After changing some frontend code which has nothing to do with webapi's I get error messages in the browser
Already tried to rebuild the whole solution but no effect. It's driving me nuts!