Classes must be public, concrete, have a public default constructor, and meet all other ComVisibility requirements所以不能注册COM+服务,请教原因代码如下:using System;
using System.IO;
using System.EnterpriseServices;
using System.Runtime.InteropServices;
using System.Data;
using System.Text;
using System.Reflection;namespace TheColorCity.TransactionBlog
{
//DEFINED A INTERFACE
public interface ITranBlog
{
void AddBlog(string BlogName,string BlogUserId,string BlogDirectory,int BlogStyle,int BlogVisiblity);
} [ ProgId( "BlogCOMplusService" ) ]
[ Description( "COM+ Blog Transaction" ) ]
[ Transaction( TransactionOption.Required ) ]
[ ObjectPooling( MinPoolSize = 5, MaxPoolSize = 10, CreationTimeout = 20 ) ]
[ MustRunInClientContext( false ) ]
[ JustInTimeActivation( true ) ]
[ ConstructionEnabled( Enabled=false) ]
[ Synchronization( SynchronizationOption.Required ) ]
[ ClassInterface( TheColorCity.TransactionBlog.ITranBlog) ] public class TrancBlog:ServicedComponent,ITranBlog
{
IDbCommand _comd;
private string _BlogName;
private string _BlogUserId;
private string _BlogDirectory;
private int _BlogStyle;
private int _BlogVisiblity;
#region pool property
public TrancBlog(IDbCommand comd)
{
_comd = comd;
} protected override bool CanBePooled()
{
return true;
} protected override void Deactivate()
{
base.Deactivate ();
_comd.Dispose();
} protected override void Activate()
{
base.Activate ();
}
#endregion
#region ITranBlog Members
[AutoComplete()]
public void AddBlog(string BlogName, string BlogUserId, string BlogDirectory, int BlogStyle, int BlogVisiblity)
{
AddBlogDB();
AddBlogDirectory(BlogDirectory);
}
private void AddBlogDirectory(string BlogDirectory)
{
ContextUtil.SetComplete();
}
private void AddBlogDB()
{
ContextUtil.SetComplete();
}
#endregion
}
}
using System.IO;
using System.EnterpriseServices;
using System.Runtime.InteropServices;
using System.Data;
using System.Text;
using System.Reflection;namespace TheColorCity.TransactionBlog
{
//DEFINED A INTERFACE
public interface ITranBlog
{
void AddBlog(string BlogName,string BlogUserId,string BlogDirectory,int BlogStyle,int BlogVisiblity);
} [ ProgId( "BlogCOMplusService" ) ]
[ Description( "COM+ Blog Transaction" ) ]
[ Transaction( TransactionOption.Required ) ]
[ ObjectPooling( MinPoolSize = 5, MaxPoolSize = 10, CreationTimeout = 20 ) ]
[ MustRunInClientContext( false ) ]
[ JustInTimeActivation( true ) ]
[ ConstructionEnabled( Enabled=false) ]
[ Synchronization( SynchronizationOption.Required ) ]
[ ClassInterface( TheColorCity.TransactionBlog.ITranBlog) ] public class TrancBlog:ServicedComponent,ITranBlog
{
IDbCommand _comd;
private string _BlogName;
private string _BlogUserId;
private string _BlogDirectory;
private int _BlogStyle;
private int _BlogVisiblity;
#region pool property
public TrancBlog(IDbCommand comd)
{
_comd = comd;
} protected override bool CanBePooled()
{
return true;
} protected override void Deactivate()
{
base.Deactivate ();
_comd.Dispose();
} protected override void Activate()
{
base.Activate ();
}
#endregion
#region ITranBlog Members
[AutoComplete()]
public void AddBlog(string BlogName, string BlogUserId, string BlogDirectory, int BlogStyle, int BlogVisiblity)
{
AddBlogDB();
AddBlogDirectory(BlogDirectory);
}
private void AddBlogDirectory(string BlogDirectory)
{
ContextUtil.SetComplete();
}
private void AddBlogDB()
{
ContextUtil.SetComplete();
}
#endregion
}
}
public TrancBlog()
{
_comd = null;
} public TrancBlog(IDbCommand comd)
{
_comd = comd;
}