2009-06-18 51 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(); %> 

希望它能幫助。