首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C#得到500错误,而VB没有?

C#得到500错误,而VB没有?
EN

Stack Overflow用户
提问于 2013-07-15 22:29:47
回答 2查看 489关注 0票数 2

我在这个问题上绞尽脑汁,想不出一个很好的理由,但是当我运行我的vb.net代码时,它执行得很好。我将其重新编写为c# (学习过程)时,在GetResponse行收到了一个“server RETURNS500”错误。

任何建议都是非常感谢的!

C#代码-损坏

代码语言:javascript
复制
string SpaceURL = "https://1.1.1.1/api/space/device-management/discover-devices";
        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(SpaceURL);
        request.ContentType = "application/vnd.net.juniper.space.device-management.discover-devices+xml;version=1;charset=UTF-8";
        request.Accept = "*/*";
        request.Headers.Add("Authorization: Basic authcode");
        request.Method = "POST";

        //Get the request text for stream writer
        CommonFunctions objCF = new CommonFunctions();
        string strRequest = objCF.SerializeObject(this,true,false);

        StreamWriter sw = new StreamWriter(request.GetRequestStream());
        sw.Write(strRequest);

        HttpWebResponse response;
        response = (HttpWebResponse)request.GetResponse();

        StreamReader sr = new StreamReader(response.GetResponseStream());

        return sr.ReadToEnd();

下面的VB.net代码运行正常

代码语言:javascript
复制
Dim url As String
    Dim request As HttpWebRequest
    Dim response As HttpWebResponse = Nothing
    Dim reader As StreamReader

    url = "https://1.1.1.1/api/space/device-management/discover-devices"
    request = DirectCast(WebRequest.Create(url), HttpWebRequest)
    request.ContentType = "application/vnd.net.juniper.space.device-management.discover-devices+xml;version=1;charset=UTF-8"
    request.Accept = "*/*"
    request.Headers.Add("Authorization: Basic authcode=")
    request.Method = "POST"
    Dim requesttext As String = "<systemDiscoveryRule><ruleName>testdiscovery</ruleName><ipAddressDiscoveryTarget><ipAddress>" & txtIPAddress.Text & "</ipAddress></ipAddressDiscoveryTarget><usePing>true</usePing><useSnmp>false</useSnmp><snmpV1Setting><communityName>nsn-space</communityName></snmpV1Setting><manageDiscoveredSystemsFlag>true</manageDiscoveredSystemsFlag><sshCredential><userName>username</userName><password>password</password></sshCredential><tagNewlyManagedDiscoveredSystemsFlag>true</tagNewlyManagedDiscoveredSystemsFlag><tagForNewlyManagedDiscoveredSystems>store-devices</tagForNewlyManagedDiscoveredSystems></systemDiscoveryRule>"
    Dim sw As New System.IO.StreamWriter(request.GetRequestStream)
    sw.Write(requesttext)
    sw.Dispose()
    response = DirectCast(request.GetResponse(), HttpWebResponse)
    reader = New System.IO.StreamReader(response.GetResponseStream())

我还将我的内联xml与在C#版本中通过序列化类对象创建的XML进行了比较(干净多了!)

EN

回答 2

Stack Overflow用户

发布于 2013-07-15 22:34:10

你能检查一下这行吗?

代码语言:javascript
复制
request.Headers.Add("Authorization: Basic authcode');

应该阅读

代码语言:javascript
复制
request.Headers.Add("Authorization: Basic authcode");

它的引号不匹配。

票数 4
EN

Stack Overflow用户

发布于 2013-07-16 00:26:08

正如Adam Houldsworth所说

在C#版本中不刷新编写器,在VB版本中Dispose,它将调用Close,而后者又调用Flush。using语句在这里是您的朋友。不确定这是否是问题所在,因为request.Headers.Add调用在两个版本中也有不同的参数。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17656691

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档