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);
    }
});  

Asmx服务操作导致文档未找到

我只是复制粘贴你的部分代码,添加了我自己的web用户控件(只有静态HTML "hello world"),并测试了webservice,它工作得很好。

有几件事要检查

1)调试和步骤通过代码,看看web服务是否正常运行所有服务器代码没有任何异常

2)在http://localhost/service.asmx?op=Coupons部分有一个Invoke按钮。测试它是否工作正确。如果是,我认为问题出在其他地方

3)也请查看错误和它的堆栈跟踪,以获得更好的想法。在这里发布堆栈跟踪,完整的错误也有问题。

使用F11调试你的代码,试着看看当你调用webservice时发生了什么,看看什么返回"ViewManager.RenderView("~/Modules/CouponsPromotions/CouponCenter.ascx");"。祝一切顺利。