asp.net调用xps对象GetFixedDocumentSequence出现异常

昨天在web端调用别人写的word处理dll时,出现了

‘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的概念需要熟悉,其它的线程,线程同步,线程池等概念需要再巩固一下了

时间: 2024-12-05 17:32:30

asp.net调用xps对象GetFixedDocumentSequence出现异常的相关文章

ASP.NET中Server对象

1.asp.net中常见对象: Request:服务器读取浏览器请求中的信息. Response:将服务器中的信息发送给浏览器. Server:获取请求服务器的相关信息. Application:应用程序级对象,多用户之间可以共享数据. Session:会话,用户通过网址访问服务器时会话启动. 下面的图可以简单理解为:我们发布的服务器为Server对象,在服务器上运行的web程序为Application对象,每个客户端对web程序的一个访问就是一个Session 2.Global.aspx 初始

asp.net内置对象Server

1.Server是Context的一个属性,是HttpServerUtility类的一个对象. 2.Server.HtmlDecode(),Server.HtmlEncode(),Server.UrlEncode(),Server.UrlDecode()是对HttpUtility类中相应方法的一个代理调用.有的时候很难拿到Server对象,使用HttpUtility. 3.Server.Transfer(path)内部重定向请求,Server.Transfer("hellow.aspx"

asp.net 内置对象Request和Response

Request 1.Request.AppRelativeCurrentExecutionFilePath,获取当前执行请求相对于应用根目录的虚拟路径,以~开头,比如"~Handler.ashx". 2.Request.PhysicalApplicationPath,获取当前应用的物理路径,比如D:\我的文档\VisualStudio 2012\WebSites\WebSite\ 3.Request.PhysicalPath,获取当前请求的物理路径.比如D:\我的文档\VisualSt

asp.net内置对象

转:http://www.cnblogs.com/MyBeN/archive/2011/03/23/1992591.html (1)简述ASP.NET内置对象. 答:ASP.NET提供了内置对象有Page.Request.Response.Application.Session.Server.Mail和Cookies.这些对象使用户更容易收集通过浏览器请求发送的信息.响应浏览器以及存储用户信息,以实现其他特定的状态管理和页面信息的传递. (2)简述Response对象. 答:Response对象

windows server 2008 x64 上asp.net 调用 word, excel 出错的解决方式

异常信息: System.Runtime.InteropServices.COMException message:内存不足,请现在保存文档 网上的一种方法是 但是,在64位机器上安装32位的office,在DCOM 配置里是找不到 word,excel的选项的. 下面用这个方法解决: This solution is ...?Windows 2008 Server x64 Please make this folder.C:\Windows\SysWOW64\config\systemprof

.Net Remoting 调用远程对象

根据需求,我们的系统必须以C/S方式构建,而且是三层架构,这样一来,就出现了服务器端和客户端通信的问题. 为了解决双方的通信问题,还要考虑效率.性能等方面,经过分析.试验,我们根据效率.移植.开发难易等几个因素,舍弃了一开始提出的WebService.消息队列机制,以及有人建议的基于流I/O自己解析数据的通信方式,在分析了目前主流的RPC方式(DCOM.CORBA..NET Remoting)及我们的开发平台后,最终选择了微软新推出的.NET Remoting机制.我们的原因如下: 1..NET

asp.net内置对象session和cookie

1.各个机器的session对象不同,不同浏览器之间不通用(换个浏览器,是个新的session). 2.session状态对象起始于网页打开,终止于网页关闭,生命周期有限. 3.关闭浏览器/超时的情况下,session对象即被销毁,不要放太多/太大的对象在session. 4.Web应用程序在传统意义上无状态,需要使用内置对象进行客户端状态的保存. 5.session对象和Application对象存储在服务端,cookie对象存储在客户端. 6.session对象适用于安全性相比之下较高的场合

调用Request对象的post方法把RequestBody传入进去

通过调用登录接口发送一个post请求.跟get不一样的地方就是传参数不一样,post请求需要把参数封装到RequestBody对象,调用Request对象的post方法把RequestBody传入进去.最后调用execute方法执行请求,这个方法前面get请求的时候讲过. http://bbs.guilinlife.com/thread-9125238-1-1.htmlhttp://bbs.guilinlife.com/thread-9125240-1-1.htmlhttp://bbs.guil

java多线程下如何调用一个共同的内存单元(调用同一个对象)

1 /* 2 * 关于线程下共享相同的内存单元(包括代码与数据) 3 * ,并利用这些共享单元来实现数据交换,实时通信与必要的同步操作. 4 * 对于Thread(Runnable target)构造方法创建的线程,轮到它来享用CPU资源时. 5 * 目标对象就会自动调用接口中的run()方法 6 * */ 7 8 /* ----------------举例子------------------- */ 9 10 /* 11 * 使用Thread类创建两个模拟猫和狗的线程,猫和狗共享房屋中的一桶