互软研发团队

Talk is cheap. Show me the code.

协同办公附件服务调用Update方法提示"无法将Content字段从nvarchar类型转换为Image类型"解决方法

调用协同办公附件服务的Update方法提示"无法将Content字段从nvarchar类型转换为Image类型",可以参考以下方案解决

下载:Beyondbit.Framework.zip (85.8KB) 或通过NuGet获取最新版本的Beyondbit Framework For .NET。IIS目录下打开BCOP_SOA\Blob的部署目录,替换bin目录下的Beyondbit.Framework.dll(保证替换的版本为2.0.5749.28212以上)。

协同办公日志服务无法正常写入日志数据库问题解决方案

协同办公日志服务在.NET Framework 4.0一些版本中日志无法正常写入数据库,请参考本篇博客进行更新和验证

目前我们发现运行的.NET Framework版本为4.0.30319.233,可以下载:log4net.zip (97.1KB) 进行验证。如果程序目录下未输出log-file.txt文件则证明存在相同问题。导致问题的情况为在Release模式下由于Lazy<T>绑定的匿名委托被JIT优化后产生了直接调用,log4net通过调用Assembly.GetCallingAssembly方法时获取到了mscorlib并不是所期望的Beyondbit.Logging。同样优化下但在.NET Framework 4.6版本获取正常,怀疑Assembly.GetCallingAssembly在新版本中产生了改动。

解决方法:

下载:Beyondbit.Logging.zip (10.4KB)。IIS目录下打开BCOP_SOA\Logging应用的部署目录,替换bin目录下的Beyondbit.Logging.dll文件(保证替换的版本为2.0.5745.28203以上)。

协同办公Web项目模板和解决方案模板发布

Web项目模板VSIX文件下载地址:

https://visualstudiogallery.msdn.microsoft.com/17da8b78-ca21-45f4-afc4-41406820daeb

解决方案模板VSIS文件下载地址:

https://visualstudiogallery.msdn.microsoft.com/ea883b9a-1838-4f68-9d5b-c3d41a6186f7


Web项目模板

创建一个MVC4的项目模板。

解决方案模板

创建一个包含Entity、DAO、BO、UI、ReferenceDLL项目的Soultion。

使用协同办公开发方式开发的应用,部署在联合办公基础服务下的升级解决方案。

引言

使用协同办公开发的方式,即(使用Nuget来获取DLL、再利用快速开发工具生成代码),部署在基础服务是联合办公的产品(即统一授权,缓存,单点登录,开发框架使用的是联合办公发布的版本)下,会出现其它的一些基础服务没有,如字典、统一授权、获取当前用户的接口无法使用。

针对此情况,本文旨在解决通过协同办公开发的应用可以部署在联合办公的环境中。

解决方案

安装联合办公环境中没有的核心服务

1、BUAEx服务站点
     此站点是新的接口服务总线实现的版本必须的服务。用户、字典、权限、应用权限都是通过此服务站点实现的。
     将此站点部署在和BUA的服务部署在一起,将此服务中的Web.config的数据库链接更改为统一授权的数据库链接,如下图:
     

    然后在你应用中的Web.Config中,System.serviceModel->Client节点下,将你的服务地址更改为你的地址:

  这样配置后,就可以正常使用用户、字典、权限、角色等和统一授权相关的接口了。

2、Blob服务站点
     此服务站点是用于附件接口必须使用的服务站点,如果需要调用附件接口,则必须部署此服务站点。同样将此服务站点部署在SOA站点下,将web.config中的数据库链接更改为联合办公门户的数据库链接,如下图:
    

此服务的配置上述一样。
3、在你的Web站点中关于错误日志输出

在appsetting配置LogErrorEnabled的值为false



所有的站点文件请见附件!

BUAEx.zip (677.1KB)

协同办公 1.0 Foundation SDK已上线

各位可以通过 BSDN 首页点击 协同办公 1.0 Foundation SDK 跳转访问或直接输入:http://bsdn.beyondbit.com/SDKBCOP10Foundation

我们会逐步完善相应框架、类库的文档。

协同办公快速开发工具发布啦!持续更新中..

协同办公快速开发工具发布啦,支持快速生成Entity,DAO,BO,以及UI项目中的Controller、View。 

工具说明

现在还是测试版本当中,界面还比较粗糙,能生成列表页和编辑页面。兄弟姐妹们在使用过程中,遇到BUG和想增加什么新功能,欢迎大家在评论中拍砖。

