Ответы пользователя Чак Норрис - CodeHelper

Чак Норрис

Чак Норрис
Карма 3384
Имя Неизвестно
Возраст Неизвестно
Сайт Неизвестно
Twitter Неизвестно
Участвует в проекте 1104 дн., 17 час., 4 мин.
Последняя активность 536 дн., 1 час., 55 мин. назад
О себе ничего не указано

Ответы

Новые Лучшие
1
...
7
8
9
10
11
12
Перейти к вопросу →

Эта ошибка возникает из-за того, что IIS был установлен на компьютер позже, чем .NET Framework и, соответственно, в IIS не настроены .NET-специфичные вещи. Обычно помогает выполнение команд (файл aspnet_regiis находится в папке с фреймворком конкретной версии):

aspnet_regiis /u
aspnet_regiis /i

Эти команды «реинтегрируют» ASP.NET в инфраструктуру IIS. Если это не помогло, то можно вручную назначить привелегии профилю ASP.NET на доступ к метабазе IIS:

aspnet_regiis -ga "Network Services"

И, наконец, самый хардкорный, но и самый универсальный способ — переустановить .NET Framework. По понятным причинам, делать это нужно только в самых крайних случаях :)

Перейти к вопросу →

К сожалению, в autocomplete нет настройки, отвечающей за тип запроса. Поэтому единственный выход — указать его прямо в файле jquery.autocomplete.js (или jquery.autocomplete.min.js). Нужно найти место, где вызывается метод:

$.ajax({mode:"abort" /* ... */});

и дописать type:

$.ajax({type: "POST",mode:"abort" /* ... */});
Перейти к вопросу →

Нужно просто хранить данные, необходимые для отображения не на форме, а в некотором специальном классе. И использовать экземпляр этого класса на обоих формах. Это первый шаг к любому человеческому архитектурному решению (MVC, MVP, MVVM и тд). Вообще, если интересно, как построить правильную архитектуру в WinForms, то у Фаулера есть цикл статей, посвященный этой теме (не конкретно WinForms, а desktop-приложений в целом). Вот переводы на русский:

В самой первой части как раз рассматривается подход принятый в WinForms (Foms And Controls), когда все данные хранятся на самих формах. Затем рассматиривается семейство решений, основанных на паттерне MVC и преимущества, которые эти решения дают. (Кстати, в киниге GoF одно из названных преимуществ паттерна MVC — возможность подключить несколько видов к одному набору данных (модели)).

Перейти к вопросу →

Если есть привязка DataGridView к источнику данных, то нужно очистить источник данных. Например, удалить все строки из таблицы или все элементы из списка. Также можно попробовать установить источник данных в null:

dataGridView.DataSource = null;

Если строки добавлялись в gridView вручную, то удалять их тоже нужно вручную, как-то так:

dataGridView.Rows.Clear();
Перейти к вопросу →

У меня сработал следующий код:

var msg = new StringBuilder(String.Empty);
var st = new Uri("http://www.deviantart.com");
var reqString = String.Format(
    "reusetoken=1&username={0}&password={1}", 
    username, password);
var requestData = Encoding.UTF8.GetBytes(reqString);
var cc = new CookieContainer();
var request = (HttpWebRequest) 
    WebRequest.Create(
        "https://www.deviantart.com/users/login"); 1
request.Credentials = CredentialCache.DefaultCredentials;
request.AllowAutoRedirect = false;
request.KeepAlive = true;
request.CookieContainer = cc;
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)";
request.ContentLength = requestData.Length;

using (var s = request.GetRequestStream())
{
    s.Write(requestData, 0, requestData.Length);
}

var webResponse = request.GetResponse();
using (var stream = new StreamReader(webResponse.GetResponseStream()))
{
    var content = stream.ReadToEnd();
    Console.WriteLine(content);

    foreach (var str in cc.GetCookies(st))
    {
        msg.Append(str);
    }

    Console.WriteLine(msg.ToString());
}

