我正在尝试创建本地服务器,以便可以通过网络请求控制winform [获取请求]
我正在使用Nancy创建本地服务器。我使用C ++ / Cli编写了winform。但是在C#类中处理GET请求
当我点击IP地址http://localhost:12345/something但无法将数据检索到某个变量
下面是我的C#代码
using System;
using Nancy;
namespace WebService
{
public class NancyClass : NancyModule
{
public delegate void pushData(Nancy.DynamicDictionaryValue value);
public pushData pd;
public NancyClass()
{
Get["/{t}"] = parameters =>
{
try
{
pd(parameters.t); //Null Exception here
}
catch (Exception ex)
{
Console.WriteLine(ex);
}
return "Result is " + parameters.t;
};
}
}
}
上面的代码生成以下错误
System.NullReferenceException:未将对象引用设置为实例 一个对象。在CallSite.Target(Closure,CallSite,pushData, 对象)在 System.Dynamic.UpdateDelegates.UpdateAndExecuteVoid2 [T0,T1](调用点 site,T0 arg0,T1 arg1)at WebService.NancyClass。< .ctor> b__2_0(对象参数)in G:\ Sample \ project \ NancyClass.cs:第16行
下面的代码属于C ++ / Cli winform
public ref class MyForm : public System::Windows::Forms::Form
{
using namespace System;
using namespace Nancy::Hosting::Self;
using namespace Nancy;
public:MyForm(void)
{
InitializeComponent();
WebService::NancyClass ^nc = gcnew WebService::NancyClass();
nc->pd = gcnew WebService::NancyClass::pushData(this, &MyForm::Data_from_webServer);
auto host = gcnew NancyHost(gcnew Uri("http://localhost:12345"));
host->Start(); // start hosting
}
};
我甚至无法在C#类中打印parameters.t
Console.WriteLine(parameters.t)
或Console.WriteLine(Convert.ToString(parameters.t))
会导致以下错误
Microsoft.CSharp.RuntimeBinder.RuntimeBinderException:调用是 不明确的赌注以下方法或属性: ' System.Console.WriteLine(string,para ms object [])'和 '的System.Console.WriteLine(布尔)'在CallSite.Target(闭包, CallSite,Type,Object)at System.Dynamic.UpdateDelegates.UpdateAndExecuteVoid2 [T0,T1](调用点 site,T0 arg0,T1 arg1)at WebService.NancyClass。< .ctor> b__2_0(对象参数)in G:\ Sample \ project \ NancyClass.cs:第16行