Как удалить “.svc” расширение в УСПОКОИТЕЛЬНОМ сервисе WCF?

51
задан Jude 13 May 2015 в 02:19
поделиться

5 ответов

В IIS 7 можно использовать Модуль Перезаписи URL , как объяснено в этом сообщении блога .

В IIS 6 Вы могли записать http модуль , который перепишет URL:

public class RestModule : IHttpModule
{
    public void Dispose() { }

    public void Init(HttpApplication app)
    {
        app.BeginRequest += delegate
        {
            HttpContext ctx = HttpContext.Current;
            string path = ctx.Request.AppRelativeCurrentExecutionFilePath;

            int i = path.IndexOf('/', 2);
            if (i > 0)
            {
                string svc = path.Substring(0, i) + ".svc";
                string rest = path.Substring(i, path.Length - i);
                ctx.RewritePath(svc, rest, ctx.Request.QueryString.ToString(), false);
            }
        };
    }
}

И существует хорошее пример , как достигнуть extensionless URL в IIS 6, не используя третье лицо модули ISAPI или подстановочное отображение.

30
ответ дан Darin Dimitrov 7 November 2019 в 10:11
поделиться

Здесь имеет более подробную информацию с помощью Модуля Перезаписи IIS 7, или с помощью пользовательского модуля: http://www.west-wind.com/Weblog/posts/570695.aspx

4
ответ дан Rick Strahl 7 November 2019 в 10:11
поделиться

Его легкие на IIS 7 - используют Модуль Перезаписи URL

На IIS 6, который я нашел, что его самое легкое использовало модуль Перезаписи ISAPI , который позволяет Вам определить ряд регулярных выражений, которые отображают URL запроса на .svc файл...

2
ответ дан Eran Kampf 7 November 2019 в 10:11
поделиться

В IIS6 или 7 вы можете использовать IIRF , бесплатный переписывающий фильтр. Вот правило, которое я использовал:

# Iirf.ini
#

RewriteEngine ON
RewriteLog  c:\inetpub\iirfLogs\iirf-v2.0.services
RewriteLogLevel 3
StatusInquiry  ON  RemoteOk
CondSubstringBackrefFlag *
MaxMatchCount 10

# remove the .svc tag from external URLs
RewriteRule  ^/services/([^/]+)(?<!\.svc)/(.*)$    /services/$1.svc/$2  [L]
2
ответ дан 7 November 2019 в 10:11
поделиться

Существует также способ исключить физические файлы .svc в целом. Это можно сделать с VirtualPathProvider .

См.: http://social.msdn.microsoft.com/forums/en-us/wcf/thread/350f2cb6-febd-4978-ae65-f79735d412db

3
ответ дан 7 November 2019 в 10:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: