Outlook からアプリケーションを読み取るコンソール メール アプリケーションを作成しました。新しいメッセージが受信トレイに到着するたびに、非同期メソッドを呼び出します。この非同期メソッドは、Web リクエストを送信して Web サービスを呼び出し、サービス内で関数を実行します。これらのアプリケーションは、スケジューラ ジョブのように実行されます。これらのプロセスは、最初の電子メールが受信トレイに到着したときに機能します。2 番目に、例外Exception : Transaction Scope nested illegally が発生しました。電子メール アプリケーションを閉じてから開始しようとすると、その時点では正常に動作します。この例外を解決するにはどうすればよいですか? 以下は、電子メール アプリケーションからの通話サービスのコードです。
static void Save(string userAlias, string engagementName, string documentTranferId, string fileName, string fileSize,string activityName)
{
try
{
userAlias = userAlias.ToLower();
var url = new StringBuilder();
url.Append(
string.Format("https://myapp.com:8443/Services/MyService/Test.svc/Save?User={0}&Engagement={1}&FileName={2}&DocumentTrasferID={3}&fileSize={4}&ActivityName={5}",userAlias, engagementName, fileName, documentTranferId, fileSize, activityName));
Console.WriteLine(url);
WebRequest request = WebRequest.Create(url.ToString());
CurrentUrl = url.ToString();
var networkCredential = new NetworkCredential("testr", "123Test", "jemi");
request.Credentials = networkCredential;
WebResponse response = request.GetResponse();
Encoding encoding = Encoding.GetEncoding(1252);
var responseStream = new StreamReader(response.GetResponseStream());
string responseResult = responseStream.ReadToEnd();
responseStream.Close();
Console.WriteLine(responseResult);
}
catch(Exception ee)
{
Console.WriteLine(ee.Message);
}
}
サービスの詳細 - エンドポイント
<OperationContract()> _
<WebGet(UriTemplate:="/Save?User={User}&Engagement={Engagement}&FileName={FileName}&DocumentTrasferID={documentTrasferID}&fileSize={fileSize}&ActivityName={ActivityName}", RequestFormat:=WebMessageFormat.Json, ResponseFormat:=WebMessageFormat.Json)> _
Function Save(ByVal User As String, ByVal Engagement As String, ByVal FileName As String, ByVal DocumentTrasferID As String, ByVal fileSize As String, ByVal ActivityName As String) As String
実装
Public Function Save(ByVal User As String, ByVal Engagement As String, ByVal FileName As String, ByVal DocumentTrasferID As String, ByVal fileSize As String, ByVal ActivityName As String) As String Implements IMyInterface.Save
Dim facade= New MyFacade
Dim Result As String = facade.Save(User, Engagement, FileName, DocumentTrasferID, fileSize, ActivityName)
Return Result
End Function
ファサードクラス。これが例外です
Public Function Save(Doc doc,string id,string param) As String
Dim facade= New MyFacade
facade.Save(doc, id, param)
End Function