2017-02-14 8 views
2

Я использую vs 2017rc, и у меня проблемы с совместимостью. Я не могу добавить куклу окон в свой проект, и когда я пытаюсь преобразовать код из форм выигрыша в Asp k, вы получите проблемы. Возможно, я делаю это неправильно, но, похоже, работает на vs2015.Преобразование формы окон в приложение Asp lr console

Пожалуйста, мне нужна помощь, чтобы решить эту проблему. Возможно, я делаю это неправильно. См. Код ниже.

using DotNetBrowser; 
using DotNetBrowser.WinForms; 
using System.Collections.Generic; 
using System.Diagnostics; 
using System.Text; 
using System.Windows.Forms; 

namespace GetAjaxResponseBodySample 
{ 
public partial class Form1 : Form 
{ 
    private static List<string> ajaxUrls = new List<string>(); 
    private WinFormsBrowserView browserView; 

    public Form1() 
    { 
     InitializeComponent(); 
     browserView = new WinFormsBrowserView(); 
     browserView.Browser.Context.NetworkService.ResourceHandler = new AjaxResourceHandler(); 
     browserView.Browser.Context.NetworkService.NetworkDelegate = new AjaxNetworkDelegate(); 
     Controls.Add(browserView); 
     browserView.Browser.LoadURL("http://www.w3schools.com/xml/ajax_examples.asp"); 
    } 

    private class AjaxResourceHandler : ResourceHandler 
    { 
     public bool CanLoadResource(ResourceParams parameters) 
     { 
      if (parameters.ResourceType == ResourceType.XHR) 
      { 
       Debug.WriteLine("Intercepted AJAX request: " + parameters.URL); 
       ajaxUrls.Add(parameters.URL); 
      } 
      return true; 
     } 
    } 

    private class AjaxNetworkDelegate : DefaultNetworkDelegate 
    { 
     public override void OnDataReceived(DataReceivedParams parameters) 
     { 
      if (ajaxUrls.Contains(parameters.Url)) 
      { 
       Debug.WriteLine("Captured response for: " + parameters.Url); 
       Debug.WriteLine("MimeType = " + parameters.MimeType); 
       Debug.WriteLine("Charset = " + parameters.Charset); 
       PrintResponseData(parameters.Data); 
      } 
     } 

     private void PrintResponseData(byte[] data) { 
      Debug.WriteLine("Data = "); 
      var str = Encoding.Default.GetString(data); 
      Debug.WriteLine(str); 
     } 
    } 
} 

Меня не интересует просмотр обозревателя ... Я уже получил Jason мне от тела ответа Ajax.

ответ

3

Возможно использование браузера в режиме без звука без создания браузера.

Следующий пример кода работает в веб-приложении на VS2017rc с помощью основного веб-приложения ASP.NET (.NET Framework) или веб-приложения ASP.NET (.NET Framework). Пожалуйста, примите во внимание, что необходимо, чтобы тело Dispose browser было захвачено.

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Threading.Tasks; 
using Microsoft.AspNetCore.Mvc; 
using DotNetBrowser; 
using System.Diagnostics; 
using System.Text; 

namespace WebApplication7.Controllers 
{ 
    public class HomeController : Controller 
    { 
     private static List<string> ajaxUrls = new List<string>(); 
     Browser browser;   

     public string Index() 
     { 
      Init(); 
      return "Test page"; 
     }   

     private void Init() 
     { 
      browser = BrowserFactory.Create(); 
      browser.Context.NetworkService.ResourceHandler = new AjaxResourceHandler(); 
      browser.Context.NetworkService.NetworkDelegate = new AjaxNetworkDelegate(); 

      browser.LoadURL("https://www.w3schools.com/xml/ajax_examples.asp"); 
     }  

     private class AjaxResourceHandler : ResourceHandler 
     { 
      public bool CanLoadResource(ResourceParams parameters) 
      { 
       if (parameters.ResourceType == ResourceType.XHR) 
       { 
        Debug.WriteLine("Intercepted AJAX request: " + parameters.URL); 
        ajaxUrls.Add(parameters.URL); 
       } 
       return true; 
      } 
     } 

     private class AjaxNetworkDelegate : DefaultNetworkDelegate 
     { 
      public override void OnDataReceived(DataReceivedParams parameters) 
      { 
       if (ajaxUrls.Contains(parameters.Url)) 
       { 
        Debug.WriteLine("Captured response for: " + parameters.Url); 
        Debug.WriteLine("MimeType = " + parameters.MimeType); 
        Debug.WriteLine("Charset = " + parameters.Charset); 
        PrintResponseData(parameters.Data); 
       } 
      } 

      private void PrintResponseData(byte[] data) 
      { 
       Debug.WriteLine("Data = "); 
       var str = Encoding.UTF8.GetString(data); 
       Debug.WriteLine(str); 
      } 
     } 
    } 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^