Есть ли хороший ресурс для правил о том, как используется свойство пути httpHandler?
Я вижу смешанные результаты, когда мой обработчик вызывается в разных средах, поэтому позвольте мне объяснить ...
Я хочу разрешить URL, например:
http://mysite/_layouts/myCompany/rest/myservice.svc/param1/param2
Я бы хотел вызывать мой обработчик только в папке / ссылке myCompany, чтобы я поместил следующий файл web.config в соответствующую папку, чтобы не влиять на остальную часть приложения. Это работает на некоторых машинах, но не на других:
<configuration>
<system.web>
<httpHandlers>
<add verb="*" path="myservice.svc" type="..." validate="false"/>
</httpHandlers>
</system.web>
</configuration>
Теперь я должен признать, что был немного удивлен, что это сработало, так как в основном он должен был найти "myservice.svc" из относительного пути rest / myservice.svc / param1 / param2, но это действительно находило это - но только на двух из моих трех испытательных машин. Итак, я попробовал следующее на компьютере, на котором произошел сбой:
<add verb"*" path="rest/myservice.svc/*/*" type="..." validate="false"/>
Это сработало несколько раз и теперь не работает. Будучи логическим типом, меня действительно беспокоит, что после некоторого усердия я не могу это объяснить, но я не смог заставить его снова работать. См. Также этот аналогичный вопрос переполнения стека.
Обратите внимание, что следующее работает, но заставляет меня обращаться к строковым переменным запроса, чтобы предоставить параметры, которые не идеальны.
<add verb"*" path="rest/myservice.svc/*" type="..." validate="false"/>
Я изучал родительские файлы web.config на двух машинах, которые дают разные результаты, чтобы увидеть, как они определяют любые httpHandlers, и ничего не выскочило как проблема.
Итак, я ищу понимание того, как используется этот путь.
Что бы это ни стоило, это выполняется на сайте SharePoint (отсюда и тег «sharepoint» в этом вопросе), и я использую его для предоставления REST (простой «text / xml») вместо SOAP. Я не хочу использовать полноценный WCF, потому что это приводит к слишком большой нагрузке на многие установки SharePoint, поэтому вместо этого я использую HTTP-обработчик.
Кроме того, я получаю следующую ошибку:
virtualPath at System.ServiceModel.AsyncResult.End[TAsyncResult](IAsyncResult result)
at System.ServiceModel.Activation.HostedHttpRequestAsyncResult.End(IAsyncResult result)
at System.ServiceModel.Activation.HostedHttpRequestAsyncResult.ExecuteSynchronous(HttpApplication context, Boolean flowContext)
at System.ServiceModel.Activation.HttpHandler.ProcessRequest(HttpContext context)
at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)