【发布时间】:2011-02-23 05:50:18
【问题描述】:
我创建了 WCF 服务并尝试在 Sharepoint Web 部件中使用它。部署 Web 部件时出现以下错误:
“在 ServiceModel 客户端配置部分中找不到引用合同‘ServiceReference1.IService1’的默认端点元素”
任何帮助将不胜感激
【问题讨论】:
标签: sharepoint-2010 wcf
我创建了 WCF 服务并尝试在 Sharepoint Web 部件中使用它。部署 Web 部件时出现以下错误:
“在 ServiceModel 客户端配置部分中找不到引用合同‘ServiceReference1.IService1’的默认端点元素”
任何帮助将不胜感激
【问题讨论】:
标签: sharepoint-2010 wcf
你如何消费它?如果您为 Web 部件创建了 app.config,则该配置将不起作用,因为 Web 部件是在 w3wp.exe 进程的上下文中执行的。
您必须在服务客户端中手动设置端点,或者将其放在 Sharepoint 虚拟目录的 web.config 中(我认为是 c:\inetpub\wwwroot\wss\80)。如果您有多个服务器,请将其添加到所有服务器中。 (我建议创建一个修改 web.config 的功能接收器,但我学到了永远不应该使用 SPWebConfigModification 的艰难方法)
以编程方式设置客户端:
var endpoint = new EndpointAddress(new Uri("http://your/wcf/endpoint"));
var binding = new WSHttpBinding();
var client = new YourWCFClient(binding, endpoint);
确切的绑定当然取决于您的配置 - WCF 在这里有点棘手,但如果您已经有一个工作客户端,请检查它的 app.config 以获取绑定信息,并检查 MSDN 以获取从 System.ServiceModel.Channels.Binding 派生的类找到正确的。
【讨论】:
Micheal Stu8om 是正确的。您需要复制并粘贴系统的内容。从您的 webpart 配置文件到位于 SharePoint 部署根目录中的 SharePoint web.conf 中的 serviceModel 标记(Michael 帖子中的最后一位路径并不总是 80。它可能是 443 或其他取决于 SharePoint 部署端口)。
我想推荐阅读 Sahil Malik 书籍“为 SharePoint 2010 构建解决方案”的第 5 章。 希望这会有所帮助
【讨论】: