创建没有ASMX文件的Web服务?

Chr*_*rts 6 vb.net asp.net web-services

我编写了一个ASP.NET复合控件,其中包含一些与Web服务通信的Javascript.

我已经将控件和服务的类打包成了一个DLL,使人们可以在其他项目中使用它.

我遇到的问题是,除了在项目中引用DLL之外,我的控件的使用者还必须包含用于Web服务的.ASMX文件.虽然它不是一个复杂的文件(只是一个单行程序,指的是DLL中的类),但如果可以,我想避免使用它.

有没有办法避免必须有.ASMX文件?

  • 我可以在Application_Start中使用Web服务器注册服务吗?
  • 我可以进行web.config更改以某种方式引用它吗?

感谢所有建议!

更新:在John Sheehan的回复(下面)中链接的文章确实有效 - 但如果你想使用AJAX调用Web服务则不行.有人知道AJAX友好版吗?

Joh*_*han 5

尝试这样的事情.我不知道它是否会起作用.我从ELMAH那里得到了这个想法,它为一个实际上不存在的页面创建了一个处理程序,然后从程序集中提供它.

<configuration>
   <system.web>
      <httpHandlers>
         <add verb="*" path="*WebService.asmx" type="MyHandler.WebServiceHandler, MyHandler" />
      </httpHandlers>
   </system.web>
</configuration>
Run Code Online (Sandbox Code Playgroud)

编辑:我很接近,看到这篇文章(虽然在VB中):http://www.codeproject.com/KB/aspnet/wsinaclasslibrary.aspx


Chr*_*ris -7

简短的回答是否定的。ASMX 是任何 Web 服务的入口点。如果您使用 WCF,还有其他选择,但这并不完全相同。

  • 除了它不是。您可以将 Web 服务放入类库中,并将它们与 web.config 连接起来。 (2认同)
  • 其实这篇文章很短,很容易实现。我认为不包括空格的代码总量 &lt; 10 行。怎样才算是“长”呢?我也看不出它是如何不标准的。它不使用任何隐藏的 API,也不会调用来自 Microsoft 的警告。它非常简单,我现在使用它非常成功。 (2认同)