Sitecore管道干扰WebMethod(asmx)调用

iss*_*aco 4 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();
        }
Run Code Online (Sandbox Code Playgroud)

其他人: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
Run Code Online (Sandbox Code Playgroud)

Mar*_*ino 8

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