我正在尝试从其他网络服务(TotalCalories)调用Web服务(CalorieCount)。现在据我所知/你可能会发现你必须在.aspx文件中定义一个Web服务。我的问题是我还没有(因为)表单只会与第二个服务进行交互。
有没有办法定义除此之外的服务?
TotalCalories:
using ...
namespace Food_Calorie_Calculator
{
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
//Allow web service to be called --->
[System.Web.Script.Services.ScriptService]
public class TotalCalories : System.Web.Services.WebService
{
[WebMethod]
public Food CalorieTotal(List<Food> mixedList)
{
/* Count the total number of everything */
foreach (var element in mixedList)
{
//Some Code
aFood = CallCalorieCount(name,weight); <------- Error: namespace but used as var
}
//Some Code
return totalFood;
}
}
}
答案 0 :(得分:1)
我只是假设你在解决方案中添加的网络参考被称为“CalorieCount”,因此你应该将它(CalorieCount.CalorieCount)重命名为你的推荐名称。 您必须首先创建Web服务的实例,然后您可以调用它的方法。
对于您的问题,仅在TotalCalories类中添加该方法就足够了。 此外,如果需要从另一个Web服务或站点调用CalculateItem方法,您可以使用[WebMethod]将该方法放在TotalCalories类中,否则我不会将其定义为该服务的Web方法。
public class TotalCalories : System.Web.Services.WebService
{
[WebMethod]
public Food CalorieTotal(List<Food> mixedList)
{
...
aFood = CalculateItem(name, weight);
...
return
}
[WebMethod] //If needed to call outside of the webservice WebMethod, else just remove the attribute
public Food CalculateItem(String name, Double weight)
{
...
}
}
这里是用于创建webservice实例并调用方法
的代码 CalorieCount.CalorieCount calorieCountService service = new CalorieCount.CalorieCount();
aFood = calorieCountService.CalculateItem(name,weight);