Я создаю фиктивную службу REST WCF только для того, чтобы узнать, как она работает (подготовка к реальной сборке службы). У меня есть служба REST, работающая и отвечающая форматированием JSON и POX. Однако я не могу заставить работать решение для маршрутизации, чтобы исключить файл ".svc". Я использую VS 2010, WCF 4.0 и IIS 7.5 на Win Server 2008 R2.
Прямо сейчас URL работает как "/api/rest/rest.svc/json/myMethod", но я хочу просто иметь "/ api / rest / json / myMethod". Я нашел множество статей здесь на SO и в других местах, которые утверждают, что удалили файл ".svc". Я полагаю, что он настроен в соответствии с инструкциями, но проект не будет создан из-за ошибки в файле Global.asax.
В нем сказано добавить следующее к функции Application_Start:
RouteTable.Routes.Add(new ServiceRoute("", new WebServiceHostFactory(),
typeof(RestService)));
Я также добавил в web.config следующее:
<modules runAllManagedModulesForAllRequests="true">
<add name="UrlRoutingModule"
type="System.Web.Routing.UrlRoutingModule,
System.Web.Routing, Version=4.0.0.0,
Culture=neutral,
PublicKeyToken=31BF3856AD364E35" />
</modules>
<handlers>
<add name="UrlRoutingHandler"
preCondition="integratedMode"
verb="*" path="UrlRouting.axd"
type="System.Web.HttpForbiddenHandler,
System.Web, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b03f5f7f11d50a3a" />
</handlers>
Я также добавил строки aspNetCompatibility в файл web.config и над классом в файле svc.cs.
Дело в том, что я не могу даже заставить проект построить. Когда я добавляю строку RouteTable.Routes.Add в global.asax и собираю ее, я получаю следующие ошибки:
тип
'System.ServiceModel.Activation.ServiceHostFactory'
определяется в сборке, которая не
ссылки. Вы должны добавить ссылку
для сборки
«System.ServiceModel.Activation,
Версия = 4.0.0.0, Культура = нейтральная,
PublicKeyToken = 31bf3856ad364e35' .
Имя типа или пространства имен
'ServiceRoute' не найден (есть
Вы пропустили директиву использования или
ссылка на сборку?)
Есть идеи, почему это не удается?