ASP.Net与C#项目由VS2005开发,在Windows Server2003下运行,带有IIS6。 在我们计划进行硬件升级时,我们尝试使用.Net4.0和IIS7将项目移至VS2012。 使用.Net4.0将解决方案从VS2005转换到VS2012并且转发到IIS7是顺利的。该网站在IE9下正常运行,除了来自javascript的WebMethod调用抛出错误消息:500-服务器方法“LookupTest”失败。
这就是WebMethod部分:
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.Web.Script.Services.ScriptService]
public class LookupMethods : System.Web.Services.WebService
{
[WebMethod]
[System.Web.Script.Services.ScriptMethod]
public UNLookupResult LookupTest(int objectID)
{
return new UNLookupResult();
}
}
JavaScript调用WebMethod:
this._WebRequest = Sys.Net.WebServiceProxy.invoke(this._SearchPath, "LookupContractTest", false, { "objectID":20 }, Function.createDelegate(this, this.LookupComplete), Function.createDelegate(this, this.LookupError));
任何提示或建议?提前谢谢。
答案 0 :(得分:0)
从IIS6迁移到IIS7时,web.config中需要few changes。 这是导致问题的最可能原因。
在IIS7中,您无法读取<httpHandlers>
和<httpModules>
。
您需要按如下方式为IIS7配置它们:
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<modules>
<add name="ScriptModule"
preCondition="integratedMode"
type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
</modules>
<handlers>
<remove name="WebServiceHandlerFactory-ISAPI-2.0"/>
<add name="ScriptHandlerFactory" verb="*" path="*.asmx"
preCondition="integratedMode"
type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<add name="ScriptHandlerFactoryAppServices" verb="*"
path="*_AppService.axd" preCondition="integratedMode"
type="System.Web.Script.Services.ScriptHandlerFactory,
System.Web.Extensions, Version=1.0.61025.0, Culture=neutral,
PublicKeyToken=31bf3856ad364e35"/>
<add name="ScriptResource" preCondition="integratedMode"
verb="GET,HEAD" path="ScriptResource.axd"
type="System.Web.Handlers.ScriptResourceHandler,
System.Web.Extensions, Version=1.0.61025.0, Culture=neutral,
PublicKeyToken=31bf3856ad364e35" />
</handlers>
</system.webServer>
如果没有这些,您的Web服务代理将无法正常工作 您可以使用fiddler检查请求并验证它是否有效。