こんにちは、私はasp.netアイデンティティを使用して登録機能を実装しようとします。asp.netのHttpPostedFileBaseオブジェクトを渡すアイデンティティアクションメソッドとface apiで検証
私の必要なプロパティの1つは、私が最後に私がfaceServiceClient.DetectAsync()
azure face apiメソッドを呼び出すアクションメソッドの引数として渡す新しいユーザーの写真です。
の<input type='file'>
を使用して写真をつかみ、次に登録アクションのIDのアカウントコントローラで、HttpPostedFileBase object
を使用して読み取ります。
問題は、最初の引数としてfaceServiceClient.DetectAsync()
ニーズストリームオブジェクトまたは文字列(IMAGEPATH)が、私の場合、私はストリームオブジェクトまたは
HttpPostedFileBase
がない画像のパスを与えることができますどのようにそれを把握するカントイメージパスを取得しますが、イメージを取得するにはこのタイプのオブジェクトが必要です。その後、
と私は引数としてhttpPostedFilebase object.InputStream
を渡すためにしようとした場合でも、私は
アカウント・コントローラ
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Register([Bind(Exclude = "UserPhoto")]RegisterViewModel model, HttpPostedFileBase userPhoto)
{
if ((userPhoto==null) || (userPhoto.ContentLength <= 0))
{
ModelState.AddModelError("error", @"Please Select a profile picture");
}
if (ModelState.IsValid)
{
var faceApiresult = await new FaceRecognitionController().GetDetectedFaces(userPhoto);
if (!faceApiresult)
{
ModelState.AddModelError("error", @"Your picture does not include your face");
return RedirectToAction("Index", "Home");
}
var user = new ApplicationUser
{
UserName = model.Email,
Email = model.Email,
UName = model.Username,
UserPhoto = model.UserPhoto
};
var result = await UserManager.CreateAsync(user, model.Password);
if (result.Succeeded)
{
await SignInManager.SignInAsync(user, isPersistent: false, rememberBrowser: false);
// For more information on how to enable account confirmation and password reset please visit https://go.microsoft.com/fwlink/?LinkID=320771
// Send an email with this link
// string code = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id);
// var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, code = code }, protocol: Request.Url.Scheme);
// await UserManager.SendEmailAsync(user.Id, "Confirm your account", "Please confirm your account by clicking <a href=\"" + callbackUrl + "\">here</a>");
return RedirectToAction("Index", "Home");
}
AddErrors(result);
}
// If we got this far, something failed, redisplay form
return View(model);
}
と私の具体的にはawait faceServiceClient.DetectAsync
コマンドライン
を指して休憩することにより、ヌル取得FaceRecognitionController
public class FaceRecognitionController : Controller
{
private static string ServiceKey = ConfigurationManager.AppSettings["FaceServiceKey"];
private static string EndPoint = ConfigurationManager.AppSettings["FaceServiceEndPoint"];
[HttpGet]
public async Task<dynamic> GetDetectedFaces(HttpPostedFile userPhoto)
{
var photo = new byte[userPhoto.ContentLength];
if (userPhoto.ContentLength == 0) return false;
try
{
// Create Instance of Service Client by passing Servicekey as parameter in constructor
var faceServiceClient = new FaceServiceClient(ServiceKey);
var faces = await faceServiceClient.DetectAsync(userPhoto.InputStream, true, true, new FaceAttributeType[] { FaceAttributeType.Gender, FaceAttributeType.Age, FaceAttributeType.Smile, FaceAttributeType.Glasses });
//check if find any faces
var results = faces.Length;
return results != 0;
}
catch (FaceAPIException)
{
//do exception work
}
return false;
}
}
}
検証APIはどんな顔を見つけて、ちょうど登録
私はこれを克服することができる方法上の任意の考えを完了するために、trueを返す場合は、私はちょうどチェック見ることができるように?