0

32 ビット Windows サーバー 2008 で正常に動作する asmx Web サービスがありますが、64 ビット サーバー 2008 r2 マシンでホストされている場合、「インデックスが配列の境界外でした」というメッセージが表示されます。サービスの JavaScript ファイルにアクセスしようとすると、次のようになります。

http://www.site.com/Service.asmx/jsは「インデックスが配列の範囲外でした」と出力します。64 ビットでホストされている場合のみ

サービスコードは次のようになります。

[WebService(Namespace = "http://www.company.com")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ToolboxItem(false)]
[ScriptService]
public class Saver : WebService
{
    /// <summary>A web service to save a set of ScheduleEntryProperties objects.</summary>     
    [WebMethod]
    public string SaveEntries(Entry[] entries, object start, object end, string assignmentIDs, string deptID, string useCodes)
    {
        ...
    }

そして Entry オブジェクト:

[Serializable]
public class Entry
{
    public Entry()
    {            
    }

    public Entry(object assignmentID, object date, object hours, object text)
    {
        AssignmentID = assignmentID;
        Date = date;
        Hours = hours;
        Text = text;
    }

    public object Date;
    public object AssignmentID;
    public object Text;
    public object Hours;
}

何か案は?

4

1 に答える 1

1

<system.webServer />これは、次のように定義された .axmx のIIS 7.5構成セクションとハンドラーに関係していることが判明しました。

<add name="*.asmx_*" path="*.asmx" verb="*" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" preCondition="integratedMode,runtimeVersionv2.0" />

必要なのは、 preCondition="integratedMode,runtimeVersionv2.0" を削除することだけで、インデックスの範囲外エラーが解消されました。

于 2012-09-21T20:52:55.500 に答える