staoperationbehavior]属性を使用してWCF-Serviceでユーザー情報を取得する
-
28-10-2019 - |
質問
Silverlight対応のWCFサービスがあり、その1つの方法 絶対に必要です staoperationbehavior]属性。ユーザーのユーザーの詳細(フォーム認証)にアクセスする必要がありますが、[staoperationbehavior]属性が適用されている間、membership.getuser()は失敗します。
すなわち
[STAOperationBehavior]
[OperationContract]
public string DoWork(int inputStuff)
{
Membership.GetUser();//Fails
}
しかし
//NOT ON STA THREAD
[OperationContract]
public string DoWork(int inputStuff)
{
Membership.GetUser();//Works
}
この方法でユーザー情報にアクセスするにはどうすればよいですか、またはこの方法でユーザーの情報を提供するにはどうすればよいですか?
解決
私は最終的に、StaoperationBehavior属性を削除し、STAスレッドで手動でメソッドを実行することでこれを解決しました。
//NOT ON STA THREAD
[OperationContract]
public void DoWork(int inputStuff)
{
//Get the user info while we're not in an STA thread
var userDetails = Membership.GetUser();
System.Threading.Thread thread = new System.Threading.Thread(new System.Threading.ThreadStart(delegate
{
//Do STA work in here, using the userDetails obtained earlier
}));
thread.SetApartmentState(System.Threading.ApartmentState.STA);
thread.Start();
thread.Join();
}
少し乱雑ですが、私はそれをする他の方法を見つけませんでした
所属していません StackOverflow