У меня была похожая проблема с использованием правил переписывания в файле web.config. Не уверен, что это решит и вашу проблему, но я обнаружил, что когда URL был переписан, первоначально запрошенный URL-адрес был доступен через серверную переменную HTTP_X_ORIGINAL_URL.
VB:
string pathAndQuery = Request.ServerVariables.AllKeys.Contains("HTTP_X_ORIGINAL_URL") ? Request.ServerVariables("HTTP_X_ORIGINAL_URL") : Request.Url.PathAndQuery
C #:
string pathAndQuery = Request.ServerVariables.AllKeys.Contains("HTTP_X_ORIGINAL_URL") ? Request.ServerVariables["HTTP_X_ORIGINAL_URL"] : Request.Url.PathAndQuery;
Это должно получить исходный путь и строку запроса до перезаписи, независимо от того, была ли перезапись выполнена.