Docusignapi Docusign侦听器参数Null(开发人员沙盒)
我在C#webservice中创建了一个webmethod,当信封状态发生变化时,它会侦听Docusign调用:Docusignapi Docusign侦听器参数Null(开发人员沙盒),docusignapi,Docusignapi,我在C#webservice中创建了一个webmethod,当信封状态发生变化时,它会侦听Docusign调用: [WebMethod] public void DocuSignConnectUpdate(DocuSignEnvelopeInformation DocuSignEnvelopeInformation) { //Check if null if (DocuSignEnvel
[WebMethod]
public void DocuSignConnectUpdate(DocuSignEnvelopeInformation DocuSignEnvelopeInformation)
{
//Check if null
if (DocuSignEnvelopeInformation == null)
{
File.WriteAllText("C:\\websites\\DataAPI\\datalog.txt", "Data: " + "Data is null");
}
else
{
string envelopeId = "";
try
{
//Write a line in a file
File.WriteAllText("C:\\websites\\DataAPI\\datalog.txt", "Data: " + DocuSignEnvelopeInformation.ToString());
//Get some data out
envelopeId = DocuSignEnvelopeInformation.EnvelopeStatus.EnvelopeID;
//Write Data to a file
File.WriteAllText("C:\\websites\\DataAPI\\innerdatalog.txt", "Data: " + DocuSignEnvelopeInformation.ToString());
}
catch (Exception ex)
{
// could not serialize
File.WriteAllText("C:\\websites\\DataAPI\\errorlog.txt", "Exception: " + ex.Message);
throw new SoapException(ex.Message, SoapException.ClientFaultCode);
}
}
我遇到的问题是调用docusingenvelopeinformation参数时没有设置,因此代码一直在if==null语句处终止。当我使用SoapUI将信封数据运行到API时,一切都正常工作。如有任何想法,我将不胜感激
编辑:我也想在这里添加界面,因为我原来忘记了
[ServiceContract(ConfigurationName = "IOperations", Namespace = "https://www.docusign.net/API/3.0")]
public interface IOperations
{
[OperationContract(Action = "DocuSignConnectListener/Operations/DocuSignConnectUpdate")]
[XmlSerializerFormat]
string DocuSignConnectUpdate(DocuSignEnvelopeInformation DocuSignEnvelopeInformation);
}
当DocuSign webhook设置为使用
SOAP
模式时,通知将作为SOAP请求发送到服务器(侦听器)
如果关闭SOAP模式,则通知将作为带有XML正文的常规POST请求发送
在你的问题中,你是这么说的
当我使用SoapUI将信封数据运行到API时,一切都正常工作
因此,听起来一切都按设计进行了。当DocuSign webhook设置为使用
SOAP
模式时,通知将作为SOAP请求发送到服务器(您的侦听器)
如果关闭SOAP模式,则通知将作为带有XML正文的常规POST请求发送
在你的问题中,你是这么说的
当我使用SoapUI将信封数据运行到API时,一切都正常工作
所以听起来好像一切都按设计进行了。好吧,我终于明白了,原来它不够漂亮,所以我专门添加了一个装饰:
[SoapDocumentMethod("http://tempuri.org/DocuSignConnectUpdate",
RequestNamespace = "http://tempuri.org",
ResponseNamespace = "http://tempuri.org",
Use = System.Web.Services.Description.SoapBindingUse.Literal,
ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
在方法上,现在一切都像它所设想的那样工作。现在我看了一下,它变得更有意义了。好吧,我终于明白了,原来它不够漂亮,所以我特别添加了一个装饰:
[SoapDocumentMethod("http://tempuri.org/DocuSignConnectUpdate",
RequestNamespace = "http://tempuri.org",
ResponseNamespace = "http://tempuri.org",
Use = System.Web.Services.Description.SoapBindingUse.Literal,
ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
在方法上,现在一切都像它所设想的那样工作。现在我看了一下,它有了更多的意义。我同意似乎一切正常,但是当调用来自Docusign时,方法参数没有设置,只有当我通过SoapUI发送时,我才知道为什么。在SOAP模式下,请求是到SOAP服务DocuSignConnectUpdate。以下内容也可能会有所帮助:我编辑了原始文章,以包括界面,因为我原来忘记了。我想这可能也是问题所在,我已经尝试了我能想到的每一种组合。我甚至将其完全重建为一个独立的wcf,但无法使其正常工作,我只是不断收到相同的错误。我有一种感觉,它无法从Docusign序列化输入,但我不知道为什么。不幸的是,我没有任何进一步的想法。另一种配置是使用平台作为服务系统作为中间排队系统。这使您能够在不更改防火墙的情况下从防火墙后面接收通知。谢谢你,Larry,我可能不得不尝试这种方法,我不确定我有什么错,我正在抓取实际的流,输入到服务中的SOAP看起来很好,它只是表现得好像没有设置docusingenvelopeinformation参数变量。我同意似乎一切正常,但是,当调用来自Docusign时,方法参数没有设置,只有当我通过SoapUI发送它时,我不知道为什么。在SOAP模式下,请求是到SOAP服务DocuSignConnectUpdate。以下内容也可能会有所帮助:我编辑了原始文章,以包括界面,因为我原来忘记了。我想这可能也是问题所在,我已经尝试了我能想到的每一种组合。我甚至将其完全重建为一个独立的wcf,但无法使其正常工作,我只是不断收到相同的错误。我有一种感觉,它无法从Docusign序列化输入,但我不知道为什么。不幸的是,我没有任何进一步的想法。另一种配置是使用平台作为服务系统作为中间排队系统。这使您能够在不更改防火墙的情况下从防火墙后面接收通知。谢谢你,拉里,我可能不得不尝试这种方法,我不确定我有什么错,我正在抓取实际的流,输入服务的SOAP看起来很好,它只是表现得好像没有设置docusingEnvelopeInformation参数变量。欢迎使用StackOverflow!请检查(接受)每个问题的最佳答案。非常感谢。欢迎来到StackOverflow!请检查(接受)每个问题的最佳答案。非常感谢。