Hello,
i am trying to add a custom method into the repository base, but when i do it doesn't show as an available option in the IRepository interface. Here is the declaration
public abstract class PortalRepositoryBase<TEntity, TPrimaryKey> : EfRepositoryBase<PortalDbContext, TEntity, TPrimaryKey>
where TEntity : class, IEntity<TPrimaryKey>
{
public ILogger Logger { get; set; }
protected PortalRepositoryBase(IDbContextProvider<PortalDbContext> dbContextProvider)
: base(dbContextProvider)
{
Logger = NullLogger.Instance;
}
//add common methods for all repositories
public void Test()
{
}
}
public abstract class PortalRepositoryBase<TEntity> : PortalRepositoryBase<TEntity, int>
where TEntity : class, IEntity<int>
{
protected PortalRepositoryBase(IDbContextProvider<PortalDbContext> dbContextProvider)
: base(dbContextProvider)
{
}
//do not add any method here, add to the class above (since this inherits it)
}
}
and this is the implementation
public class AccountManager : AutoTaskBase, IAccountManager
{
private readonly IRepository<Account, long> _acountRepository;
public AccountManager(
IRepository<Account, long> accountRepository)
{
_accountRepository = accountRepository;
}
public voidRefreshAccountsAsync()
{
_accountRepository.Test();
}
Is this the correct usage or do you have to implement a custom repository? The Test method is unavailable here . Thanks
Hello,
i am currently just building a page to manage permissions.
I am using jstree to populate the tree and then submitting the selected (and half selected) checkboxes. The form is submitted to an app service method. The permissions are obtained via this method
var permissions = _permissionManager.GetAllPermissions().Where(p => updateUser.GrantedPermissions.Contains(p.Name));
where "updateUser.GrantedPermissions" is a list of string of the checkboxes.
i then call this method
await _userManager.SetGrantedPermissionsAsync(user, permissions);
Which all seems to work fine, i can see a new entry in the database which sets the IsGranted column for that particular permission/user to the correct value. The issue is when i come to load the permissions back up. When i make the call to pull the Permissions out of the database using this method
var grantedPermissions = await _userManager.GetGrantedPermissionsAsync(user);
the newly applied permission does not show. The newly applied permission only shows when i restart the application (in visual studio debug).
So it looks like it is caching the permissions maybe? My question is, is there any caching on permissions? if so, is there anyway i can disable it so it always queries for the latest permissions?
Many Thanks Thomas
Hello,
I am running this bit of code from an MVC controller. The method has the UnitOfWork attribute and is virtual,
This is the bit of code where the exception is thrown
var roles = await _roleManager.Roles.Where(r => r.IsDefault).ToListAsync();
This is the exception that is being thrown
System.Reflection.AmbiguousMatchException occurred HResult=-2147475171 Message=Ambiguous match found. Source=mscorlib StackTrace: at System.RuntimeType.GetPropertyImpl(String name, BindingFlags bindingAttr, Binder binder, Type returnType, Type[] types, ParameterModifier[] modifiers) at System.Type.GetProperty(String name, BindingFlags bindingAttr) at System.Linq.Expressions.Expression.PropertyOrField(Expression expression, String propertyOrFieldName) at Abp.Domain.Repositories.AbpRepositoryBase
2.CreateEqualityExpressionForId(TPrimaryKey id) in D:\Halil\GitHub\aspnetboilerplate\src\Abp\Domain\Repositories\AbpRepositoryBase.cs:line 257 at Abp.Domain.Repositories.AbpRepositoryBase
2.FirstOrDefault(TPrimaryKey id) in D:\Halil\GitHub\aspnetboilerplate\src\Abp\Domain\Repositories\AbpRepositoryBase.cs:line 99 at Castle.Proxies.Invocations.AbpRepositoryBase2_FirstOrDefault_30.InvokeMethodOnTarget() at Castle.DynamicProxy.AbstractInvocation.Proceed() at Abp.Domain.Uow.UnitOfWorkInterceptor.PerformSyncUow(IInvocation invocation, UnitOfWorkOptions options) in D:\Halil\GitHub\aspnetboilerplate\src\Abp\Domain\Uow\UnitOfWorkInterceptor.cs:line 54 at Abp.Domain.Uow.UnitOfWorkInterceptor.PerformUow(IInvocation invocation, UnitOfWorkOptions options) in D:\Halil\GitHub\aspnetboilerplate\src\Abp\Domain\Uow\UnitOfWorkInterceptor.cs:line 47 at Abp.Domain.Uow.UnitOfWorkInterceptor.Intercept(IInvocation invocation) in D:\Halil\GitHub\aspnetboilerplate\src\Abp\Domain\Uow\UnitOfWorkInterceptor.cs:line 35 at Castle.DynamicProxy.AbstractInvocation.Proceed() at Castle.Proxies.EfRepositoryBase
2Proxy_1.FirstOrDefault(Int32 id) at Abp.Domain.Repositories.AbpRepositoryBase2.Get(TPrimaryKey id) in D:\Halil\GitHub\aspnetboilerplate\src\Abp\Domain\Repositories\AbpRepositoryBase.cs:line 68 at Castle.Proxies.Invocations.AbpRepositoryBase
2_Get_15.InvokeMethodOnTarget() at Castle.DynamicProxy.AbstractInvocation.Proceed() at Abp.Domain.Uow.UnitOfWorkInterceptor.PerformSyncUow(IInvocation invocation, UnitOfWorkOptions options) in D:\Halil\GitHub\aspnetboilerplate\src\Abp\Domain\Uow\UnitOfWorkInterceptor.cs:line 54 at Abp.Domain.Uow.UnitOfWorkInterceptor.PerformUow(IInvocation invocation, UnitOfWorkOptions options) in D:\Halil\GitHub\aspnetboilerplate\src\Abp\Domain\Uow\UnitOfWorkInterceptor.cs:line 47 at Abp.Domain.Uow.UnitOfWorkInterceptor.Intercept(IInvocation invocation) in D:\Halil\GitHub\aspnetboilerplate\src\Abp\Domain\Uow\UnitOfWorkInterceptor.cs:line 35 at Castle.DynamicProxy.AbstractInvocation.Proceed() at Castle.Proxies.EfRepositoryBase2Proxy_1.Get(Int32 id) at Abp.MultiTenancy.TenantCache
2.GetTenant(Int32 tenantId) in D:\Halil\GitHub\module-zero\src\Abp.Zero\MultiTenancy\TenantCache.cs:line 60 at Castle.Proxies.Invocations.TenantCache2_GetTenant.InvokeMethodOnTarget() at Castle.DynamicProxy.AbstractInvocation.Proceed() at Abp.Domain.Uow.UnitOfWorkInterceptor.PerformSyncUow(IInvocation invocation, UnitOfWorkOptions options) in D:\Halil\GitHub\aspnetboilerplate\src\Abp\Domain\Uow\UnitOfWorkInterceptor.cs:line 54 at Abp.Domain.Uow.UnitOfWorkInterceptor.PerformUow(IInvocation invocation, UnitOfWorkOptions options) in D:\Halil\GitHub\aspnetboilerplate\src\Abp\Domain\Uow\UnitOfWorkInterceptor.cs:line 47 at Abp.Domain.Uow.UnitOfWorkInterceptor.Intercept(IInvocation invocation) in D:\Halil\GitHub\aspnetboilerplate\src\Abp\Domain\Uow\UnitOfWorkInterceptor.cs:line 35 at Castle.DynamicProxy.AbstractInvocation.Proceed() at Castle.Proxies.TenantCache
2Proxy.GetTenant(Int32 tenantId) at Abp.MultiTenancy.TenantCache2.<>c__DisplayClass4_0.<Get>b__0() in D:\Halil\GitHub\module-zero\src\Abp.Zero\MultiTenancy\TenantCache.cs:line 38 at Abp.Runtime.Caching.TypedCacheExtensions.<>c__DisplayClass0_0
2.<Get>b__0(TKey k) in D:\Halil\GitHub\aspnetboilerplate\src\Abp\Runtime\Caching\TypedCacheExtensions.cs:line 13 at Abp.Runtime.Caching.CacheExtensions.<>c__DisplayClass3_02.<Get>b__0(String k) in D:\Halil\GitHub\aspnetboilerplate\src\Abp\Runtime\Caching\CacheExtensions.cs:line 28 at Abp.Runtime.Caching.CacheBase.Get(String key, Func
2 factory) in D:\Halil\GitHub\aspnetboilerplate\src\Abp\Runtime\Caching\CacheBase.cs:line 42 at Abp.Runtime.Caching.CacheExtensions.Get[TKey,TValue](ICache cache, TKey key, Func2 factory) in D:\Halil\GitHub\aspnetboilerplate\src\Abp\Runtime\Caching\CacheExtensions.cs:line 28 at Abp.Runtime.Caching.TypedCacheWrapper
2.Get(TKey key, Func2 factory) in D:\Halil\GitHub\aspnetboilerplate\src\Abp\Runtime\Caching\TypedCacheWrapper.cs:line 52 at Abp.Runtime.Caching.TypedCacheExtensions.Get[TKey,TValue](ITypedCache
2 cache, TKey key, Func1 factory) in D:\Halil\GitHub\aspnetboilerplate\src\Abp\Runtime\Caching\TypedCacheExtensions.cs:line 13 at Abp.MultiTenancy.TenantCache
2.Get(Int32 tenantId) in D:\Halil\GitHub\module-zero\src\Abp.Zero\MultiTenancy\TenantCache.cs:line 0 at Castle.Proxies.Invocations.TenantCache2_Get.InvokeMethodOnTarget() at Castle.DynamicProxy.AbstractInvocation.Proceed() at Abp.Domain.Uow.UnitOfWorkInterceptor.Intercept(IInvocation invocation) in D:\Halil\GitHub\aspnetboilerplate\src\Abp\Domain\Uow\UnitOfWorkInterceptor.cs:line 35 at Castle.DynamicProxy.AbstractInvocation.Proceed() at Castle.Proxies.TenantCache
2Proxy.Get(Int32 tenantId) at Abp.Zero.EntityFramework.DbPerTenantConnectionStringResolver.GetNameOrConnectionString(DbPerTenantConnectionStringResolveArgs args) in D:\Halil\GitHub\module-zero\src\Abp.Zero.EntityFramework\Zero\EntityFramework\DbPerTenantConnectionStringResolver.cs:line 57 at Abp.Zero.EntityFramework.DbPerTenantConnectionStringResolver.GetNameOrConnectionString(ConnectionStringResolveArgs args) in D:\Halil\GitHub\module-zero\src\Abp.Zero.EntityFramework\Zero\EntityFramework\DbPerTenantConnectionStringResolver.cs:line 46 at Abp.Domain.Uow.UnitOfWorkBase.ResolveConnectionString(ConnectionStringResolveArgs args) in D:\Halil\GitHub\aspnetboilerplate\src\Abp\Domain\Uow\UnitOfWorkBase.cs:line 332 at Abp.EntityFramework.Uow.EfUnitOfWork.GetOrCreateDbContext[TDbContext](Nullable1 multiTenancySide) in D:\Halil\GitHub\aspnetboilerplate\src\Abp.EntityFramework\EntityFramework\Uow\EfUnitOfWork.cs:line 145 at Abp.EntityFramework.Uow.UnitOfWorkExtensions.GetDbContext[TDbContext](IActiveUnitOfWork unitOfWork, Nullable
1 multiTenancySide) in D:\Halil\GitHub\aspnetboilerplate\src\Abp.EntityFramework\EntityFramework\Uow\UnitOfWorkExtensions.cs:line 38 at Abp.EntityFramework.Uow.UnitOfWorkDbContextProvider1.GetDbContext(Nullable
1 multiTenancySide) in D:\Halil\GitHub\aspnetboilerplate\src\Abp.EntityFramework\EntityFramework\Uow\UnitOfWorkDbContextProvider.cs:line 38 at Castle.Proxies.EfRepositoryBase2Proxy_3.get_Context_callback() at Castle.Proxies.Invocations.EfRepositoryBase
3_get_Context_22.InvokeMethodOnTarget() at Castle.DynamicProxy.AbstractInvocation.Proceed() at Abp.Domain.Uow.UnitOfWorkInterceptor.PerformSyncUow(IInvocation invocation, UnitOfWorkOptions options) in D:\Halil\GitHub\aspnetboilerplate\src\Abp\Domain\Uow\UnitOfWorkInterceptor.cs:line 54 at Abp.Domain.Uow.UnitOfWorkInterceptor.PerformUow(IInvocation invocation, UnitOfWorkOptions options) in D:\Halil\GitHub\aspnetboilerplate\src\Abp\Domain\Uow\UnitOfWorkInterceptor.cs:line 47 at Abp.Domain.Uow.UnitOfWorkInterceptor.Intercept(IInvocation invocation) in D:\Halil\GitHub\aspnetboilerplate\src\Abp\Domain\Uow\UnitOfWorkInterceptor.cs:line 35 at Castle.DynamicProxy.AbstractInvocation.Proceed() at Castle.Proxies.EfRepositoryBase2Proxy_3.get_Context() at Abp.EntityFramework.Repositories.EfRepositoryBase
3.get_Table() in D:\Halil\GitHub\aspnetboilerplate\src\Abp.EntityFramework\EntityFramework\Repositories\EfRepositoryBaseOfTEntityAndTPrimaryKey.cs:line 30 at Castle.Proxies.Invocations.EfRepositoryBase3_get_Table_22.InvokeMethodOnTarget() at Castle.DynamicProxy.AbstractInvocation.Proceed() at Abp.Domain.Uow.UnitOfWorkInterceptor.PerformSyncUow(IInvocation invocation, UnitOfWorkOptions options) in D:\Halil\GitHub\aspnetboilerplate\src\Abp\Domain\Uow\UnitOfWorkInterceptor.cs:line 54 at Abp.Domain.Uow.UnitOfWorkInterceptor.PerformUow(IInvocation invocation, UnitOfWorkOptions options) in D:\Halil\GitHub\aspnetboilerplate\src\Abp\Domain\Uow\UnitOfWorkInterceptor.cs:line 47 at Abp.Domain.Uow.UnitOfWorkInterceptor.Intercept(IInvocation invocation) in D:\Halil\GitHub\aspnetboilerplate\src\Abp\Domain\Uow\UnitOfWorkInterceptor.cs:line 35 at Castle.DynamicProxy.AbstractInvocation.Proceed() at Castle.Proxies.EfRepositoryBase
2Proxy_3.get_Table() at Castle.Proxies.EfRepositoryBase2Proxy_3.GetAll_callback() at Castle.Proxies.Invocations.EfRepositoryBase
3_GetAll_22.InvokeMethodOnTarget() at Castle.DynamicProxy.AbstractInvocation.Proceed() at Abp.Domain.Uow.UnitOfWorkInterceptor.PerformSyncUow(IInvocation invocation, UnitOfWorkOptions options) in D:\Halil\GitHub\aspnetboilerplate\src\Abp\Domain\Uow\UnitOfWorkInterceptor.cs:line 54 at Abp.Domain.Uow.UnitOfWorkInterceptor.PerformUow(IInvocation invocation, UnitOfWorkOptions options) in D:\Halil\GitHub\aspnetboilerplate\src\Abp\Domain\Uow\UnitOfWorkInterceptor.cs:line 47 at Abp.Domain.Uow.UnitOfWorkInterceptor.Intercept(IInvocation invocation) in D:\Halil\GitHub\aspnetboilerplate\src\Abp\Domain\Uow\UnitOfWorkInterceptor.cs:line 35 at Castle.DynamicProxy.AbstractInvocation.Proceed() at Castle.Proxies.EfRepositoryBase2Proxy_3.GetAll() at Abp.Authorization.Roles.AbpRoleStore
2.get_Roles() in D:\Halil\GitHub\module-zero\src\Abp.Zero\Authorization\Roles\AbpRoleStore.cs:line 42 at Microsoft.AspNet.Identity.RoleManager2.get_Roles() at Castle.Proxies.Invocations.RoleManager
2_get_Roles.InvokeMethodOnTarget() at Castle.DynamicProxy.AbstractInvocation.Proceed() at Abp.Domain.Uow.UnitOfWorkInterceptor.Intercept(IInvocation invocation) in D:\Halil\GitHub\aspnetboilerplate\src\Abp\Domain\Uow\UnitOfWorkInterceptor.cs:line 35 at Castle.DynamicProxy.AbstractInvocation.Proceed() at Castle.Proxies.RoleManagerProxy.get_Roles() at Portal.Web.Areas.Tools.Controllers.UsersController.<CreateUser>d__17.MoveNext() in C:\Users\admin.tom.adams.CTL-PORTAL\Documents\Visual Studio 2015\Projects\Portal\Portal.Web\Areas\Tools\Controllers\UsersController.cs:line 301 InnerException:
Any ideas what could be causing this? Thanks
Hello,
I seemed to have developed a bit of an issue since updating to abp v0.9.1.1 from 0.8.4.1.
Currently i have this background worker and it throws the following exception
System.Transactions.TransactionAbortedException occurred HResult=-2146233087 Message=The transaction has aborted. Source=System.Transactions StackTrace: at System.Transactions.TransactionStateAborted.BeginCommit(InternalTransaction tx, Boolean asyncCommit, AsyncCallback asyncCallback, Object asyncState) at System.Transactions.CommittableTransaction.Commit() at System.Transactions.TransactionScope.InternalDispose() at System.Transactions.TransactionScope.Dispose() at Abp.EntityFramework.Uow.EfUnitOfWork.DisposeUow() in D:\Halil\GitHub\aspnetboilerplate\src\Abp.EntityFramework\EntityFramework\Uow\EfUnitOfWork.cs:line 191 at Abp.EntityFramework.Uow.EfUnitOfWork.CompleteUow() in D:\Halil\GitHub\aspnetboilerplate\src\Abp.EntityFramework\EntityFramework\Uow\EfUnitOfWork.cs:line 89 at Abp.Domain.Uow.UnitOfWorkBase.Complete() in D:\Halil\GitHub\aspnetboilerplate\src\Abp\Domain\Uow\UnitOfWorkBase.cs:line 239 at Abp.Domain.Uow.UnitOfWorkInterceptor.PerformSyncUow(IInvocation invocation, UnitOfWorkOptions options) in D:\Halil\GitHub\aspnetboilerplate\src\Abp\Domain\Uow\UnitOfWorkInterceptor.cs:line 54 at Abp.Domain.Uow.UnitOfWorkInterceptor.PerformUow(IInvocation invocation, UnitOfWorkOptions options) in D:\Halil\GitHub\aspnetboilerplate\src\Abp\Domain\Uow\UnitOfWorkInterceptor.cs:line 47 at Abp.Domain.Uow.UnitOfWorkInterceptor.Intercept(IInvocation invocation) in D:\Halil\GitHub\aspnetboilerplate\src\Abp\Domain\Uow\UnitOfWorkInterceptor.cs:line 35 at Castle.DynamicProxy.AbstractInvocation.Proceed() at Castle.Proxies.EfRepositoryBase`3Proxy_18.GetAllList() at Portal.AutoTask.DownloadAutoTaskContactsFull.DoWork() in C:\Users\admin.tom.adams.CTL-PORTAL\Documents\Visual Studio 2015\Projects\Portal\Portal.Application\AutoTask\BackgroundWorkers.cs:line 208 InnerException: HResult=-2146233083 Message=Transaction Timeout InnerException:
Here is the actual background job. As you can see its very simple (just testing at the moment).
public class DownloadAutoTaskContactsFull : PeriodicBackgroundWorkerBase, ISingletonDependency
{
private readonly IRepository<AutoTaskContact, long> _autoTaskContactRepository;
public DownloadAutoTaskContactsFull(AbpTimer timer, IRepository<AutoTaskContact,long> autoTaskContactRepository) : base(timer)
{
Timer.Period = 5000;
_autoTaskContactRepository = autoTaskContactRepository;
}
[UnitOfWork]
protected override void DoWork()
{
var contacts = _autoTaskContactRepository.GetAllList();
Debug.WriteLine("{0} Contacts", contacts.Count);
}
}
It seems to be the GetAllList command that throws the exception. Essentially it looks as if its doing nothing for ~15 minutes before throwing the exception.
I've tested with other commands such as SingleOrDefault with a filter and it works fine and returns a result. Through testing it seems to be any list > 1000 records, the table itself only has 9000 records which isn't huge.
I have also tested this with other entities and in the application service layer as well and its the same result (timeout). If i query through sql management studio, then it completes in a tiny amount of time, < 1ms.
As you can see i am using the built in IRepository, not my own. Any suggestions on how to resolve this are appreciated. Thanks
Hello,
just looking for some advice/points on the database context/repositories.
Abp is setup and working fine with a MSSQL database.
We are looking to start querying and updating another database which is MySql. Now this database is already populated with tables and information and its not feasible to change the schema.
I've created the code first classes and setup and new dbcontext.
My question is, is it possible to use the repositories somehow? My code first classes are not inheriting from type Entity, as this would cause a database migration.
Is there another class/interface i can inherit from to still use the repositories?
Any help is appreciated. Thanks
Hello,
Is it possible to switch off the Identity Column for the provided Entities such as Tenants? We are looking to pre-populate the Tenants table with Id, TenancyName and Name from another table within our database but we would like to retain the existing Id's if possible.
I have tried editing the OnModelCreating method, which seems to work fine for Entities i have created myself, but not for the Tenant Entity.
If you can let me know if this is possible or just point me in the right direction that would be great. Thanks
Hello,
i am currently trying to post a form in a partial view using abp.ajax. The actual form posting works fine, and when the form is filled out correct, the success event fires as expected. The problem arises when there is an error in the form, the InclusiveUnits field has a range applied to it (via Data Annotations). When a value is outside of this range the CheckModelState(); throws an exception as expected, however this doesn't get returned wrapped, it gets returned as html.
Here is the javascript
var form = $("#UpdateForm");
abp.ajax({
url: form.attr("action"),
data: JSON.stringify({
accountId: $("#AccountId").val(),
accountName: $("#AccountName").val(),
contractName: $("#ContractName").val(),
serviceName: $("#ServiceName").val(),
repositoryId: $("RepositoryId").val(),
inclusiveUnits: $("#InclusiveUnits").val(),
autoTaskUnits: $("#AutoTaskUnits").val()
})
})
.done(function(response) {
abp.message.success("success");
})
.fail(function (response) {
abp.ajax.showError(response);
abp.ajax.logError(response);
});
});
When the call is successful i receive this response
{
"success": true,
"result": {
"contractId": 39
},
"error": null,
"unAuthorizedRequest": false
}
however when it fails i get a html page that starts with the following
Form is not valid. Please check and fix errors.
I have checked and i am running the latest version of ABP v8.4.0. Is there an issue with the way i am trying to display the validation errors or could this be a bug?
Any help is much appreciated. Tom
Hello!
Is it possible to update the sample Console Application <a class="postlink" href="https://github.com/aspnetboilerplate/aspnetboilerplate-samples/tree/master/AbpEfConsoleApp">https://github.com/aspnetboilerplate/as ... ConsoleApp</a> for version 0.8.1?
When i try and run my console application i receive the following error
Message: No component for supporting the service Abp.Threading.BackgroundWorkers.IBackgroundWorkerManager was found Inner Exception: Stack Trace: at Castle.MicroKernel.DefaultKernel.Castle.MicroKernel.IKernelIn ternal.Resolve(Type service, IDictionary arguments, IReleasePolicy policy) at Castle.MicroKernel.DefaultKernel.Resolve(Type service, IDictionary arguments) at Castle.Windsor.WindsorContainer.ResolveT at Abp.Dependency.IocManager.ResolveT at Abp.AbpKernelModule.Shutdown() at Abp.Modules.AbpModuleManager.<ShutdownModules>b__6(AbpModuleInfo sm) at System.Collections.Generic.List
1.ForEach(Action
1 action) at Abp.Modules.AbpModuleManager.ShutdownModules() at Abp.AbpBootstrapper.Dispose() at Portal.ConsoleApplication.Program.Main(String[] args) in C:\Users\admin.tom.adams.CTL-PORTAL\Documents\Visual Studio 2015\Projects\Portal\Portal.ConsoleApplication\Program.cs:line 129
It errors on this line bootstrapper.Initialize();
using (AbpBootstrapper bootstrapper = new AbpBootstrapper())
{
// Load logging configuration
bootstrapper.IocManager.IocContainer.AddFacility<LoggingFacility>(f => f.UseLog4Net().WithConfig("log4net.config"));
bootstrapper.Initialize();
}
Many Thanks
Hello,
i am trying to use the SettingManager in one of my ApplicationService classes. From what i am reading in the documentation, because my class is derived from "ApplicationService" class, there is no need to inject the SettingManager and i just access it like a property. However, whenever i try and access the SettingManager its set to null and therefore it throws and exception whenever i try and access anything.
public class AutoTaskAppService : PortalAppServiceBase , IAutoTaskAppService
{
public AutoTaskAppService()
{
}
public ATWSSoapClient AutoTaskConnection()
{
// Access the SettingManager
string test = SettingManager.GetSettingValue(PortalSettingNames.AutoTaskApiUserName);
}
}
Is there a step that i'm missing? Cheers