Сброс проверки подлинности с помощью форм в веб-методе

1

Я использую ASP.Net compact версии 3.5 SPI
Я запускаю приложение на ручном сканере, который регулярно называет веб-методы.
Я установил время проверки подлинности форм до 60 в веб-конфигурации

<authentication mode="Forms">
<forms name="Auth" loginUrl="service1.asmx" protection="All" timeout="60" path="/" slidingExpiration="true" />

</authentication>

<p>

Тайм-аут подсчитывается, и пользователь возвращается к логину, когда аутентификация истекает в приложении. Однако, если я вызываю веб-метод, тайм-аут не сбрасывается вообще. и если время входа в систему не выполняется, пользователь не возвращается на экран входа в систему.
Это пример одного из методов Интернета, которые я вызываю. Я бы предпочел не добавлять код для каждого веб-метода, чтобы выполнить сброс тайм-аута, но будет делать, если мне нужно.

    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [ToolboxItem(false)]
public class STAWMS_WebService : WebService
    {
        private DataTable myCommonTable = new DataTable("Common");
        private DataTable myReturnData = new DataTable("ReturnData");
        private DataSet myReturnDataSet = new DataSet();

    private string SessionID = HttpContext.Current.Session.SessionID;
    private string query;
    private int UserPK;
    private ArrayList myparams = new ArrayList();
    private DataSet myTempDataSet = new DataSet();
    private int ReturnIntegerTable;
    private int ReturnBooleanTable;
    [WebMethod(EnableSession = true)]
    public DataSet GetBuildUnitDetails(int StockInPK, int UserInPK)
    {
        try
        {
            if (Context.User.Identity.IsAuthenticated)
            {
                myparams.Clear();
                myparams.Add(new STASqlParameter("@StockInPK", StockInPK));
                myReturnData = STADatabase.SQLStoredProcedureSelect("GetStockInfo", myparams).Tables[0];
                myReturnData.TableName = "STA2";
                myReturnDataSet.Tables.Add(myReturnData.Copy());
                PopulateMyCommonTable(true, SessionID, true, UserInPK);
            }
            return myReturnDataSet;
        }
        catch (Exception)
        {
            PopulateMyCommonTable(false, SessionID, false, UserInPK);
            return myReturnDataSet;
        }

    }
}
</pre>
Теги:
web-services

1 ответ

0
Лучший ответ

В качестве обходного пути вы можете приступить к следующему:

Если ваш Context.User.Identity.IsAuthenticated false верните myReturnDataSet как null. Таким образом, вы можете проверить карманный компьютер, если он равен null, просто перенаправляя страницу входа.

    try
    {
        if (Context.User.Identity.IsAuthenticated)
        {
            ...
            return myReturnDataSet;
        }
        else
        {
            return null;//Here it will sign you is not authenticated.
        }            
    }
    catch (Exception)
    {
        ...
        return myReturnDataSet;
    }

Другое дело, я не знаю, как все работает в портативной версии Framework, но loginUrl="service1.asmx" указывает на вашу страницу входа.

  • 0
    Привет я Мне нужно будет написать код в .net, чтобы проверить, вошел ли пользователь в систему, потому что между приложением и веб-службой существует два разных идентификатора сеанса.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню