十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
昨天在web端调用别人写的word处理dll时,出现了
创新互联长期为1000+客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为抚顺县企业提供专业的网站建设、成都网站设计,抚顺县网站改版等技术服务。拥有十年丰富建站经验和众多成功案例,为您定制开发。
'The invocation of the constructor on type 'System.Windows.Documents.DocumentReference' that matches the specified binding constraints threw an exception.' Line number '2' and line position '21'.
问题,这个问题我写了示例程序是没有问题的(cs端),经过别人的指点,在抛出异常的地方找到的innerexception是sta的问题,这个具体没有把信息保留下来.
根据innerexception的提示,发现了xps对象和其中的方法是STA的,但是aspx页面是MTA,经过几番周折找到遇到一样问题的人:http://stackoverflow.com/questions/24058070/how-to-read-a-xps-file-in-c-sharp-using-asp-net
问题真的是一样的,然后按照里面提供的链接(第二个)添加
<%@ Page Language="C#" AspCompat="true" %>
我试过了,完全没有用.httphandler 自己还不熟,于是写了一个线程来调用出力xps文档的那个方法,于是成功搞定,代码示例如下:
//.... //调用的地方 System.Threading.Thread thread = new System.Threading.Thread( new System.Threading.ParameterizedThreadStart(ThreadMethod)); thread.Start(value); thread.Join();//等待结束 //....
//线程函数 private void ThreadMethod(object parameter) { //这里写的就是对xps处理的代码 }
总结:STA、MTA的概念需要熟悉,其它的线程,线程同步,线程池等概念需要再巩固一下了