context.RewritePath 和 jquery ajax 不调用 webmethod
Posted
技术标签:
【中文标题】context.RewritePath 和 jquery ajax 不调用 webmethod【英文标题】:context.RewritePath and jquery ajax not calling webmethod 【发布时间】:2014-08-11 20:05:19 【问题描述】:问题背景:这个问题是我另一个问题的一部分,我发布这个新问题是为了让事情变得容易理解,主要问题链接是这样的:LINK,在这个链接中你可以找到我的项目的完整简要信息和 解决方案,用于加载带有 context.rewritepath 问题的 CSS。
在我的项目中,我在 global.asax 中编写了 context.rewritepath 以将用户请求重定向到不同的位置,而无需更改地址栏地址。
问题是:没有 context.rewritepath jquery ajax 工作正常;在 json 中调用 webmethod 并返回响应。但是当我使用 context.rewritepath 时,jquery ajax 响应返回的是 html 而不是 json。
这里是实时链接:
jasbir.bhinderblink.com
bhinderblink.com/users/jasbir/default.aspx
两个链接都从服务器调用同一个页面。第一个是带有 context.rewritepath,第二个是没有 context.rewritepath。作为演示测试,在此页面上,您可以单击顶部的第二个或第三个文本框,它会给您一个类型框来将数据保存到数据库。
您会注意到第一个链接会产生错误,如果您转到 firebug java HelloWorld POST 响应,您会看到它返回的是 html 而不是 json,第二个链接返回的是 json 数据
【问题讨论】:
您需要阐明如何使用您的示例页面。当我尝试您提供的第二个链接时,我得到一个状态 500 错误页面。 现在它正在工作,我正在测试一些 mime 类型,它开始显示 500 错误。我重新上传了项目。 您的问题中缺少一些关键信息,例如 global.asax 中执行 context.rewritepath 的代码和应该生成您的 json 响应的代码。除了症状,我们没有什么可做的。将来,您需要提供导致问题的代码及其结果。鉴于问题不完整,我只能提供一些解决问题的建议。 你好 B2k 我在这个问题的顶部添加了背景和链接。这个问题是我另一个问题的一部分。为了让事情容易理解,我开始了这个新问题。 global.asax 的完整代码和信息在该链接中。 我投票赞成你提供必要的细节来回答你的问题。 【参考方案1】:您总是可以尝试只返回正确的 mime 类型。此外,您可以在 ajax 帖子网址中使用 HelloWorld 的完整网址。
url: "/users/jasbir/default.aspx/HelloWorld",
更新:
根据链接的问题,您的问题是在执行重写时您丢失了请求的 /HelloWorld 部分。
If Directory.Exists(Server.MapPath("~/users/" & parameters(i))) Then
Context.RewritePath("/users/" & parameters(i) & HttpContext.Current.Request.Path, False)
Return
Else
Context.RewritePath("/error.aspx")
Return
End If
【讨论】:
我已经尝试过了,但没有解决方案。请查看我在主要问题中提供的链接以供参考。 那么您的建议是什么,如何捕获 /HelloWorld 部分?我尝试将 Context.Request.Path 放在 global.asax 文件中,如您在代码示例中所示,它以服务器上的错误结束。 只是为了测试你的代码输入这个地址http://www。 jasbir.bhinderblink.com。并在没有您建议的代码的情况下进行测试,输入此地址 jasbir.bhinderblink.com/ 它不起作用,现在它无法找到 default.aspx 页面。您能否解释一下如何捕获 HttpContext.Current.Request.Path 输出,以便我们了解实际发生的情况? Wordpress 使用 Web 服务器的重写规则。这是在请求被发送到 asp.net 进行处理之前处理的。对于旧服务器,我们使用 iis7 和 ISAPI Rewrite 中内置的重写规则。【参考方案2】:解决方案 使用 vb.net context.rewritepath 的 Jquery ajax 调用 webmethod...
在主页我添加了这个....
<base href="http://www.bhinderblink.com/users/jasbir/">
这个 *** link 帮助解决了这个代码的问题:-
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Headers" value="Origin, X-Requested-With, Content-Type, Accept" />
</customHeaders>
</httpProtocol>
【讨论】:
以上是关于context.RewritePath 和 jquery ajax 不调用 webmethod的主要内容,如果未能解决你的问题,请参考以下文章
ContentType 不起作用,mime=application/octet-stream
ASP.NET iis发布网站后,浏览报错。虚拟路径“/aspx/login.aspx”映射到另一个应用程序,这是不允许的。