语言:C# 5.0
平台:IIS 7.5 上的 ASP.Net 4.5
操作系统:Windows Server 2008 R2 Standard 64 位
我正在开发一个旧的 Web 窗体应用程序来添加从我们的数据库动态生成的 XML 站点地图。我创建了一个通用处理程序 (.ashx) 并正在使用 XmlWriter 构建 XML。我打电话给 site.com/SitemapIndex.ashx,瞧!到目前为止,一切都很好。
我有一个业务要求,即站点地图以 .xml 扩展名结尾。我在 web.config 中添加了一个简单的 URL 重写规则,我的本地钻机通过 SitemapIndex.ashx 文件处理 SitemapIndex.xml。
当我将解决方案部署到我们的登台服务器时,我在 SitemapIndex.xml 文件上收到 404 not found 错误。但是 .ashx 仍然有效,所以我在该服务器上添加了一个处理程序映射。我为使用 System.Web.UI.SimpleHandlerFactory 的路径 *.xml 使用了托管处理程序。当我再次请求 SitemapIndex.xml 时,输出正确呈现。
然后我尝试在服务器上请求一个物理 XML 文件并收到以下错误消息:“没有为扩展 '.xml' 注册构建提供程序。您可以在 machine.config 或 web.config 的部分中注册一个。确保它有一个 BuildProviderAppliesToAttribute 属性,其中包含值“Web”或“All”。”
现在我可以通过我的 .ashx 处理程序动态处理 .xml 文件,但将不再提供真正的 xml 文件。我需要两者都做。非常感谢任何帮助!