gpt4 book ai didi

Asp.Net 3.5 路由到 Web 服务?

转载 作者:行者123 更新时间:2023-12-02 17:06:41 25 4
gpt4 key购买 nike

我正在寻找一种路由 http://www.example.com/WebService.asmx 的方法至 http://www.example.com/service/仅使用ASP.NET 3.5路由框架,无需配置IIS服务器。

到目前为止,我已经完成了大多数教程告诉我的操作,添加了对路由程序集的引用,在 web.config 中配置了内容,并将其添加到了 Global.asax 中:

protected void Application_Start(object sender, EventArgs e)
{
RouteCollection routes = RouteTable.Routes;

routes.Add(
"WebService",
new Route("service/{*Action}", new WebServiceRouteHandler())
);
}

...创建了这个类:

public class WebServiceRouteHandler : IRouteHandler
{
public IHttpHandler GetHttpHandler(RequestContext requestContext)
{
// What now?
}
}

...问题就在那里,我不知道该怎么办。我读过的教程和指南使用页面路由,而不是 Web 服务。这可能吗?

Ps:路由处理程序正在工作,我可以访问/service/,它会抛出我留在中的NotImplementedException GetHttpHandler方法。

最佳答案

只是想我会根据对我有用的 Markives 给出的答案,用更详细的解决方案来完善这个问题。

首先是路由处理程序类,它将 WebService 的虚拟目录作为其构造函数参数。

public class WebServiceRouteHandler : IRouteHandler
{
private string _VirtualPath;

public WebServiceRouteHandler(string virtualPath)
{
_VirtualPath = virtualPath;
}

public IHttpHandler GetHttpHandler(RequestContext requestContext)
{
return new WebServiceHandlerFactory().GetHandler(HttpContext.Current,
"*",
_VirtualPath,
HttpContext.Current.Server.MapPath(_VirtualPath));
}
}

以及该类在Global.asax的routey位中的实际用法

routes.Add("SOAP",
new Route("soap", new WebServiceRouteHandler("~/Services/SoapQuery.asmx")));

关于Asp.Net 3.5 路由到 Web 服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2601185/

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