C# Sharepoint计时器作业上的GacInstall也称为SPJobDefinition
我正在尝试为我们的Sharepoint解决方案实现一个插件体系结构,管理员可以上传dll文件,这些文件将由我们的解决方案安装和处理 实现需要GAC安装上传的dll,我使用C# Sharepoint计时器作业上的GacInstall也称为SPJobDefinition,c#,sharepoint,gac,sharepoint-timer-job,C#,Sharepoint,Gac,Sharepoint Timer Job,我正在尝试为我们的Sharepoint解决方案实现一个插件体系结构,管理员可以上传dll文件,这些文件将由我们的解决方案安装和处理 实现需要GAC安装上传的dll,我使用 private void InstallToGac(byte[] libraryContent, string filename) { string path = tempFolder + filename; File.WriteAllBytes(path, li
private void InstallToGac(byte[] libraryContent, string filename)
{
string path = tempFolder + filename;
File.WriteAllBytes(path, libraryContent);
try
{
new System.EnterpriseServices.Internal.Publish().GacInstall(path);
}
catch (Exception ex)
{
Logger.Error("Error while installing dll to GAC.", ex);
throw;
}
finally
{
File.Delete(path);
}
}
这只需将dll安装到GAC,如果在Sharepoint上下文中调用,则效果良好。但是,它不能在多服务器环境下工作,因为这将只在管理员上载文件的前端安装它。因此,我通过继承SPJobDefinition
将上面的代码移动到计时器作业。GacInstall不再将dll安装到GAC。在调试模式下,GacInstall
行工作正常,不会引发任何异常,但也不会产生任何影响
System.Security.Principal.WindowsIdentity.GetCurrent().Name;
返回计时器作业中的
网络服务
。我在单服务器SharePoint 2010基金会上工作,但我需要在单服务器和多服务器环境下工作2007/2010/2013。 证明:<代码>网络服务< /代码>一直是个问题。我不认为这是一个问题,因为我的所有SharePoint应用程序池运行通过网络服务,不知何故功能良好。更改“本地服务”上“Sharepoint 2010计时器”服务的“登录身份”修复了此问题
另外,在某些情况下,GacInstall(path)
也不会抛出异常,并生成没有任何有用信息的Windows事件