【问题标题】:Run code under WCF vs "regular" code execution, what the difference?在 WCF 下运行代码与“常规”代码执行,有什么区别?
【发布时间】:2012-12-06 02:47:57
【问题描述】:

我拥有以两种模式运行的代码(使用 SharePoint 对象模型):

  1. 从普通控制台应用程序或单元测试运行程序运行。在这种情况下,代码有效。
  2. 在 WCF 服务中运行。 WCF 服务托管在控制台应用程序中。没有特殊的安全配置,一切都是默认的。执行失败。

这两种模式在执行上可能有什么不同,尤其是与安全相关的(例如上下文、主体)?

SharePoint 对象模型是出现问题的地方,但这不是问题的主要目标。更有趣的是一般情况下的差异。如果您需要更多细节,请告诉我,我会更新问题。

到目前为止的差异:

  1. Thread.CurrentThread.IsThreadPoolThread (#1 - false, #2 - true),显然来自线程池

【问题讨论】:

  • 发布失败详情会很有帮助。
  • 失败是特定于 SharePoint 的,SharePoint 从不提供真正意义上的错误消息。例如,在我的情况下,我正在向资源添加声明,并且错误消息是“用户不存在或不是唯一的”。这是因为声明实际上是 SharePoint 中的用户对象。错误也是 COMException,所以我什至无法反编译以查看真正的问题。
  • WCF 控制台应用程序是否在 SharePoint 服务器上运行?客户端对象模型,还是服务器对象模型?
  • SharePoint Server 上的服务器对象模型。现在我可以说更多了。如果我从 WCF 服务创建完整的线程,并且在这个线程中运行我的代码,它也可以工作。有线。
  • 我可能需要从这个问题中删除任何提及共享点的内容。

标签: .net wcf sharepoint runtime


【解决方案1】:

Sharepoint 对象在底层是基于 COM 的。 WCF 默认是多线程的,与 COM 不兼容。

【讨论】:

  • 我要指出的是,你说的异常是 COMException,这意味着模型在某种程度上与 COM 对象交互。
  • 我不确定我之前的评论在哪里。但无论如何。 COM 和多线程之间没有不兼容性。正如我在之前的评论中所说,ASP.NET 是完全多线程的,但与 SharePoint COM 对象模型完全兼容。
猜你喜欢
  • 2011-01-19
  • 1970-01-01
  • 1970-01-01
  • 2014-03-21
  • 1970-01-01
  • 2021-12-02
  • 1970-01-01
  • 2019-12-29
  • 2017-01-09
相关资源
最近更新 更多