【发布时间】:2018-08-07 18:20:00
【问题描述】:
我想使用 Docusign Connect 服务,如https://www.docusign.com/supportdocs/pdf/connect-guide.pdf 中所述。
我使用 Windows Communication Foundation 创建了一个 REST 服务来接受来自该服务的 POST 消息。接口类中两个不同方法的代码是:
[OperationContract]
[WebInvoke(Method = "POST", ResponseFormat = WebMessageFormat.Xml, RequestFormat = WebMessageFormat.Xml,
BodyStyle = WebMessageBodyStyle.Wrapped, UriTemplate = "ProcessConnectMessageStream")]
string ProcessConnectMessageStream(Stream XMLMessage);
[OperationContract]
[WebInvoke(Method = "POST", ResponseFormat = WebMessageFormat.Xml, RequestFormat = WebMessageFormat.Xml,
BodyStyle = WebMessageBodyStyle.Wrapped, UriTemplate = "ProcessConnectMessageRequest")]
void ProcessConnectMessageRequest(HttpRequestMessage request);
方法的代码是:
public string ProcessConnectMessageStream(Stream XMLMessage)
{
StreamReader sr = new StreamReader(XMLMessage);
string xmlMessage = sr.ReadToEnd();
Manager mgr = new Manager();
return mgr.ProcessConnectMessage(xmlMessage);
}
和
public void ProcessConnectMessageRequest(HttpRequestMessage request)
{
try
{
// almost all code from https://github.com/docusign/recipe-010-webhook-csharp
XmlDocument xmldoc = new XmlDocument();
}
catch (Exception ex)
{
string msg = ex.GetBaseException().Message;
}
}
我设置了一个调用第一个方法的测试项目。我将 XML 保存在 Connect Guide 的末尾(Sample Connect Message 下的 XML)。我的测试方法获取文件并发布它。最后一个方法 mgr.ProcessConnectMessage(xmlMessage) 是我为解析 XML 而编写的。我的测试工作正常。我还创建了一个 GET 方法来确保服务正常运行。 GET 工作正常(我正在使用 ngrok 进行测试,因此我可以通过映射项目的 localhost:port 在 Internet 上调用我的 REST 方法)。
正如第二种方法的注释中所述,我基于我在 Github 上找到的第二种方法的代码创建了一个 Docusign Connect 应该使用的方法。
我已在我的 Docusign 测试帐户上配置 Connect 以使用这些方法。我已经创建了信封并打开了它们。 Connect 将调用我的方法,如 NGROK 的输出所示。
但是当任一方法被调用时,我都会收到 400 Bad Request 错误。
我不知道我还应该做什么才能让 Connect 与我的方法进行通信。
【问题讨论】:
-
我使用 Fiddler(来自 Telerik)尝试查看来自 Docusign 的请求。我似乎无法收到请求,但我看到了我的服务的响应。响应包含的 XML 看起来就像 Connect 服务的 Docusign 文档中描述的那样。
-
您收到 400 错误,这意味着您的网络服务器正在接收连接消息,但不知何故您的应用程序/网络服务器无法连接到正确的控制器/处理程序。检查控制器方法的签名,如果接受类型,响应类型是否正确,以及是否有任何非来自 DocuSign 的必填字段。
-
由于某种未知原因,我在 Visual Studio 2015 中将 REST 服务创建为 Web API 项目时没有收到 400 错误。
标签: c# rest docusignapi