Sitecore管道干扰WebMethod(asmx)调用

时间:2012-06-23 08:18:11

标签: c# ajax web-services sitecore

简单地调用webmethod:

[WebMethod]
        public List<string> GetSomethingBySomethingElse(string somethingElse) {
            var results = (from w in Something
                         where w.SomethingElse == somethingElse
                         orderby w.SomethingElse
                         select w.SomethingElse).Distinct();
            return results.ToList();
        }

其他人:http://sitecoreblog.alexshyba.com/2009/03/attach-wcf-services-to-sitecore-context.html 有同样的问题,但没有说他们是如何解决的。

堆栈追踪:

[ArgumentOutOfRangeException: Length cannot be less than zero.
Parameter name: length]
   System.String.InternalSubStringWithChecks(Int32 startIndex, Int32 length, Boolean fAlwaysCopy) +9385067
   Sitecore.Web.RequestUrl.get_ItemPath() +146
   Sitecore.Pipelines.HttpRequest.SiteResolver.GetItemPath(HttpRequestArgs args, SiteContext context) +32
   Sitecore.Pipelines.HttpRequest.SiteResolver.UpdatePaths(HttpRequestArgs args, SiteContext site) +69
   Sitecore.Pipelines.HttpRequest.SiteResolver.Process(HttpRequestArgs args) +49
   (Object , Object[] ) +64
   Sitecore.Pipelines.PipelineMethod.Invoke(Object[] parameters) +36
   Sitecore.Pipelines.CorePipeline.Run(PipelineArgs args) +140
   Sitecore.Pipelines.CorePipeline.Run(String pipelineName, PipelineArgs args, String pipelineDomain, Boolean failIfNotExists) +158
   Sitecore.Pipelines.CorePipeline.Run(String pipelineName, PipelineArgs args, String pipelineDomain) +64
   Sitecore.Pipelines.CorePipeline.Run(String pipelineName, PipelineArgs args) +50
   Sitecore.Nexus.Web.HttpModule.(Object sender, EventArgs e) +326
   System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +148
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +75

1 个答案:

答案 0 :(得分:8)

将您的网络服务路径添加到IgnoreUrlPrefixes中的web.config设置。要忽略的每个唯一路径都是以管道分隔的。