2009-06-18 32 views
1

是否可以在不添加Web引用的情况下从ASP.NET中的内联代码块调用Web服务?如果是这样,你能提供说明吗?在asp.net内嵌代码块中调用Web服务

+0

为什么它与从代码隐藏中调用服务有什么不同?你有没有尝试过,并有问题?如果是这样,也许编辑你的问题,说出你有什么问题。 – 2009-06-18 17:15:50

+0

我不知道如何做到这一点,而无需添加Web引用。 – 2009-06-18 17:18:35

回答

1

添加另一个C#项目(例如控制台应用程序)中的Web引用。然后切换到“显示所有文件”。您会发现一个隐藏的.cs文件,其中包含为您创建的实际Web服务代理。 (还有一个命令行工具可以做同样的事情,但我忘了名字)

您可以将生成的类复制到您的.aspx文件中,并将其复制到<script runat="server">块中。

虽然我不知道你真的需要什么;)你有没有访问网络应用程序的源代码?

另一种解决方案是为Web代理创建一个.NET dll,然后使用Assembly.Load()动态加载此程序集。动态调用方法虽然不是很漂亮。

1

一般而言,内联代码可以完成代码后面的任何代码,代码背后的代码只是更清晰并且分离文件。

您需要首先包含在创建WebService代理时为您生成的正确名称空间。

命名空间包含的代码是在内嵌代码的情况有点不同,这里有一个例子

<%@ Import Namespace="System.IO" %> 

如果你想了解的差异编码的恐怖有great article

0

如果您的App_Code文件夹中包含Web Service的代码文件(* .cs),则不需要任何引用,使用等。但是,如果Web Service不在您的项目中,或者如果您有而不是App_Code文件夹中单独的.cs文件中的代码,您将需要Web引用。

也就是从我的经验,我刚才用我的Web服务的Web方法之一,因为这样的:

<%= new MyWebService().MyWebMethod(); %> 

希望它能帮助。