在ASP.Net中创建一个紧凑的非SOAP Web服务

时间:2011-01-05 05:22:00

标签: c# asp.net dll web-config ihttphandler

我想创建一个简单的Web服务来分发给ASP.Net开发人员。我找到了一个应用程序(SvnBridge),它具有我正在使用的布局 - 一个web.config文件和一个.dll文件。

有趣的部分在web.config文件中:

<httpHandlers>
    <clear/>
    <add verb="*" path="*" type="SvnBridgeServer.SvnBridgeHttpHandler, SvnBridgeServer" />
</httpHandlers>

Ooooo看起来很完美。我可以抛出任何我喜欢的东西,并通过我认为是IHttpHandler实现来处理它。

所以我扯掉了上面链接的配置文件的精神,将我的库捆绑到DLL中并在VS中点击 build 。我立刻在IE中得到了这个:

  

来源错误:

     

[没有相关的源代码行]

我主要使用PHP - ASP.Net对我来说很新。显然,我做错了什么,但我还不知道哪里开始。

目前,我使用Python脚本将所有C#源捆绑到一个.ashx文件中,这对于分发来说有点酷,但却使调试成为一场噩梦。看起来有点像这样:

<%@ WebHandler Language="C#" Class="MyApp.MyClass" debug="true" %>
using System.Data;
...
namespace MyApp
{
    public class MyClass : IHttpHandler
    {
        public void ProcessRequest(HttpContext Http)
        {
            ...
        }
    }
}

显然还有更多(用户配置区域等),但你得到了要点。

有人能指出我正确的方向吗?我对C#语言很满意,只是让我感到有些困惑的安排和配置。

我意识到这个问题可能看起来有点含糊不清 - 请发表评论,我会尽力澄清。

谢谢,

尼尔。

2 个答案:

答案 0 :(得分:1)

EventLog说什么?可能应该有一个记录(类型为“Warning”,其源代码看起来像“ASP.NET x.x.xxxxx.x”)。

无论如何,你在帖子的开头提到你想要分发一个DLL文件(与web.config一起)。稍后您指向.ashx文件。

我宁愿创建一个单独的类(项目中的.cs文件),并将我的HTTP处理程序的实现放在该类中。

另外,请仔细检查是否在web.config中正确指定了HTTP处理程序的类型:

<add verb="*" path="*" type="[namespace].[type], [assembly]" />

如果您正在使用IIS6,则需要手动添加通配符脚本映射,以便HTTP处理程序“捕获”请求。 This论坛帖子可能会有所帮助。

- 帕维尔

答案 1 :(得分:1)

这是固定的。我不得不将文件夹转换为IIS中的应用程序,并将源移动到可信(非网络)位置。

我感谢那些花时间审阅这个问题的人。