.NET Framework를 사용하는 방법을 배우고 있습니다. ASP .NET 코어로 작업하고 있습니다. 최근까지 웹 호스팅 할당량을 얻거나 얻지 못했습니다. 요청이 거의 없기 때문에 할당량을 계속 늘리고 있습니다. dotnetbrowser 라이브러리를 설치 한 이후로 시작되었습니다. 데이터를 쉽게 가져 오기 때문에 내 프로젝트에 가장 적합한 라이브러리입니다. 그러나 누군가가 웹 브라우저 나 dotnetbrowser 같은 브라우저 컨트롤을 사용하지 않고 동일한 데이터를 얻는 방법을 말해 줄 수 있다면 고맙겠습니다. 필자가 필요로하는 데이터는 필요한 값이 제공되기 전에 여러 서버 및 클라이언트 통신을 거쳐야합니다. 그래서 내 질문에 어떻게 브라우저 컨트롤을 사용하지 않고 동일한 것을 얻을 수있다?푸른 색을 사용하는 응용 프로그램에서 메모리 사용량을 줄일 수있는 방법
마침내 스레드와 작업에 익숙하지 않다는 것을 감안할 때 내 코드가 버그가있을 수 있습니다. 너무 많은 메모리를 사용하고있을 수도 있습니다. 아래 코드가 내 코드
using DotNetBrowser;
using Newtonsoft.Json.Linq;
using System.Collections.Generic;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading;
using System.Web;
using System.Web.Http;
namespace AjaxRequest.Controllers
{
public class ValuesController : ApiController
{
private static ManualResetEvent waitEvent;
private static List<string> ajaxUrls = new List<string>();
static string str = "";
public static Browser browser;
public ValuesController()
{
waitEvent = new ManualResetEvent(false);
browser = BrowserFactory.Create();
browser.Context.NetworkService.ResourceHandler = new AjaxResourceHandler();
browser.Context.NetworkService.NetworkDelegate = new AjaxNetworkDelegate();
}
// GET api/values
public string Get(int id, string title)
{
string Title = title.Replace(" ", "-");
browser.LoadURL(string.Format("https://ba.com/foo/{0}-{1}/something.html", Title, id));
waitEvent.WaitOne();
browser.Dispose();
string Json = Regex.Replace(str, @"\\","");
return Json.Replace("\\\"", "\"");
}
public class AjaxResourceHandler : ResourceHandler
{
//HomeController hc;
public bool CanLoadResource(ResourceParams parameters)
{
if (parameters.ResourceType == ResourceType.XHR && parameters.URL.Contains("https://something.com/ajax/blahblah"))
{
ajaxUrls.Add(parameters.URL);
}
return true;
}
}
public class AjaxNetworkDelegate : DefaultNetworkDelegate
{
//HomeController hc;
public override void OnDataReceived(DataReceivedParams parameters)
{
if (ajaxUrls.Contains(parameters.Url))
{
PrintResponseData(parameters.Data);
}
}
public void PrintResponseData(byte[] data)
{
str = Encoding.UTF8.GetString(data);
ajaxUrls.Clear();
browser.Stop();
browser.dispose();
waitEvent.Set();
}
public void error(string info)
{
str = info;
waitEvent.Set();
}
}
}
}
내가 잘못하고있는 것은 가능한 일일까요? 그렇다면 메모리 또는 데이터를 보존하기 위해 어떻게 개선 될 수 있습니까?
UPDATE : - 범인 인 것입니다, 당신은 웹 응용 프로그램에 필요한 이유 완전히 잘 모르겠지만, 그 말했다 사용하고 푸른 무료 호스팅 서비스
웹 앱에서'DotNetBrowser'로 정확히 무엇을 하려는지 설명 할 수 있습니까? –
응용 프로그램이 웹 사이트와 통신 할 때 값이 웹 사이트에 전송되면 일련의 Ajax 요청을 통해 내 데이터를 가져 오는 것입니다. 그런 다음 크롬 래퍼가 JavaScript를 통해 데이터를 실행 한 다음 결과와 함께 다른 Ajax 요청을 수행합니다. 얻는다. 나는 httpclient가 이것을 할 수 있다는 것을 알지 못한다. 제 경우에는 XHR 요청을 청취 할 때 ... 원하는 데이터를 얻으려면 4 개의 XHR 요청이 필요합니다. – Cody
당신의 목표가이 문장에 명확하게 설명되어 있지 않습니다 : ** 필요한 데이터가 제공되기 전에 필요한 여러 데이터를 여러 서버 및 클라이언트 통신을 통해 전달 ** - 우리는 이것을 기반으로하는 대체 솔루션을 도울 수 없습니다 ... – Svek