2

MVC2非 MVC 部分 (通常の Asp.Net 3.5 ページ) も含むアプリがあります。

オートコンプリートを設定するために、MVC 以外のページから Web サービス (WCF ではない) を呼び出しています。

私の開発者マシンでは、MVC パーツと非 MVC パーツの両方が正常に動作します。

IIS でアプリケーションをホストすると、Web サービスの Web メソッドにアクセスできません。私はそれが返されるfirebugでチェックしました

The controller for path '/payroll/WS/MVCArch.asmx/JqUiGetEmp' was not found or does not implement IController. '

ここで、私の仮想ディレクトリ名は Payroll です。私の非MVCページは、アプリケーションのルートの下にある「RepDocs」というフォルダーの下にあります。私の Webservice フォルダー「WS」も、アプリケーションのルートの下にあります。リクエストは、「RepDocs」フォルダーの下の非 mvc ページから送信されました。

で同じコードが機能するのVSHOSTIIS (XP sp3)なぜですか? 何か足りない?

助けてください。

編集

次のようにルートを除外するようにglobal.asaxを変更しました

routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.IgnoreRoute("favicon.ico");
routes.IgnoreRoute("WS/{resource}.asmx/{*pathInfo}");
//routes.IgnoreRoute("{*allasmx}", new { allasmx = @".*\.asmx(/.*)?" });
routes.MapRoute(
    "Default", // Route name
    "{controller}/{action}/{id}", // URL with parameters
    new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);

今、私はこのエラーを受け取ります

The HTTP verb POST used to access path '/Payroll/ws/MVCArch.asmx/JqUiGetOffice' is not allowed.

以下を Web.config に追加しました

<webServices>
    <protocols>
      <add name="HttpGet"/>
      <add name="HttpPost"/>
      </protocols>
</webServices>

まだ運がありません。

4

1 に答える 1

2

Global.asax.cs の Web サービスへのルートを無視する必要があります。

routes.IgnoreRoute("{*allasmx}", new {allasmx=@".*\.asmx(/.*)?"});
于 2012-07-20T15:53:48.303 に答える