互软研发团队

Talk is cheap. Show me the code.

UFFICE 7移动应用支持钉钉PC版本登录解决方案

UFFICE 7移动解决方案如何支持在钉钉移动版本运行可以参考之前的一篇博客:UFFICE 7 移动解决方案-钉钉。由于早期钉钉的jsapi在移动端和PC端分别采用不同的API获取授权码,直接导致了我们在之前的解决方案里并未提供钉钉PC版本的兼容支持。目前新版本的钉钉jsapi已经统一了获取授权码的API设计(dd.runtime.permission.requestAuthCode)。正在使用我们之前解决方案的项目团队可以参考以下步骤支持钉钉PC版本:

1、打开SSO目录下的/PlatformApp/DingDingLogin.html文件。

2、注释本地引用dingtalk.js的代码。

3、新增钉钉最新版本jsapi的引用:

<script src="//g.alicdn.com/dingding/dingtalk-jsapi/2.0.57/dingtalk.open.js"></script>


参考:

https://open-doc.dingtalk.com/microapp/dev/welcome-to-lark

UFFICE 7门户实现不同角色的用户登录加载不同的首页模板

1、修改UFFICE 7门户的Web.config文件,在<appSettings>配置节新增IsSingleRole=false。默认UFFICE 7的模板引擎不启用���角色支持。参考:

<add key="IsSingleRole" value="false" />

2、访问BUA的权限管理,定位到UFFICE 7的应用系统下。打开第一层权限菜单,可以看到有一个名为“Razor模板角色”的权限。

3、在Razor模板角色下新增权限,这个权限的名称就是编辑页面模板中对应的角色(它不是真正的角色)。之后只需要根据用户隶属不同的角色赋予它对应的该权限即可。例如:新增一个名称为"区领导"的权限。

4、重新启动memcached服务。由于当前登录的用户可能是UFFICE 7应用的管理员角色,会导致这个时候访问门户出现找不到对应角色的模板。直接在浏览器输入门户页面模板编辑的地址:http://xxx/Portal/Settings/Page。

5、在协同办公3.0分类下新增一个首页模板,模板的标识需要和首页模板的标识相同(例如:index)。选择之前的角色"区领导",模板内容可以使用之前所有人的模板。最后单击保存。

6、重新访问UFFICE 7的门户,administrator账户已经可以正常访问了。


UFFICE 7部署入门(一)配置缓存服务器地址

UFFICE 7默认使用memcached作为自带的缓存服务,对应的缓存服务器地址需要在数据库中进行修改。

一般基于UFFICE 7安装包部署后,数据库实例中会有一个名为"MemcacheConfigDB"的数据库。访问该数据下名为"Memcahed_Services"的数据表可以看到默认配置的memcached节点地址:


当在多台服务器部署缓存服务后,可以修改数据库中配置的地址。修改完成以后,需要重新启动部署UFFICE 7的IIS或者相应站点的应用程序池。

统一身份认证及单点登录服务系统v2以上版本使用的安全协议

统一身份认证及单点登录服务系统即SSO(Single Sign-on)是公司的一个标准产品。SSO是单点登录解决方案的总称,目前公司的产品支持两类协议:

1、SAML

2、BSSO

SAML是行业内的一个标准,而BSSO是公司自主定义的安全认证协议。默认使用SAML。

如何将BUA的应用系统整合到UFFICE 7管理中心顶部菜单显示

1、打开管理中心(Administration)站点的Web.config,查看<appSettings>下名为"IntegrateContainer"的值,例如:CentralAdministration

2、访问BUA的权限管理,编辑要整合的应用系统。修改应用系统的"应用系统集成模式"字段。格式:#{IntegrateContainer}${StartPrivilegeCode}#

{IntegrateContainer}:对应管理中心的配置

{StartPrivilegeCode}:起始权限菜单代号,如果希望从根权限加载可以为空

示例:#CentralAdministration$BUA#

基于WeChatJavascriptSdk的企业微信jsapi访问出错提示"接口调用超过限制"解决方案

# 问题现象

