2

ASP.Net with C#プロジェクトは、VS2005によって開発され、IIS6を搭載したWindowsServer2003で実行されます。ハードウェアのアップグレードを計画しているため、プロジェクトを.Net4.0およびIIS7を使用してVS2012に移動しようとしました。.Net4.0を使用したVS2005からVS2012へのソリューションの変換、およびIIS7への展開はスムーズでした。Webサイトは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.dllv1.1を使用しています。.Net4.0を使用しているプロジェクトの場合は問題になりますか?

ヒントや提案はありますか?前もって感謝します。

4

1 に答える 1

0

IIS6からIIS7に移行する場合、web.configにいくつかの変更が必要です。これが問題の原因である可能性が最も高いです。

<httpHandlers>IIS7では、とを読み取りません<httpModules>。IIS7用に次のように構成する必要があります。

参照:Asp.netAJAXの構成

<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
を 使用してリクエストを検査し、それが有効であることを確認できます。

于 2013-02-07T05:29:23.773 に答える