互软研发团队

Talk is cheap. Show me the code.

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会给出比较详细的分析结果提供参考

如何启用开发框架日志输出

Beyondbit Framework使用log4net记录日志,如果想要查看日志输出可以创建一个名称为"log4net.config"的配置文件,将它放在应用系统的根目录。详细的配置信息可以参考:http://logging.apache.org/log4net/release/manual/configuration.html

附件是一个简单的示例,它会将错误级别的日志写入到当前目录下名为log-file.txt的文件里面。

log4net.config (693B)

UFFICE 7 部署过程中问题排查及解决

先参考UFFICE 7 环境部署文档配置环境,如果发现问题,可以按照下面的方案进行解决。

1 检查.NET 4.5和Win rar是否安装。

2 检查"C:\UFFICE 7\Media\sources"这个路径是否存在,如果不存在解压"C:\UFFICE 7\Media\sources.rar"压缩文件的中的文件到"C:\UFFICE 7\Media\sources"目录下。

3 检查"C:\Windows\System32\WindowsPowerShell\v1.0\Modules\BeyondbitAnt"这个路径是否存在,如果不存在手动复制"C:\UFFICE 7\Media\sources\files"下的BeyondbitAnt到"C:\Windows\System32\WindowsPowerShell\v1.0\Modules"目录下。