每个人,我在ac#asp.net网站上的(ASMX)中都有一个Web服务,并且我收到了来自销售人员的出站消息,我有不止一种通知类型,一种是针对帐户的,另一种是针对任务的,任务是第一种正在工作当我从WSDL文件生成ProxyClass时使用所有默认的ClassName,当我为Tasks完成并将WSDL文件转换为ProxyClass时,它显示关于名称的错误彼此冲突,因此我更改了ProxyClass中的名称,例如默认为通知任务的通知名称,通知响应的通知名称,sObject为sObjectTask,因此当我运行通用代码以接收通知并默认返回Ack=true
时,它没有问题,但是尝试以下代码时:从中断消息中获取值,表明服务器错误无法处理该请求。
我的代码:
class Tasks :INotificationBindingTasks
{
//class MyNotificationListener : INotificationBinding
public notificationsResponseTask notifications(notificationTasks notification2)
{
TaskNotification[] TaskNotification = notification2.Notification;
notificationsResponseTask r = new notificationsResponseTask();
r.Ack = true;
return r;
}
}
我在这里做错了什么?
答案 0 :(得分:2)
因此,从我看待您的问题的方式来看,我认为我已经遇到过该问题的解决方案,而且非常容易解决,在堆栈交换here上已经存在与此相关的问题。
proxyCalss的出站工作方式是这样编码的:为了能够成功获取通知并对其进行解码,您需要将其以特殊形式存在,并且名称非常敏感,例如您说您更改了通知的名称。现在,当salesforce发送消息时,它期望的返回值是您更改的notificationsResponse名称,这就是在Class中更改名称只会引起更多问题的原因。
现在,如果您阅读我在此答案上添加的问题,它说您可以轻松地将第二个出站消息放入该类唯一的NameSpace中,请在创建代理类时按以下步骤将整个类放入一个命名空间,例如:
namespace Customnotification
{
// The whole rest of the class comes here
}
现在您的新出站邮件本身具有唯一性,并且不会与其他ProxyClass冲突,现在在您的webservice.asmx.cs
文件中执行以下操作:
namespace Customnotification
{
public class Tasks : INotificationBinding
{
// REST of the process goes here for the receiving data from outbound
// Make sure you use the default notification names do not change them
}
尝试它应该起作用。谢谢!
答案 1 :(得分:0)
将(出站消息的)端点更改为要映射的特定Web服务;)
谢谢, 阿杰·杜贝迪(Ajay Dubedi)