2017-02-20 7 views
1

У меня есть C# WebService, вызываемый через ajax (javascript). Возможно ли получить запрашивающий URL-адрес?C# WCF: Get Requesters URL

Пример:

test/index.htm л вызывает WebService с помощью "GET". Могу ли я получить этот URL-адрес (test/index.html) на стороне сервера?

Жаль, что я новичок в этом ...

Спасибо!

ответ

1

Да, это можно сделать. Прежде всего, необходимо добавить следующие строки в файл Web.config

<configuration> 
    <system.servicemodel> 
     <servicehostingenvironment aspnetcompatibilityenabled="true">  
     </servicehostingenvironment> 
    </system.servicemodel> 
</configuration> 

URL-адрес, который запрашивает метод Web Service известен как Referrer. URL-адрес реферера хранится в свойстве Current объекта HttpContext текущего запроса Http в процессе. Вы можете получить это значение с помощью следующего кода:

string referrer = System.Web.HttpContext.Current.Request.UrlReferrer.ToString(); 

Вы также можете использовать следующие:

string referrer = WebOperationContext.Current.IncomingRequest.Headers[System.Net.HttpRequestHeader.Referer]; 

Второй подход в основном читает Headers запроса Http и выбирает для вас ценность.

+0

спасибо. Здесь у меня проблема, что UrlReferrer имеет значение NULL. Вы знаете эту проблему? – Schakron

+0

ОК, понял. Он был пустым, потому что вызывал службу напрямую через браузер, а не из приложения. Это имеет смысл. спасибо – Schakron