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属性移动到复杂类型,然后从元素中删除它们.)
请查看此链接以获取进一步说明.