无法将类型'void'隐式转换为'System.Net.CookieContainer'

Nik*_*iko 1 c#

我只是想在我的webrequest中设置一个cookie但由于错误"无法将类型'void'隐式转换为'System.Net.CookieContainer'"而无法执行此操作.

如果下面的代码不起作用 - 你怎么做到这一点?

    public static string GET(string url, string cookieValue, string cookieName)
    {
        string response = "";
        Uri target = new Uri(url);
        var host = target.Host;
        Cookie c = new Cookie(cookieValue, cookieName) { Domain = host };
        CookieContainer cookieContainer = new CookieContainer().Add(c);
        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
        request.Credentials = CredentialCache.DefaultCredentials;
        request.Method = "GET";
        request.CookieContainer = cookieContainer;
        WebResponse response1 = request.GetResponse();
        Stream dataStream = response1.GetResponseStream();
        StreamReader reader = new StreamReader(dataStream);

        response = reader.ReadToEnd();

        reader.Close();
        response1.Close();
        return response;
    }
Run Code Online (Sandbox Code Playgroud)

das*_*ght 5

您的表达式尝试"链接"实例创建new和调用Add.C#允许这样,但该表达式的结果类型是 Add返回类型,即void不能分配给任何东西.

你需要分开这一行

CookieContainer cookieContainer = new CookieContainer().Add(c);
Run Code Online (Sandbox Code Playgroud)

分为两个:

CookieContainer cookieContainer = new CookieContainer();
cookieContainer.Add(c);
Run Code Online (Sandbox Code Playgroud)

或使用{- }语法进行调用Add:

CookieContainer cookieContainer = new CookieContainer {
    c
};
Run Code Online (Sandbox Code Playgroud)

  • @Icepickle:因为它回答了这个问题. (3认同)