2017-02-09 39 views
0

我試圖使用System.Data.DataTable解析會話期間附加的Excel文檔並將其複製到DataTable,以便使用BotFramefork對話框進一步處理。Microsoft Bot Framework 500內部服務器使用System.Data命名空間時出錯

當使用「System.Data」命名空間且未能發送消息時,會出現「500 InternalServerError」。

我已經從GitHub試過下面的示例如果包含「System.Data.DataTable」來運行本地與仿真

https://github.com/jamesemann/intro-to-botframework5-dialogsrefactored

對同一樣品,有一個500內部服務器錯誤在模擬器中。

[Serializable] 
public class AdditionDialog : IDialog<object> 
{ 
    protected int number1 { get; set; } 


    /* Error When Included Below line*/ 
System.Data.DataTable dt = new System.Data.DataTable(); 


    public async Task StartAsync(IDialogContext context) 
    { 

     await context.PostAsync("Provide number one:"); 

     context.Wait(MessageReceivedAddNumber1); 
    } 

    public async Task MessageReceivedAddNumber1(IDialogContext context, IAwaitable<IMessageActivity> argument) 
    { 
     var numbers = await argument; 
     // number one is persisted between messages automatically by bot framework dialog 
     this.number1 = int.Parse(numbers.Text); 
     await context.PostAsync("Provide number two:"); 

     context.Wait(MessageReceivedAddNumber2); 
    } 

    public async Task MessageReceivedAddNumber2(IDialogContext context, IAwaitable<IMessageActivity> argument) 
    { 
     var numbers = await argument; 
     var number2 = int.Parse(numbers.Text); 
     await context.PostAsync($"{this.number1} + {number2} is = {this.number1 + number2}"); 

     context.Done<object>(new object()); 
    } 

任何人都可以建議,如果我失去了什麼在這裏。

回答

2

問題是DataTable不可序列化,因此無法在對話框中保存對無法序列化的內容的引用,因爲在每次交互中對話框狀態都被序列化。

如果添加[NonSerialized]屬性,您將看到該對話框執行得很好,但這會產生其他影響。

[NonSerialized] 
System.Data.DataTable dt = new System.Data.DataTable(); 

不知道爲什麼你正在嘗試在一個對話框中使用DataTable,但我的建議是來封裝到你可以根據自己的業務,並確保該服務是可序列化一個你不持有引用事情不能被序列化。

有關處理非序列化服務的更多信息,請參閱this

+1

感謝@EzequielJadib的info.This是有幫助的:-) – user2092402

+0

我用shell腳本調用新進程「System.Diagnostics.ProcessStartInfo」,並嘗試使用OutputDataReceived將其重定向到對話。 @Ezequiel你能否提出建議我如何實現這一目標。我已經做了這個與WPF c#輸出重定向到文本框。提前致謝。 – user2092402

+0

嗯...你可能不得不看ProactiveMessages ...看到https://github.com/MicrosoftDX/botFramework-proactiveMessages –

相關問題