gpt4 book ai didi

c# - 将 .asmx Web 服务作为 Windows 服务运行

转载 作者:太空宇宙 更新时间:2023-11-03 15:40:48 25 4
gpt4 key购买 nike

我在这个论坛上提问完全是个新手 - 我希望我问的这个问题是正确的。

我要解决的问题是:我有一个用于 Web 服务的 Visual Studio 2010 项目。完成工作的类在“.asmx”文件中定义。该类继承自“System.Web.Services.WebService”类。

它在服务器上的 IIS 上愉快地运行。客户端可以对 Web 服务进行 SOAP 调用,它会处理请求并发送响应。没关系。

问题是我希望它在无法安装 IIS 的 Windows 7 PC 上运行。所以我希望它作为 Windows 服务运行(如果可能的话)。该服务的唯一“客户”将是该 PC 上的用户。

换句话说,我希望将我的 .asmx 中的所有代码作为 Windows 服务运行(如果可能)。

在理想情况下,我能够重新使用我现有的 .asmx(如果可能),而不必将我的所有代码复制并粘贴到新的 Windows 服务解决方案中。

所以我的目标是找到将 .asmx Web 服务作为 Windows 服务运行的最新方法。我希望有人能为我指明正确的方向,告诉我如何实现这一目标。

我已经做了很多搜索,看起来这很有可能做到。问题是很多解决方案似乎都有些过时了。或者我的概念很困惑。

基于“How can I deploy my WCF Service without IIS?”,我看了一些东西。

我最接近的是:“https://msdn.microsoft.com/en-us/library/ms751414.aspx”。但是,在此示例中,执行工作的实际类(计算器)实际上包含在服务本身中。我原以为你可以把它们分开。换句话说,让服务创建来 self 的 .asmx 文件的类的实例。

我遇到的第二个关闭是“https://msdn.microsoft.com/en-us/library/bb332338.aspx#msdnwcfhc_topic4”,但这是 .NET 3.0 和 VS 2005。我也在努力了解如何将我现有的类链接到服务中。

我遇到的其他解决方案建议添加对“Microsoft.Web.Services3.dll”、“System.Web.dll”和“System.Web.Services.dll”的引用,尽管有些人似乎认为这是称为 WSE,它已在 .net 4.0 中更新为 WCF,因此我不应该使用它。

关于我从哪里开始的任何指示?

最佳答案

在理想情况下,您会切换到 WCF,因为它可以轻松地 self 托管、托管在服务中等。并且有很多示例。将代码从 ASMX 迁移到 WCF 非常容易。但这是 3.5,因为 NetFX(WCF、WF 和 WPF 是在 3.5 下发布的)。

使用 ASMX,您需要一台服务器来托管。您可以使用 HttpListener 类创建一个简单的“服务器”。对于您的目的而言,这可能足够重。

https://msdn.microsoft.com/en-us/library/system.net.httplistener(v=vs.85).aspx

IIS 现在有一个可托管的核心,它可以与较新版本的 .NET 一起使用,但如果您无法安装较新版本并且不得不让客户端计算机保持 3.0,这可能不是您的最佳选择。

您也许可以挖掘 Cassini 的旧源代码,这是 Microsoft 的实现,最终成为可托管的网络核心。

早在 2008 年,有人就在 VS 中获取了服务器,这可能是一个选项。请注意,此页面上的版本适用于 VS 2008,即 4.0: http://www.codeproject.com/Articles/23939/Light-IIS-Run-Asp-net-without-IIS

Ultidev 有一个服务器报告给自托管:http://ultidev.com/download/default.aspx

希望其中之一能有所帮助。

关于c# - 将 .asmx Web 服务作为 Windows 服务运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30332510/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com