Fedex服务集成错误(无法生成临时类)

Mik*_*ish 9 c# asp.net web-services fedex

我想在我的asp.net网站上集成Fedex服务.我已经从Fedex网站下载了代码,但是当我运行这个简单程序时出现错误,请检查以下代码:

static void Main(string[] args)
{
    TrackRequest request = CreateTrackRequest();
    TrackService service = new TrackService();//I get Error Here 
    if (usePropertyFile())
    {
        service.Url = getProperty("endpoint");
    }
    try
    {
        // Call the Track web service passing in a TrackRequest and returning a TrackReply
        TrackReply reply = service.track(request);
        if (reply.HighestSeverity == NotificationSeverityType.SUCCESS || reply.HighestSeverity == NotificationSeverityType.NOTE || reply.HighestSeverity == NotificationSeverityType.WARNING)
        {
            ShowTrackReply(reply);
        }        
        ShowNotifications(reply);
     }
     catch (SoapException e)
     {
         Console.WriteLine(e.Detail.InnerText);
     }
     catch (Exception e)
     {
         Console.WriteLine(e.Message);
     }         
     Console.WriteLine("Press any key to quit!");
     Console.ReadKey();
}
Run Code Online (Sandbox Code Playgroud)

调试发生以下错误TrackService service = new TrackService();(第5行):

无法生成临时类(result = 1).错误CS0029:无法将类型'TrackWebServiceClient.TrackServiceWebReference.EMailNotificationEventType'隐式转换为'TrackWebServiceClient.TrackServiceWebReference.EMailNotificationEventType []'

mai*_*mai 20

这可能是WSDL.exe生成客户端代码的方式的问题.

您必须手动编辑Reference.cs文件,[][]以便[]EmailNotificationEventType定义中将双括号替换为单个括号.

来自微软:

目前没有可用的解决方案.但是,有三种解决方法可供使用:

  • 您可以使用WSDL.exe手动生成代理类,然后将不适当地创建数据类型的代理类更改为二维数组(例如,"CustomType [] []"),以便它是单个-dimensional数组(例如,"CustomType []").
  • 您可以使用所需的Web服务描述语言(WSDL)更改数据类型,以便在定义中包含第二个可选元素.您可以通过添加如下元素来完成此操作: <xs:element minOccurs="0" name="dummyElement" nillable="true" type="xs:string"/>
  • 您可以在所需的WSDL中更改复杂类型,以便边界属性是复杂类型的一部分,而不是元素的一部分.(也就是说,您可以将minOccurs和maxOccurs属性移动到复杂类型,然后从元素中删除它们.)

请查看此链接以获取进一步说明.