繁体   English   中英

将.asmx Web服务作为Windows服务运行

[英]Running a .asmx Web service as a Windows Service

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

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

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

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

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

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

因此,我的目标是找到将.asmx Web服务作为Windows服务运行的最新方法。 我希望有人可以为我指出正确的方向。

我已经做了很多搜索,看起来这很有可能做到。 问题在于,那里的许多解决方案似乎有些过时了。 还是我的概念比较混乱。

基于“ 如何没有IIS的情况下部署WCF服务? ”,我看了几件事。

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

我遇到的第二次关闭是“ https://msdn.microsoft.com/en-us/library/bb332338.aspx#msdnwcfhc_topic4 ”,但这是.NET 3.0和VS2005。我也很难理解如何将我现有的课程链接到服务。

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

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

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

使用ASMX,您需要托管服务器。 您可以使用HttpListener类创建一个简单的“服务器”。 这可能足以满足您的目的。

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

IIS现在具有可托管的内核,可以与.NET的较新版本一起使用,但是如果您无法安装较新的版本,而不得不将客户端计算机的版本设置为3.0,则它可能不是您的最佳选择。

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

早在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

希望这些帮助之一。

为了完整起见,这是我解决的方法:

最后,我继续在客户端PC上运行IIS,然后继续使用asmx。

我发现将asmx转换为WCF非常棘手。 确切地说,我发现很难转换asmx中的线程处理(其他人编码的线程处理)。 为了进一步解释我试图转换的asmx,它的所有工作都在继承自“ System.Web.Services.WebService”的类中进行。 因此,它可以创建一个“应用程序”实例,然后将其用于执行线程管理。

因此,与使用“ System.ServiceModel”(不允许我创建“ Application”实例)来尝试执行相同的操作相比,我认为在客户端PC上仅使用IIS会更容易。 我认为这比重新编码相当复杂的asmx更好地利用了时间。 我知道有点失败主义者。

致以诚挚的问候。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM