Asmx服务操作导致文档未找到
本文关键字:文档 服务 操作 Asmx | 更新日期: 2023-09-27 18:16:49
我很担心。环境:ASP.net web表单c# 2008。我已经有了解决方案。我创建了一个asmx web服务,如下所示(参见代码),我正试图通过浏览器访问它。基本上,当我指向http://localhost/service.asmx它工作得很好,我可以看到可用的操作和东西。我还可以在url http://localhost/service.asmx?op=MethodName上看到详细的操作,但当我实际尝试服务或调用时,问题就出现了。我得到http://localhost/service.asmx/MethodName没有找到。知道哪里出了问题吗?
[WebService(Namespace = "http://locahost/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
// To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line.
[System.Web.Script.Services.ScriptService]
public class WellnessService : System.Web.Services.WebService
{
[WebMethod]
public string MethodName()
{
return ViewManager.RenderView("~/Modules/CouponsPromotions/CouponCenter.ascx");
}
}
public class ViewManager
{
public static string RenderView(string path)
{
return RenderView(path, null);
}
public static string RenderView(string path, object data)
{
Page pageHolder = new Page();
UserControl viewControl = (UserControl)pageHolder.LoadControl(path);
if (data != null)
{
Type viewControlType = viewControl.GetType();
FieldInfo field = viewControlType.GetField("Data");
if (field != null)
{
field.SetValue(viewControl, data);
}
else
{
throw new Exception("View file: " + path + " does not have a public Data property");
}
}
pageHolder.Controls.Add(viewControl);
StringWriter output = new StringWriter();
HttpContext.Current.Server.Execute(pageHolder, output, false);
return output.ToString();
}
}
这就是我如何通过JS调用
$(document).ready(function() {
$('#liCoupons').click(function() {
$.ajax({
type: "POST",
url: "/services.asmx/MethodName",
data: "",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(msg) {
$('#result').html(msg.d);
},
error: ajaxFailed
//error
});
});
function ajaxFailed(xmlRequest) {
alert(xmlRequest.status + ' 'n'r ' +
xmlRequest.statusText + ''n'r' +
xmlRequest.responseText);
}
});
我只是复制粘贴你的部分代码,添加了我自己的web用户控件(只有静态HTML "hello world"),并测试了webservice,它工作得很好。
有几件事要检查
1)调试和步骤通过代码,看看web服务是否正常运行所有服务器代码没有任何异常
2)在http://localhost/service.asmx?op=Coupons部分有一个Invoke按钮。测试它是否工作正确。如果是,我认为问题出在其他地方
3)也请查看错误和它的堆栈跟踪,以获得更好的想法。在这里发布堆栈跟踪,完整的错误也有问题。
使用F11调试你的代码,试着看看当你调用webservice时发生了什么,看看什么返回"ViewManager.RenderView("~/Modules/CouponsPromotions/CouponCenter.ascx");"。祝一切顺利。