所以我把头发拉过来。环境:ASP.net网络表格C#2008。 我已经有了this解决方案。 我创建了一个asmx webservice,如下所示(请参阅代码),我试图通过浏览器访问它。基本上当我指向http://localhost/service.asmx它工作正常,我可以看到可用的操作和东西..我也可以在网址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);
}
});
答案 0 :(得分:2)
我只是复制粘贴你的部分代码,添加了一个我自己的web用户控件(只有静态HTML“hello world”)并测试了webservice并且工作正常。
要检查的事情。
1)调试并逐步执行代码以查看Web服务是否正确运行所有服务器代码,没有任何例外
2)http://localhost/service.asmx?op=Coupons部分中有一个Invoke按钮。测试它是否正常工作。如果是的话,我认为问题出在其他地方
3)另外请查看错误及其堆栈跟踪以获得更好的主意。在这里发布堆栈跟踪,但也有问题。
希望这会有所帮助。
答案 1 :(得分:0)
使用F11调试代码,尝试查看调用webservice时发生的情况,并查看返回的内容“ViewManager.RenderView(”〜/ Modules / CouponsPromotions / CouponCenter.ascx“);”。 希望一切顺利。