我在共享虚拟主机上有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 (除了永远和外在的工作 [1b] http://www.MySharedSite.com/BackupLicense.ashx?key=CheckLoad
答案 0 :(得分:1)
在内置网络服务器以及IIS6和7上处理URL的方式存在一些细微差别。您需要知道共享主机上运行的IIS版本。
具体来说,如果没有将扩展名映射到aspnet_isapi.dll,IIS6不支持URL,并且由于您没有使用URL的扩展名,可能就是这种情况。
如果您的主机使用的是具有集成管道模式的IIS7,则您需要使用您的网址映射configure the system.webServer部分,而不是system.web。 (另请参阅this question了解差异的解释)。
修改强> 我在评论中看到你的webhost正在使用IIS6。然后,您需要让您的webhost允许ASP .NET处理/ Checkload URL。使其工作的另一个简单方法是在URL的末尾使用.ashx;因为.ashx扩展已经在标准配置中映射到ASP .NET。