2012-12-17 33 views
0

我將在客戶的Web服務器上放置.Net Web服務。我想要使​​用未編譯代碼的Web服務(無DLL),因此可以隨時進行更改。我知道這是可能的,但你如何做到這一點?我假設我使asmx = asmx.vb所以後面的代碼直接在asmx中,但我得到的錯誤,asmx需要一個類(通常會在DLL中)。任何幫助,建議或方向,不勝感激。無需編譯的Web服務

+0

重複的http://stackoverflow.com/q/1704009/941243 – Chris

回答

1

網站:

該網站項目是即時編譯的。你最終得到更多的DLL文件,這可能是一個痛苦。當一個目錄中的頁面或控件需要引用另一個目錄中的頁面和控件時,它也會出現問題,因爲其他目錄可能尚未編譯到代碼中。另一個問題可能在出版。

如果Visual Studio不被告知不斷重複使用相同的名稱,它會爲由頁面生成的DLL文件始終提供新的名稱。這可能會導致幾個包含相同類名的DLL文件的密切副本,這會產生大量錯誤。網站項目是在Visual Studio 2005中引入的,但它並不是非常受歡迎。

Web應用程序:

Web應用程序項目創建爲一個附加的和現在存在作爲Visual Studio 2005的主要區別是在Web應用程序項目的設計工作類似於SP 1的一部分隨Visual Studio 2003一起提供的Web項目。它將在構建時將應用程序編譯爲單個DLL文件。爲了更新項目,必須重新編譯併發布DLL文件以進行更改。

Web應用程序項目的另一個不錯的功能是從項目視圖中排除文件更加容易。在網站項目中,您排除的每個文件都使用文件名中的排除關鍵字進行重命名。在Web應用程序項目中,項目只是跟蹤哪些文件要包含/從項目視圖中排除,而無需重命名它們,這使得事情變得更加重要。

參考:http://www.megasolutions.net/AspNet/difference-between-Web-Site-and-Web-Application-Project-27210.aspx

文章ASP.NET 2.0 - 網站VS Web應用程序項目還給出了爲什麼要使用一個,而不是其他原因。下面是它的摘錄:

You need to migrate large Visual Studio .NET 2003 applications to VS 2005? use the Web Application project. 
    You want to open and edit any directory as a Web project without creating a project file? use Web Site project. 
    You need to add pre-build and post-build steps during compilation? use Web Application project. 
    You need to build a Web application using multiple Web projects? use Web Application project. 
    You want to generate one assembly for each page? use Web Site project. 
    You prefer dynamic compilation and working on pages without building entire site on each page view? use Web Site project. 
    You prefer single-page code model to code-behind model? use Web Site project. 

Web應用程序項目與網站項目(MSDN)解釋了網站和Web應用程序項目之間的差異。另外,它還討論了在Visual Studio中進行的配置。

來源:ASP.NET Web Site or ASP.NET Web Application?

+0

編譯上飛=使用網站。謝謝你Mert! – Mike

+0

不客氣 – Mert

1

這裏有一個模板文件ASMX。複製它並進行更改。請注意,第一行的Class屬性需要與代碼中類的名稱相匹配。

<%@ WebService Language="C#" Class="MyNamespace.MyClass" %> 
using System.Web.Services; 

namespace MyNamespace 
{ 
    [WebService(Namespace="http://mydomain.example/")] 
    public class MyClass : WebService 
    { 
     [WebMethod] 
     public void MyFunction() 
     { 
     } 
    } 
} 

然後,您將能夠將此文本ASMX文件部署到Web服務器而無需提供DLL。請注意,IIS將編譯您的代碼,但這會在內部發生,而無需觸發它。

另請注意,Visual Studio(至少是我的版本)不會爲您提供任何幫助,例如自動完成或調試支持。在這種模式下,Visual Studio的行爲非常像記事本。你最好用一個代碼隱藏文件開發它,最後複製/粘貼完成的代碼進行部署。