Как отключить аутентификацию форм

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

  1. Использование Используя () {} для Потока TcpClient
  2. . Аварийное прекращение работы ()
  3. TcpListener. Ожидание ()
  4. Асинхронная перезапись

Использование Используя () {} для Примечания TcpClient

***, что необходимо действительно включить вызов TcpClient в использование () {} блок для обеспечения того TcpClient. Расположите () или TcpClient. Близко () методы называют даже в случае исключения. Поочередно можно вставить это наконец блок попытки {} наконец {} блок.

Поток. Аварийное прекращение работы ()

существует 2 вещи, я вижу, что Вы могли сделать. 1 то, что при запуске этого потока TcpListener от другого можно просто назвать Поток. Прервите метод экземпляра для потока, который будет заставлять threadabortexception быть брошенным в блокирующемся вызове и идти по стеку.

TcpListener. При ожидании ()

вторая недорогая фиксация должна была бы использовать слушателя. Ожидание () метод для реализации модели опроса. Вы тогда использовали бы Поток. Сон для "ожидания" прежде, чем видеть, находится ли новое соединение на рассмотрении. Как только у Вас есть незаконченное соединение, которое Вы назвали бы AcceptTcpClient, и это выпустит незаконченное соединение. Код выглядел бы примерно так.

while (listen){
     // Step 0: Client connection
     if (!listener.Pending())
     {
          Thread.Sleep(500); // choose a number (in milliseconds) that makes sense
          continue; // skip to next iteration of loop
     }

     TcpClient client = listener.AcceptTcpClient();
     Thread clientThread = new Thread(new ParameterizedThreadStart(HandleConnection));
     clientThread.Start(client.GetStream());
     client.Close();
}

Асинхронная Перезапись

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

В основном Вы запустили бы свой код с метода BeginAcceptTcpClient и отслеживали бы IAsyncResult, что Вы возвращаетесь. Вы указываете на это на метод чей ответственный за получение TcpClient и передачу его прочь НЕ к новому потоку, но к потоку прочь ThreadPool. QueueUserWorkerItem, таким образом, Вы не вращаетесь и закрываете новое обсуждение для каждого клиентского запроса (Отмечают Вас, возможно, должен использовать Ваш собственный пул потоков, если у Вас есть особенно долговечные запросы, потому что пул потоков совместно используется и если Вы монополизируете все потоки, другие части Вашего приложения, реализованного системой, могут быть исчерпаны ресурсы). Как только метод прослушивателя начал Ваш новый TcpClient к своему собственному запросу ThreadPool, который это называет BeginAcceptTcpClient снова и указывает на делегата назад на себя.

Эффективно Вы просто разбиваете свой существующий метод в 3 различных метода, которые тогда назовут различные части. 1. загружать все, 2. чтобы быть целью для вызова EndAcceptTcpClient начните TcpClient к своему собственному потоку и затем назовите себя снова, 3. обработать клиентский запрос и закрыть его по окончании.

5
задан pthalacker 25 September 2009 в 20:38
поделиться

5 ответов

Попробуйте добавить информацию ниже в свой web.config. Это приведет к удалению элементов в пути из необходимой авторизации.

<location path="XXXXXXXXX">
    <system.web>
      <authorization>
        <allow users="*" />
      </authorization>
    </system.web>
  </location>
6
ответ дан 13 December 2019 в 22:11
поделиться

Вы можете использовать тег местоположения в web.config для этого защищенного каталога, чтобы переопределить безопасность для этих страниц:

 <location path="secureddir/newform.aspx">
    <system.web>
      <authorization>
        <allow users="*"/>
      </authorization>
    </system.web>
  </location>

http://msdn.microsoft.com/en-us/library/b6x6shw7. aspx

2
ответ дан 13 December 2019 в 22:11
поделиться

У вас может быть страница (или базовый класс, или главная страница), которая вызывает FormsAuthentication.RedirectToLoginPage ();

1
ответ дан 13 December 2019 в 22:11
поделиться

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

0
ответ дан 13 December 2019 в 22:11
поделиться

I've had this problem before - this may not pertain to you, but I'll mention that it was an in-memory cookie that caused my authentication form to keep coming up. I found out by trying a different browser, that is, FF, Chrome, instead of IE.

0
ответ дан 13 December 2019 в 22:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: