2014-11-06 106 views
0

我正在关注this tutorial。我的代码可以在这里找到:https://github.com/mudzakkir/testwebservice.gitWeb服务返回对象生成错误消息

TestConsume.aspx.cs,此代码:

var ObjSumClass = new SumClass { First = Num1, Second = Num2 }; 
var ObjSerializer = new JavaScriptSerializer(); 
var JsonStr = ObjSerializer.Serialize(ObjSumClass); 

divSumThroughJson.InnerHtml = ServiceReferenceMyService.GetSumThroughObject1(JsonStr).Sum.ToString(); 

给出以下错误:

Error 1 'FirstWebService.ServiceReferenceMyService.GetSumThroughObject1' is a 'type', which is not valid in the given context C:\TohaDoc\Sinau\WebService\FirstWebService\FirstWebService\TestConsume.aspx.cs 32 43 FirstWebService

打开文件MyService.asmx.cs,GetSumThroughObject返回对象。我们如何通过JSON访问Web服务?

+0

ASMX页面是传统技术,不应用于新开发。如果您想在.NET中开发Web服务,请查看WCF或WebAPI。 – Tim 2014-11-06 09:33:28

+0

感谢您的信息。你可以给我参考,也许书吗?或文章从哪里开始学习WCF和WebAPI?谢谢 – Khaneddy2013 2014-11-06 10:42:29

回答

1

在那篇文章中,他使用“ObjMyServiceProxy”对象,但我没有找到该对象创建的位置。

然后我检查Web服务引用172线,方法名应该是“SumOfNums1”

public FirstWebService.ServiceReferenceMyService.SumClass SumOfNums1(string JsonStr) { 
     FirstWebService.ServiceReferenceMyService.GetSumThroughObject inValue = new FirstWebService.ServiceReferenceMyService.GetSumThroughObject(); 
     inValue.JsonStr = JsonStr; 
     FirstWebService.ServiceReferenceMyService.GetSumThroughObject1 retVal = ((FirstWebService.ServiceReferenceMyService.MyServiceSoap)(this)).SumOfNums1(inValue); 
     return retVal.GetSumThroughObjectResult; 
    } 

,所以你需要调用方法这样

divSumThroughJson.InnerHtml = ObjMyService.SumOfNums1(JsonStr).Sum.ToString(); 
+0

ObjMyService也许是引用的名称..和SumOfNums1方法是不可用在该命名空间..我正在使用MS Visual Studio 2010和.Net 4 ..该文章是使用3.5是这样的问题? – Khaneddy2013 2014-11-06 10:31:39

0

我更改代码在这个部分:

divSumThroughJson.InnerHtml =ObjMyServiceProxy.GetSumThroughObject(JsonStr).Sum.ToString(); 

要这样:

divSumThroughJson.InnerHtml = new ServiceReferenceMyService.MyServiceSoapClient().SumOfNums1(JsonStr).Sum.ToString(); 

现在它正在工作.. 这样可以吗?