没有编译的Web服务

时间:2012-12-17 21:47:04

标签: .net web-services asmx

我打算将.Net网络服务放在客户的网络服务器上。我希望使用未编译的代码(无DLL)来使用Web服务,因此可以随时进行更改。我知道这是可能的但你怎么做到这一点?我假设我做了asmx = asmx.vb所以后面的代码直接在asmx中,但我得到的错误是asmx需要一个类(通常在dll中)。非常感谢任何帮助,建议或方向。

2 个答案:

答案 0 :(得分:1)

网站:

网站项目即时编译。你最终得到了更多的DLL文件,这可能是一个痛苦。当您在一个目录中有页面或控件需要引用另一个目录中的页面和控件时,它也会出现问题,因为其他目录可能尚未编译成代码。另一个问题可能是出版。

如果没有告诉Visual Studio不断重复使用相同的名称,它将为页面始终生成的DLL文件提供新名称。这可能会导致包含相同类名的DLL文件的几个密切副本,这将产生大量错误。 Web站点项目是在Visual Studio 2005中引入的,但事实并非如此受欢迎。

网络应用程序:

Web应用程序项目是作为加载项创建的,现在作为Visual Studio 2005 SP 1的一部分存在。主要区别在于Web应用程序项目的工作方式类似于Visual Studio 2003附带的Web项目它将在构建时将应用程序编译为单个DLL文件。为了更新项目,必须重新编译它,并发布DLL文件以便进行更改。

Web应用程序项目的另一个不错的功能是从项目视图中排除文件要容易得多。在“网站”项目中,您排除的每个文件都使用文件名中的exclude关键字重命名。在Web应用程序项目中,项目只是跟踪要从项目视图中包含/排除的文件而不重命名它们,使事情变得更加鲜明。

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

文章ASP.NET 2.0 - Web站点与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站点和Web应用程序项目之间的差异。此外,它还讨论了在Visual Studio中进行的配置。

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

答案 1 :(得分: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的行为与记事本非常相似。您最好使用代码隐藏文件开发它,最后复制/粘贴已完成的代码以进行部署。