Сначала я создал веб-сервис в проекте ASP.net, а затем переместил его код в библиотеку классов в файл CSharp (.cs).Как можно получить доступ к WebService, созданному в библиотеке классов?
Я также добавил реализацию «IHttpHandlerFactory» в этом вновь созданном классе, так что я мог бы зарегистрировать эту услугу в файле web.config:
public class Test: WebService, IHttpHandlerFactory
{
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public string Hello(string world)
{
return "Hello " + world;
}
private static WebServiceHandlerFactory wshf = new WebServiceHandlerFactory();
private static MethodInfo coreGetHandlerMethod = typeof(WebServiceHandlerFactory).GetMethod("CoreGetHandler", BindingFlags.Instance | BindingFlags.NonPublic);
public System.Web.IHttpHandler GetHandler(System.Web.HttpContext context, string requestType, string url, string pathTranslated)
{
return (IHttpHandler)coreGetHandlerMethod.Invoke(wshf, new object[] { GetType(), context, context.Request, context.Response });
}
public void ReleaseHandler(IHttpHandler handler)
{
}
}
и зарегистрировал его в web.config:
<add name="TestService" path="TestService.asmx" verb="*" type="MyApp.Library.Test, MyApp.Library, Version=1.0.0.0, Culture=neutral" preCondition="integratedMode" />
я могу получить доступ к нему здесь:
http://localhost:8090/TestService.asmx
и она отлично работает при использовании бровей э.
У меня был ранее работающий вызов ajax. Я только должен был изменить URL службы:
/TestService.asmx
Теперь, когда служба вызывается с помощью Ajax, получается ошибка:
System.InvalidOperationException: Request format is invalid: application/json; charset=utf-8.
at System.Web.Services.Protocols.HttpServerProtocol.ReadParameters()
at System.Web.Services.Protocols.WebServiceHandler.CoreProcessRequest()
У меня есть
contentType: "application/json; charset=utf-8",
в jQuery Ajax Call. Потратив несколько часов в расстройстве, я нашел ссылку на эту страницу, которая на самом деле рассматривала этот вопрос:
http://www.springframework.net/doc-latest/reference/html/webservices.html
Я не хочу, чтобы добавить дополнительную зависимость к Spring.NET для выполнения этой задачи, так как я уже использую замок виндзор.
Как можно получить доступ к веб-сервису, который был создан в проекте библиотеки классов и зарегистрирован в web.config, в качестве веб-страницы ASP.net?
Я думаю, что вы должны быть 'потребляя webservice' не перемещая код лично в библиотеку класса любым способом, чтобы получить доступ к WebService из класса библиотеки вас нужно будет использовать этот «WebService», добавив новую ссылку -> advanced-> WebService' , тогда вам нужно будет просмотреть и/или ввести точный URL-адрес, где у вас есть файл .asmx .. вот хорошая ссылка читать, чтобы сделать вещи проще http: //www.c-sharpcorner.com/uploadfile/prvn_131971/chapter-31creating-web-services/также, поскольку вы используете JSON, есть еще более простое видео на youtube для потребления Linq2Sql webservice – MethodMan
Я не потребляю веб-службу из библиотеки классов, но выставляю ее из нее. –
тот же самый принцип применяется. Я разоблачаю тот, который я только что создал вчера. И я создаю небольшое консольное приложение, чтобы выполнить его и отлаживать, и он работает безупречно. Я даже могу проверить его локально, запустив его из проекта, в котором я создал пустой веб-сайт. Затем добавлен новый элемент-> выбранный веб-сервис и добавлен в мой [веб-метод] ... и т.д. работает как шарм. Как я уже сказал, если вы разоблачаете его, почему вы чувствуете необходимость добавить его в класс Library .. если это не приложение веб-службы WCF, но все же я думаю, вам нужно понять, как потреблять веб-сервис – MethodMan