我们可以为WCF做URL-REWRITE吗?

问题描述 投票:0回答:2

我们为客户构建了WCF服务并部署了dll。一切都很完美,但我们被告知必须更改WCF的URL。

可以说,我们当前的WCF URL如下所示

https://xxx.xxxxx.xxx/EGov/PostBox.svc

现在,他们希望我们将该URL更改为

https://xxx.xxxxx.xxx/EGov/TransferService.svc

可以很容易地将文件名从PostBox.svc更​​改为TransferService.svc,但我们已经为100位客户执行此操作,这是不可能的。所以,我们想知道我们是否可以从CONFIG文件中执行URL-REWRITE。

如果我们可以从配置文件中执行URL-REWRITE,那么我们会将配置文件通过电子邮件发送给每个客户,并将其放入正确的文件夹中。

我希望我明白我的问题。

c# wcf url-rewriting
2个回答
2
投票

WCF中的URL重写

创建一个新的WCF服务应用程序。

添加Global.asax文件。

在Application_Start方法中添加以下行:

 RouteTable.Routes.Add(new ServiceRoute("api/Service1", new WebServiceHostFactory(), typeof(Service1)));

在Operation Contract of Service Contract中添加WebInvoke(接口IService1)。

[OperationContract]
 [WebInvoke(Method = "GET", ResponseFormat = WebMessageFormat.Json, UriTemplate = "/GetData?value={value}")]

构建和浏览项目。

检查一下:http://gunaatita.com/Blog/URL-rewriting-in-WCF/1052


1
投票

不确定这是否会对你有所帮助,但我有一些类似的情况,我必须重写URL(对我来说,我没有向用户显示.svc文件名。

    public class Route : IHttpModule
   {
    public void Dispose()
    {
    }
    public void Init(HttpApplication context)
    {
        context.BeginRequest += delegate
        {
            //URL Rewriting 
            //---To remove the .svc extension service file name from URL----
             HttpContext cxt = HttpContext.Current;
            string path = cxt.Request.AppRelativeCurrentExecutionFilePath;
            {
                cxt.RewritePath(path.Insert(1, "/ReportingService.svc"), false);
            }

        };
    }
}

希望这至少会以某种方式帮助你

© www.soinside.com 2019 - 2024. All rights reserved.