基于MobilePortal整合企业微信以后,频繁刷新应用一段时间会出现提示:微信获取JavaScriptTicket异常:45009,文本:api freq out of limit, hint: [1545303237_2_5380272362b73d58bce5bb54879e0216], more info at https://open.work.weixin.qq.com/devtool/query?e=45009。

# 问题原因

造成以上问题的原因是企业微信提供的过期时间字段(expires_in)没有被赋值给过期时间重新计算,导致每次请求jsapi ticket都是过期重新获取状态。

#解决方案

更新附件的Beyondbit.Web.Infrastructure.dll文件,如果目前使用的该dll版本大于2.0.6929.1可以忽略该问题。

Beyondbit.Web.Infrastructure.dll (84KB)

ASP.NET应用程序预热解决方案

附件文档中的解决方案基于研发中心提供的AspNet应用预热程序,各位可以根据实际的运行环境下载:

AspNet应用预热程序_40

AspNet应用预热程序_35

ASP.NET应用程序预热解决方案.doc (649.5KB)

调用BUA的SOA Web服务提示"调用UserBFO中的GetUserByUid方法出错"的解决方案

# 问题现象

启用DES加密以后,调用BUA的SOA服务有一定机率出现"调用UserBFO中的GetUserByUid方法出错"。开启SOA下的log4net日志以后并查看详细错误如下:

System.Security.Cryptography.CryptographicException:不正确的数据。

# 问题原因

由于BUA 2.5以前版本使用的DES加密类内部使用了共享变量导致多个调用出现了变量篡改。

# 解决方案

下载附件的dll,更新BUA的SOA Web服务。

Beyondbit.Security.zip (2.7KB)

如何解决.NET程序集强签名下版本依赖导致的错误

有两个dll需要在一个项目内使用,但它们分别都使用了Json.NET的不同版本。一个dll依赖版本6.0,另一个dll依赖版本10.0。运行的时候会出现一方依赖的dll版本不存在。这种情况下要解决这个冲突,请参考以下解决方案:

1、使用更高版本的那个

2、在应用程序配置文件,新增<runtime>配置节,并配置依赖程序集版本重定向。以Json.NET为例,参考如下:

<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json"
culture="neutral"
publicKeyToken="30ad4fe6b2a6aeed"/>
<bindingRedirect oldVersion="0.0.0.0-10.0.0.0"
newVersion="10.0.0.0"/>
</dependentAssembly>

以上的方法有一个前提就是这个dll,它的版本之间程序集签名没有发生过修改

使用DebugDiag抓取ASP.NET程序错误并初步分析

https://www.microsoft.com/en-us/download/details.aspx?id=49924Debug Diag可以用来追踪Windows下崩溃、性能和内存泄漏等一些疑难问题的原因。更详细的使用方式可以参考:https://msdn.microsoft.com/en-us/library/ff420662.aspx?f=255&MSPPError=-2147217396

1、安装Debug Diagnostic Tool v2 Update 2,下载地址:

2、运行Debug Diagnostic Tool

3、点击"Add Rule"按钮,在弹出的对话框中选择"Crash"选项。代表我们当应用程序运行奔溃时候想要抓取dump文件

4、目标类型选择"A specific IIS web application pool",代表我们想要指定一个应用程序池

5、选择了对应的应用程序池以后,点击下一步进入高级配置

6、如果知道异常的名称或者包含的关键字,点击"Exceptions"按钮进入异常相关配置

7、点击"Add Exception",根据.NET Framework的版本差异可以选择"CLR 1.0 - 3.5"或者"CLR 4.x"。在Exception Type Equals一栏可以输入异常的类型名称(例如:System.ArgumentException)或者在Exception Message Includes一栏输入包含的错误消息(例如:未将对象引用设置到对象的实例)。"Action Type"选择"Full userdump"。

8、根据向导一步步操作到最后,并激活新增的规则。当出现对应的错误以后DebugDiag就会产生对应的dump文件。我们运行另一个工具DebugDiag Analysis

9、点击"Add Data Files"添加我们需要分析的dump文件,根据实际情况选择要进行的分析内容,然后点击"Start Analysis"进行分析。DebugDiag Analysis会给出比较详细的分析结果提供参考