Asp.net 如何在没有phsyic.ASMX文件的情况下实现WebService?

Asp.net 如何在没有phsyic.ASMX文件的情况下实现WebService?,asp.net,web-services,Asp.net,Web Services,在不存在.ASMX文件的情况下,如何创建一个?(无WSE 3.0或WCF) 例如,我的web服务看起来像 [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] public class myService : System.Web.Services.WebService { //... 注意: 关于如何通过web.con

在不存在.ASMX文件的情况下,如何创建一个?(无WSE 3.0或WCF)

例如,我的web服务看起来像

[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class myService : System.Web.Services.WebService {
    //...

注意:
关于如何通过web.config访问web.config,已经有很多文章发表,如:

// Concept.Handler1Class
namespace Concept {
    public class Handler1Class : IHttpHandler {
    //...
和Web.config

<handlers>
  <add name="myHandler1" verb="GET" path="myThing.aspx" type="Concept.Handler1Class" />
   <!-- ...
<httpHandlers>
  <add path="WSTest.asmx" verb="*" type="WSLibrary.WSTest" validate="false"/>
  <!-- ... -->
</httpHandlers>


此codeproject页面显示了如何执行此操作:


留给后代的摘录。有关完整解决方案,请参阅上面的链接

C#Web服务类

namespace WSLibrary {
    public class WSTest : WebService, IHttpHandlerFactory { 
        //...
Web.config

<handlers>
  <add name="myHandler1" verb="GET" path="myThing.aspx" type="Concept.Handler1Class" />
   <!-- ...
<httpHandlers>
  <add path="WSTest.asmx" verb="*" type="WSLibrary.WSTest" validate="false"/>
  <!-- ... -->
</httpHandlers>


您在这里询问的是服务器端部件还是纯粹的客户端?从客户机的角度来看,您所描述的内容听起来类似于在Java(或其他平台)上访问web服务。在这种情况下,您需要有一个描述服务的WSDL文件。可以在代理代码中覆盖WSDL中指定的URL,以使用您选择的.Server端之一。我会更新这个问题。我想你需要的是页面方法。请参阅“创建和使用页面方法”一节。这很简单。谢谢我想我已经尝试过了,但可能有一个错误的属性或值-您提供的文章直接引导我找到了修复方法。我遗漏了
IHttpHandlerFactory
实现。这就是我的问题所在。再次感谢。呃——应该注意的是,如果您需要JSON,这将不起作用,因为这是由一个新的
ScriptHandlerFactory
处理的,该工厂标记为
internal
,因此您不能使用它:(更新:如果您需要JSON并且仍在使用.NET(4.5之前),您应该使用JSON.NET对输出进行编码。(Framework 4.5中使用的新默认JSON格式化程序)