0

私は以下のようなコントローラークラスを持っています:

public partial class GenericViewController : Controller
    {
        public virtual void StoreUrl(string url)
        {
            Session["URL"] = url;
        }
    }

私は以下のようにjqueryajaxを使用してこのメ​​ソッドを呼び出そうとしています:

    $.ajax(
                {
                    type: "POST",
                    cache:false,
                    url: "http://" + baseUrl + "/GenericView/StoreUrl",
                    data: { url: applicationurl },
                    error: Error
                });

これで、ajax呼び出しをトリガーすると、次のエラーが発生します

[HttpException]: The controller for path '/GenericView/StoreUrl' was not found or does not implement IController.
   at System.Web.Mvc.DefaultControllerFactory.GetControllerInstance(RequestContext requestContext, Type controllerType)
   at System.Web.Mvc.DefaultControllerFactory.CreateController(RequestContext requestContext, String controllerName)
   at System.Web.Mvc.MvcHandler.ProcessRequestInit(HttpContextBase httpContext, IController& controller, IControllerFactory& factory)
   at System.Web.Mvc.MvcHandler.<>c__DisplayClass6.<BeginProcessRequest>b__2()
   at System.Web.Mvc.SecurityUtil.<>c__DisplayClassb`1.<ProcessInApplicationTrust>b__a()
   at System.Web.Mvc.SecurityUtil.<GetCallInAppTrustThunk>b__0(Action f)
   at System.Web.Mvc.SecurityUtil.ProcessInApplicationTrust(Action action)
   at System.Web.Mvc.SecurityUtil.ProcessInApplicationTrust[TResult](Func`1 func)
   at System.Web.Mvc.MvcHandler.BeginProcessRequest(HttpContextBase httpContext, AsyncCallback callback, Object state)
   at System.Web.Mvc.MvcHandler.BeginProcessRequest(HttpContext httpContext, AsyncCallback callback, Object state)
   at System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.BeginProcessRequest(HttpContext context, AsyncCallback cb, Object extraData)
   at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
   at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)

登録ルートでこれを解決するために次のことを試みましたが、それでも同じエラーが発生します

 routes.IgnoreRoute("Ignore/");
 routes.IgnoreRoute("{*GenericView}", new { GenView= @"(.*/)?GenericView(/.*)?" });
 routes.RouteExistingFiles = false;
 routes.IgnoreRoute("GenericView/{*pathInfo}");

追記:このコードは、URLabc.comでマップされたIISWebサイトの下でアプリケーションとしてホストされたLookupDataと呼ばれるアプリケーションでホストされ、abc.comは認証を行うアプリケーションをホストし、abc.com/LookupDataはアプリケーションにヒットします。上記のコードをホストします。単独で実行した場合のLookupdataはこのエラーをスローしませんが、abc.com経由でアクセスした場合、アプリケーションはGenericViewControllerを解決できません。

コードのどこに間違いがあるのか​​わかりません。誰かが解決策を提案できますか?

4

1 に答える 1

1

この問題を解決するための解決策の1つに、実際にバグが追加されました。

routes.IgnoreRoute("GenericView/{*pathInfo}");

これにより、Mvcは「GenericViewController」へのルートを無視します。ただし、「設定より規約」を使用していない場合を除きます。したがって、メソッド(StoreUrlなど)は呼び出されません。

追加する

routes.IgnoreRoute("{*GenericView}", new { GenView= @"(.*/)?GenericView(/.*)?" });

同じ結果になる可能性があります。

ルートを削除するだけです。IgnoreRoute( "{* GenericView}"

于 2013-02-19T23:48:51.720 に答える