0

我在共享虚拟主机上有 httphandler。有用。

此 httphandler 的 httphandler webapp(虚拟)目录没有 web.config,整个共享用户的网站都有 web.config,只有一个未注释的语句:

<compilation defaultLanguage="c#" debug="false"/>

现在,我将其更改为:

<system.web>
    <urlMappings enabled="true">
    <add url="~/CheckLoad" mappedUrl="~/BackupLicense.ashx?key=CheckLoad"/>
    <compilation defaultLanguage="c#" debug="false">
      </compilation>
</system.web>

这(*)在本地工作(在 VS2008 内部网络服务器上),但不适用于共享主机。

我想念什么?(*) 表示调用 [1a],它只在本地工作,但在共享主机上它给出“找不到页面”“HTTP 错误 404”

[1a] 调用为: http : //www.MySharedSite.com/CheckLoad(除了始终和 evertwhere 工作 [1b] http://www.MySharedSite.com/BackupLicense.ashx?key=CheckLoad

4

1 回答 1

1

在内置网络服务器和 IIS6 和 7 上处理 URL 的方式存在一些细微差别。您需要知道在共享主机上运行的 IIS 版本。

具体来说,IIS6 不支持没有将扩展名映射到 aspnet_isapi.dll 的 URL - 由于您没有使用 URL 的扩展名,因此可能会出现这种情况。

如果您的主机使用具有集成管道模式的 IIS7,您可能需要使用您的 url 映射配置 system.webServer部分,而不是 system.web。(另外,请参阅此问题以了解差异的解释)。

编辑 我在您的虚拟主机使用 IIS6 的评论中看到。然后您需要让您的虚拟主机允许 ASP .NET 处理 /Checkload URL。另一种使其工作的简单方法是在 url 末尾使用 .ashx ;因为 .ashx 扩展名已在标准配置中映射到 ASP .NET。

于 2009-11-01T11:21:48.120 回答