【问题标题】:WebMethod Call Failed After Converting Projects from .Net2.0 to .Net4.0将项目从 .Net2.0 转换为 .Net4.0 后 WebMethod 调用失败
【发布时间】:2013-02-07 03:35:49
【问题描述】:

ASP.Net with C# Project 由VS2005 开发,在Windows Server2003 和IIS6 下运行。 由于我们正在计划硬件升级,我们尝试将项目移动到带有 .Net4.0 和 IIS7 的 VS2012。 解决方案从 VS2005 到 VS2012 与 .Net4.0 并部署到 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();
    }
}

对 WebMethod 的 JavaScript 调用:

this._WebRequest = Sys.Net.WebServiceProxy.invoke(this._SearchPath, "LookupContractTest", false, { "objectID":20 }, Function.createDelegate(this, this.LookupComplete), Function.createDelegate(this, this.LookupError));
  1. 在 IIS7 下调试程序时无法调用 LookupTest 函数。
  2. 如果我修改 LookupTest 函数不带参数,它运行良好,没有任何错误。像这样:public UNLookupResult LookupTest()
  3. 该项目正在使用 AjaxControlToolkit.dll v1.1。如果项目使用.Net4.0会不会有问题?

任何提示或建议?提前致谢。

【问题讨论】:

    标签: javascript asp.net web-services


    【解决方案1】:

    当您从 IIS6 迁移到 IIS7 时,web.config 中需要 few changes。 这是您的问题的最可能原因。

    在 IIS7 中不会读取您的 <httpHandlers> 和 <httpModules>。 您需要为 IIS7 配置它们,如下所示:

    参考:Configuring Asp.net AJAX

    <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>
    

    如果没有这些,您的网络服务代理将无法正常工作。
    您可以使用fiddler 来检查请求并验证它是否有效。

    【讨论】:

    • WebService 调用不适用于配置。非常感谢!!
    猜你喜欢
    • 1970-01-01
    • 2018-03-05
    • 1970-01-01
    • 2010-12-08
    • 2019-07-09
    • 2023-02-17
    • 1970-01-01
    • 2014-05-25
    • 1970-01-01
    相关资源
    最近更新 更多