安装和更新

此工具支持VS2013、VS2015.  安装此工具,请按照以下步骤操作:

1、打开VS,菜单栏---工具---扩展与更新,弹出安装界面,如下:
 


2、在扩展和更新界面中,点击左侧在线,然后在右侧搜索框输入“beyondbit”, 等待一会,将出现Beyondbit快速开发工具,点击下载按钮安装。

3、下载,安装


4、安装完成后,请参考快速开发工具使用教程。


更新

更新和安装类似,请参照安照步骤1,2. 在扩展与更新界面中点击左侧 Update->Visual Studio Gallery.可以查看到VS需要更新的插件都在此,选择Beyondbit快速开发工具更新即可。


版本发本记录(持续更新中..)

======== 0.5.1 =========
1、生成Entity、DAO、BO;
2、生成UI项目的增删改查功能;

关于VS 2015的智能提示不支持MVC 4.0协同办公的应用推荐使用VS 2013开发

由于VS 2015不支持MVC 4.0 的Razor语法,所以协同办公的应用建议大家使用VS 2013来开发,后续如果VS 2015有解决方案可以解决智能提示问题,我们将会更新此文。

临时解决方案

1、在你的View顶部使用

@inherits System.Web.Mvc.WebViewPage<dynamic> 没有Model类型

或者

@inherits System.Web.Mvc.WebViewPage<Beyondbit.GenerateCode.Demo.Entity.Category> 使用Model类型

来替代下面的写法
@model Beyondbit.GenerateCode.Demo.Entity.Category
效果



更多解决方案,期待你的发现...




开发框架升级到2.0以后,问题集锦,不断更新!

1、ProxyService创建BO报错


升级到2.0以后,之前ProxyService创建BO成功,升级后报错,代码堆栈异常在:GlobalPreProceed.SetConnectionManager2Context()

 

解决:

请检查FrameConfig.config文件中,是否有以下配置:
<ConnectionManager name="DefaultConnectionManager"  assemblyName="Beyondbit.Framework"  typeName="Beyondbit.Framework.Core.Transaction.ConnectionManager"/>
如果有,请选择以下两种方案都可解决:
  1. Beyondbit.Framework.Core.Transaction.ConnectionManager更改为Beyondbit.Framework.Core.Transaction.DefaultConnectionManager
  2. 直接删除ConnectionManager配置节


协同办公应用在IOS平台滚动条无效的问题解决方案

前言

协同办公应用在IOS平台所有的滚动条无效,是由于IOS平台是默认关闭所有div、iframe元素的滚动条,所以在PC端可以滚动的到IPad或IPhone中就无效了,请根据以下规则兼容IOS平台


使用MVC 4的DisplayModeProvider功能适配出PC或移动端

1、在Global.asax文件中,Application_Start方法中,增加以下红线框中的代码:



2、增加移动端Layout文件


请复制附件中_layout.phone.cshtml到你项目中_layout.cshtml同一个文件夹下。请注意_layout可以是任何模板名,对应_layout.phone.cshtml中的_layout改成您的模板名称.

其中主要代码段如下:

做完上述两步后,基本上页面在IOS平台的滚动条就可以使用了。

其它需要手动调整


还有以下特殊情况,需要小调整,下文将不定期更新:
1、页面中包含IFrame元素,需要在它的父元素增加一个.fit-scroll样式.如下:


_Layout.phone.cshtml (1.5KB)

关于360 安全浏览器 4.0版本 ajax POST的时候,无法传递参数

前言

360安全浏览器 4.0版本,是2012年发布的360公司发布的浏览器版本,经测试,此版本在JS中的Ajax有个BUG,在调用POST协议时,无法传递参数,传递的参数会丢失。 6.0以上的版本下来此问题已经修复。

重现

JQuery Ajax 实验 

Code:




利用Fiddler查看请求:


可以看到WebForms没有Body数据。


原生Ajax


Code:



结果和JQuery Ajax一样,没有Body数据。

结论:
jQuery Ajax和原生JS Ajax都是同样的效果,所以不是jQuery Ajax的代码有兼容性问题,测试其它的浏览器都没有上述问题,只有360安全浏览器4.0版本有这个问题,其它360 6.0以下版本是否有这个问题,就没有测试,请大家自行测试,如果有问题,只能通过升级360浏览器修复这个问题。