HttpWebRequest req = (HttpWebRequest) WebRequest.Create("http://www.deviantart.com/?loggedin=1");
req.CookieContainer = cc;  2
req.Credentials = CredentialCache.DefaultCredentials;
HttpWebResponse respons = (HttpWebResponse)req.GetResponse();
Stream dataStream = respons.GetResponseStream();
StreamReader reader = new StreamReader(dataStream);
string responseFromServer = reader.ReadToEnd();
Console.WriteLine(responseFromServer);
reader.Close();
dataStream.Close();
respons.Close();

Console.ReadLine();

Тут важно то, что при логине используется протокол https вместо http 1. И при втором обращении к сайту нужно использовать CookieContainer от первого обращения 2.

Перейти к вопросу →

Можно использовать последний участок кода для запроса любой страницы. Главное чтобы свойству CookiesContainer присваивался контейнер, содержащий куки авторизации. Можно сделать код более универсальным. У меня получилось вот что:

class Program
{
    static void Main(string[] args)
    {
        var username = "username";
        var password = "password";

        var cookieContainer = GetAuthtorizationCookie(username, password);

        var firstPage = GetPage(
            "http://www.deviantart.com/?loggedin=1", 
            cookieContainer);

        var secondPage = GetPage(
            "http://my.deviantart.com/messages/", 
            cookieContainer);

        Console.ReadLine();
    }

    private static CookieContainer GetAuthtorizationCookie(
        string username, string password) 1
    {
        var reqString = String.Format(
            "reusetoken=1&username={0}&password={1}", 
            username, 
            password);

        var requestData = Encoding.UTF8.GetBytes(reqString);
        var cookieContainer = new CookieContainer();
        var request = (HttpWebRequest) WebRequest.Create(
            "https://www.deviantart.com/users/login");
        request.Credentials = CredentialCache.DefaultCredentials;
        request.AllowAutoRedirect = false;
        request.KeepAlive = true;
        request.CookieContainer = cookieContainer;
        request.Method = "POST";
        request.ContentType = "application/x-www-form-urlencoded";
        request.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0;" + 
            " Windows NT 5.1; SV1; .NET CLR 2.0.50727)";
        request.ContentLength = requestData.Length;

        using (var s = request.GetRequestStream())
        {
            s.Write(requestData, 0, requestData.Length);
        }

        using(var webResponse = request.GetResponse())
        {
            // Тут можно вставить проверку статуса ответа...                
        }

        return cookieContainer;
    }

    private static string GetPage(
        string uri, CookieContainer cookies) 2
    {
        var request = (HttpWebRequest) WebRequest.Create(uri);
        request.CookieContainer = cookies;
        request.Credentials = CredentialCache.DefaultCredentials;
        using(var respons = (HttpWebResponse)request.GetResponse())
        {
            using (var reader = new StreamReader(respons.GetResponseStream()))
            {
                return reader.ReadToEnd();
            }
        }
    }
}

Метод GetAuthtorizationCookie 1 логинется на сайт и возвращает соответствующие куки. Метод GetPage 2 принимает эти куки и возвращает заданную (любую) страницу сайта.

Перейти к вопросу →

Эта ошибка вызывается какой-то странностью в работе кеша ASP.NET. Соответственно, для исправления нужно просто очистить кеш — удалить временные файлы ASP.NET из папок:

Win XP:

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\

Win XP 64:

C:\WINDOWS\Microsoft.NET\Framework64\v2.0.50727\Temporary ASP.NET Files\

Vista, Windows 7:

C:\Users\[USERNAME]\AppData\Local\Temp\Temporary ASP.NET Files\
Перейти к вопросу →

Такие динамические таблицы обычно создаются с помощью контрола GridView. В MSDN есть хорошее описание и примеры (правда на английском).

Перейти к вопросу →

Нужно просто выполнить такой код:

window.location.hash="someId";

При этом изменится адрес текущей страницы в адресной строке браузера и произойдет навигация к элементу someId

Перейти к вопросу →

Компонент slider входит в состав jQuery UI: http://jqueryui.com/demos/slider/

Есть еще несколько реализаций для jQuery (без пакета UI):


1
...
7
8
9
10
11
12
v1.7.123.556
© 2009—2010 CodeHelper FAQ | О сайте | Обратная связь | История изменений | Статьи
Creative Commons LicenseМатериалы сайта распространяются под лицензией Creative Commons Attribution-Share Alike 3.0 Unported.