Revit Addin Visual Studio调用SOAP web服务
本文关键字:SOAP web 服务 调用 Studio Addin Visual Revit | 更新日期: 2023-09-27 18:14:46
创建Autodesk Revit插件。我希望它能够与SOAP Web服务对话
插件被创建为一个类库。SOAP客户端代码是通过使用Visual Studio Service Reference并指向wsdl url来生成的。
当我从Revit启动插件时,我得到以下错误
Revit遇到一个系统。InvalidOperationException:无法在ServiceModel客户端配置节中找到名称为"{xxx}"和合同为"{yyy}"的端点元素。
请注意,如果我将Visual Studio项目创建为命令行项目并直接运行它,SOAP调用将正常工作。
注意:我在插件清单中指向的构建文件夹中有一个.config文件。
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<RevitAddIns>
<AddIn Type="Command">
<Name>AIMRevitTestTwo</Name>
<Assembly>
C:'Users'greg.bluntzer'Documents'Visual Studio 2015'Projects'AIMRevitTestTwo'AIMRevitTestTwo'bin'Debug'AIMRevitTestTwo.dll
</Assembly>
<AddInId>604b1052-f742-4951-8576-c261d1993109</AddInId>
<FullClassName>App</FullClassName>
<VendorId>xxx</VendorId>
<VendorDescription>yyy</VendorDescription>
是否有其他的东西我需要配置在我的Visual Studio项目或Revit清单,以便它会看。config文件。
更新:我发现了这个链接,说要尝试创建/更新revit.exe.config文件并添加绑定。它解决了我的本地问题。这对我来说不是一个好的解决方案,因为我想分发这个插件。所以我仍然想知道一种方法,使外接程序,使它可以读取配置文件,随类库。
解决方案:根据建议,我在代码 中构建配置信息 <binding name="findAePReqEByDocumentSoapBinding" allowCookies="true">
<security mode="TransportCredentialOnly">
<transport clientCredentialType="Basic" proxyCredentialType="Basic" realm="fmax" />
<message clientCredentialType="UserName" algorithmSuite="Default" />
</security>
</binding>
变成
BasicHttpBinding binding = new BasicHttpBinding();
binding.Security.Mode = BasicHttpSecurityMode.TransportCredentialOnly;
binding.AllowCookies = true;
binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Basic;
binding.Security.Transport.ProxyCredentialType = HttpProxyCredentialType.Basic;
binding.Security.Transport.Realm = "fmax";
binding.Security.Message.ClientCredentialType = BasicHttpMessageCredentialType.UserName;
binding.Security.Message.AlgorithmSuite = SecurityAlgorithmSuite.Default;
binding.MaxReceivedMessageSize = int.MaxValue;
binding.MaxBufferSize = int.MaxValue;
EndpointAddress endPointAddress = new EndpointAddress(DataAccess.END_POINT);
一般来说,根据我的经验,最好的答案是以编程方式创建绑定,而不是使用配置文件。
如果您查看自动生成的SOAP客户机类的构造函数,它有一个您可能正在使用的无参数构造函数(它从配置中读取)—但是可能还有另一个您在代码中指定地址和绑定的构造函数。走那条路。看看类似BasicHttpBinding类的东西。配置中指定的所有内容都可以在代码中添加到该类中。