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

时间:2014-12-26 10:13:41

标签: c# wcf url-rewriting

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

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

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

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

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

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

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

我希望我明白我的问题。

2 个答案:

答案 0 :(得分:2)

WCF中的URL重写 enter image description here

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

添加Global.asax文件。

在Application_Start方法中添加以下行:

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

在Service 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 :(得分: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);
            }

        };
    }
}

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