Я могу получить идентификатор пользователя из веб-приложения mvc 3 в приложении пульта?

Я должен получить идентификатор пользователя из приложения asp.net mvc 3 в приложении пульта. Вот мой код: (mvc)

public class MembershipRepository : IMembershipRepository
{
    public Guid GetUserId(string name)
    {
        var providerUserKey = Membership.GetUser(name).ProviderUserKey;//HttpException
        if (providerUserKey != null)
            return (Guid)providerUserKey;
        throw new NullReferenceException("user with this username does't exist");
    }
}

(пульт) код:

ninjectKernel.Bind().To();
var membershipRepository = ninjectKernel.Get();
Guid userId = membershipRepository.GetUserId("admin");

HttpException: Неспособный соединиться с базой данных SQL-сервера.

Прежде чем исключение происходит, окно появляется: у Этой программы есть проблемы совместимости (microsoft sql seqver 2008 и 2008 r2).
Мне установили SQL-сервер 2012.

Кроме того, это - только маленький кусок кода. Прежде чем я попытаюсь получить идентификатор пользователя, я использую другие хранилища, чтобы добавить данные к базе данных, и это работает: когда я проверяю содержание стола, это полно новых записей.

Как я должен изменить код? Mabby там - некоторый другой способ получить идентификатор пользователя в приложении пульта?

Спасибо!

Редактирует:

Файл App.config:

<?xml version="1.0" encoding="utf-8" ?>

  
    
 

0
nl ja de

2 ответы

почему бы не открытый метод для вашего диспетчера и создавать веб-запрос в вашем приложении пульта, чтобы назвать метод?

хорошо, это довольно универсально.

сначала вам нужно действие menthod на вашем диспетчере, который берет некоторый params

    [HttpPost]
    public guid MyActionMethod(string name)
    {

    }

Тогда необходимо создать веб-запрос, который называет метод

       UTF8Encoding encoding = new UTF8Encoding();

       string messageBody = "name=myName"
       byte[] requestBody = encoding.GetBytes(messageBody);

       HttpWebRequest WRequest;

        CredentialCache myCredCache = new CredentialCache();
        myCredCache.Add(new Uri(targetUrl), "NTLM", (NetworkCredential) CredentialCache.DefaultCredentials);

        WRequest = (HttpWebRequest)HttpWebRequest.Create("http://servername/controllerName/MyActionMethod/?" + messageBody);

        WRequest.Credentials = myCredCache;
        WRequest.UnsafeAuthenticatedConnectionSharing = true;
        WRequest.PreAuthenticate = false;
        WRequest.Method = "POST";
        WRequest.Timeout = 10000;
        WRequest.ContentLength = request.Length;
        WRequest.SendChunked = true;

        using (Stream requestStream = WRequest.GetRequestStream())
            requestStream.Write(requestBody, 0, requestBody.Length);

Я думаю правильно? проверьте веб-запрос, я скопировал его от некоторых, прибывают, я имею и должен был восстановить его, как это было во многих различных методах.

0
добавлено
Я обновил свой ответ, чтобы отразить это
добавлено автор Mark Jones, источник
можно ли предоставить некоторый код, пожалуйста?
добавлено автор Aleksei Chepovoi, источник
один вопрос: как получить идентификатор пользователя??? метод действия должен иметь строковый параметр (имя) и восстановить Guid (идентификатор пользователя).
добавлено автор Aleksei Chepovoi, источник

Исключение произошло, потому что в MembershipRepository я использовал встроенного поставщика Членства, чтобы возвратить Пользователей. Я изменил impementation, чтобы работать с контекстом данных:

public class MembershipRepository : IMembershipRepository
{
    private readonly WebStoreDataContext _dataContext;

    public MembershipRepository(WebStoreDataContext dataContext)
    {
        _dataContext = dataContext;
    }

    public IEnumerable GetUsers()
    {
        return _dataContext.Users;
    }

    public Guid GetUserId(string name)
    {
        return _dataContext.Users.Where(u => u.UserName == name).Select(u => u.UserId).Single();
    }
}

все работает, и я не должен использовать веб-запрос),

Так, можно создать новый случай MembershipRepository или случай YourAppNameDataContext (и мир непосредственно с контекстом данных)

0
добавлено
DotNetRuChat
DotNetRuChat
2 992 участник(ов)

Чат русскоязычного .NET сообщества http://dotnet.ru/ Вам могут быть интересны: @dotnetchat, @cilchat, @fsharp_chat, @pro_net, @xamarin_russia, @microsoftstackjobs, @uwp_ru Флуд в @dotnettalks

Microsoft Stack Jobs
Microsoft Stack Jobs
1 788 участник(ов)

Work & freelance only Microsoft Stack. Feed https://t.me/Microsoftstackjobsfeed Чат про F#: @Fsharp_chat Чат про C#: @CSharpChat Чат про Xamarin: @xamarin_russia Чат общения:@dotnettalks

pro.net
pro.net
710 участник(ов)

Обсуждение .NET Framework и всего, что с ним связано. Правила: не флудить не по теме, уважать ваших коллег и никакой рекламы (объявления о вакансиях можно согласовать с @AlexFails). Флудилка: @dotnettalks Участник @proDOT

Microsoft Developer Community Chat
Microsoft Developer Community Chat
584 участник(ов)

Чат для разработчиков и системных администраторов Microsoft Developer Community. __________ Новостной канал: @msdevru __________ Баним за: оскорбления, мат, рекламу, флуд, флейм, спам, NSFW контент, а также большое количество оффтоп тем. @banofbot

.NET Talks: Force Push Masters
.NET Talks: Force Push Masters
490 участник(ов)

Свободный чат .NET разработчиков. Правила: t.me/dotnettalks/56823 Вам могут быть интересны: @dotnetruchat, @dotnetchat, @cilchat, @fsharp_chat, @pro_net, @dotnetgroup, @xamarin_russia, @microsoftstackjobs, @uwp_ru http://combot.org/chat/-1001128250813

.NET Chat Убежище
.NET Chat Убежище
246 участник(ов)

Чат .NET разработчиков под эгидой MSK/SPB .NET Community Group Вам могут быть интересны: @fsharp_chat, @dotnetruchat, @cilchat, @xamarin_russia, @microsoftstackjobs, @dotnetgroup Флуд в @dotnettalks

.NET CIL Chat
.NET CIL Chat
54 участник(ов)

.NET CIL (aka IL aka MSIL)