0

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

4

2 回答 2

1

网站:

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

如果 Visual Studio 没有被告知不断地重复使用相同的名称,它将一直为页面生成的 DLL 文件提供新名称。这可能导致有多个包含相同类名的 DLL 文件的紧密副本,这将产生大量错误。网站项目是在 Visual Studio 2005 中引入的,但事实证明它并不是非常受欢迎。

Web应用程序:

Web 应用程序项目是作为插件创建的,现在作为 Visual Studio 2005 的 SP 1 的一部分存在。主要区别在于 Web 应用程序项目的设计类似于 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 - 网站与 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 网站或 ASP.NET Web 应用程序?

于 2012-12-17T21:51:47.090 回答
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 的行为很像记事本。您最好使用代码隐藏文件开发它,最后复制/粘贴完成的代码以进行部署。

于 2016-07-19T11:17:25.367 回答