Я использую IHttpHandler в своем приложении WebForms для динамической загрузки ресурсов .resx в javascript во время выполнения с соответствующей локализацией. Я установил здесь демонстрационный проект для справки: https://www.dropbox.com/s/qoo9bm7qtzgvhbj/TestJs.zip
Я изменил источник отсюда (немного): https://github.com/RickStrahl/Westwind.Globalization, чтобы заставить его работать.
Концепция достаточно проста. Когда я впервые попадаю на страницу, например Default.aspx, для обоих тегов <script />
, загружаемых в файл, вызывается ProcessRequest
, вызывая:
JavaScriptResourceHandler.RegisterJavaScriptGlobalResources (this, "GlobalResources", "App_GlobalResources\\Global");
JavaScriptResourceHandler.RegisterJavaScriptLocalResources (this, "LocalResources");
Эти два вызова добавляют эти теги в раздел <head />
страницы:
<script src="/JavaScriptResourceHandler.axd?ResourceSet=App_GlobalResources\Global&LocaleId=en-US&VarName=GlobalResources&ResourceType=resx&ResourceMode=1" type="text/javascript"></script>
<script src="/JavaScriptResourceHandler.axd?ResourceSet=Default.aspx&LocaleId=en-US&VarName=LocalResources&ResourceType=resx&ResourceMode=0" type="text/javascript"></script>
Простой вызов HttpHandler с параметрами запроса. Это работает при загрузке первой страницы, но последующие вызовы других страниц с теми же сценариями не вызывают ProcessRequest
. Если я вручную слежу за правильным адресом httpHandler в моем браузере, загружается действующий сценарий, но это тот же сценарий, который был загружен для предыдущей страницы, даже если строка запроса отличается.
Я убежден, что это должен быть какой-то странный механизм кеширования, но я не уверен, что именно. Мой web.config достаточно прост:
<system.webServer>
<handlers>
<add name="JavaScriptResourceHandler" verb="GET" path="JavascriptResourceHandler.axd"
type="Westwind.Globalization.JavaScriptResourceHandler,Westwind.Globalization" />
</handlers>
</system.webServer>
Я также пробовал установить для IsReusable
значение false, но безрезультатно. Есть ли мысли у кого-нибудь еще с большим опытом работы с HttpHandlers?