У меня есть динамический сайт, управляемый CMS (пользовательский прокат, я знаю, колеса и т. Д., Но не мое решение!), Который использует HttpModule для направления контента.Я обнаружил, что ресурсы .asmx не работают.После исследования я выяснил, что это произошло потому, что я по существу переопределил обработчик, убрав запрос из всего конвейера.
Итак, я теперь выясняю, существует ли ресурс и является ли он файлом .asmx, и обрабатываюсоответственно.Я думаю, что нужно создать WebServiceHandler, используя WebServiceHandlerFactory, а затем переназначить его.
Это прекрасно работает с строкой запроса? Wsdl, но запрашивает сам URI, и вы получите (в точке, обозначенной звездочками):
Исключение System.InvalidOperationException не было обработано кодом пользователя
Сообщение = Не удалось обработать запрос.[snip] InnerException: System.InvalidOperationException Message = Невозможно обработать запрос.Source = System.Web.Services InnerException: System.Web.HttpException Message = Файл '/DefaultWsdlHelpGenerator.aspx' не существует.
Обратите внимание на окончательное InnerException.Похоже, что этот поток указывает на испорченную установку .NET Framework, но этот файл присутствует в папке конфигурации 4.0.Я подозреваю ошибку с моей стороны.Я неправильно переназначаю?
public class xxxVirtualContentHttpModule : xxxHttpModule
{
protected override void OnBeginRequest(IxxxContextProvider cmsContext, HttpContext httpContext)
{
string resolvePath = httpContext.Request.Url.AbsolutePath;
// is path a physical file?
IRootPathResolver rootPathResolver=new HttpServerRootPathResolver(httpContext.Server);
string serverPath = rootPathResolver.ResolveRoot("~" + resolvePath);
if (File.Exists(serverPath))
{
if (Path.GetExtension(serverPath).Equals(".asmx", StringComparison.CurrentCultureIgnoreCase))
{
WebServiceHandlerFactory webServiceHandlerFactory = new WebServiceHandlerFactory();
IHttpHandler webServiceHttpHandler = webServiceHandlerFactory.GetHandler(httpContext, "Get", resolvePath, serverPath); // *****
httpContext.RemapHandler(webServiceHttpHandler);
}
}
}
Обновление
Я удалил все ссылки на HttpModules, и эта проблема все еще возникает, то есть она не имеет ничего общего с частью системы CMS.