小编car*_*ira的帖子

使用System.Net.WebClient发送HTTP POST

是否可以使用System.Net.WebClient发送带有一些表单数据的HTTP POST?

如果没有,是否有另一个像WebClient这样的库可以进行HTTP POST?我知道我可以使用System.Net.HttpWebRequest,但我正在寻找一些不那么冗长的东西.

希望它看起来像这样:

Using client As New TheHTTPLib
    client.FormData("parm1") = "somevalue"
    result = client.DownloadString(someurl, Method.POST)
End Using
Run Code Online (Sandbox Code Playgroud)

.net vb.net webclient http

32
推荐指数
2
解决办法
10万
查看次数

C#XMLreader和子节点

我有这个xml文件.

           <movies>
             <movie>
               <score>8.582207</score>
               <popularity>3</popularity>
               <translated>true</translated>
               <adult>false</adult>
               <language>en</language>
               <original_name>Transformers</original_name>
               <name>Transformers</name>
               <alternative_name>The Transformers</alternative_name>
               <type>movie</type>
               <id>1858</id>
               <imdb_id>tt0418279</imdb_id>
               <url>http://www.themoviedb.org/movie/1858<;/url>
               <votes>28</votes>
               <rating>7.2</rating>
               <certification>PG-13</certification>
               <overview>The Earth is caught in the middle of an intergalactic war /overview>
               <released>2007-07-04</released>
               <images>
                    <image type="poster" url="http://hwcdn.themoviedb.org/posters/304/4bc91347017a3c57fe007304/transformers-original.jpg" size="original" id="4bc91347017a3c57fe007304"/>
                    <image type="poster" url="http://hwcdn.themoviedb.org/posters/304/4bc91347017a3c57fe007304/transformers-mid.jpg" size="mid" id="4bc91347017a3c57fe007304"/>
                    <image type="poster" url="http://hwcdn.themoviedb.org/posters/304/4bc91347017a3c57fe007304/transformers-cover.jpg" size="cover" id="4bc91347017a3c57fe007304"/>
                    <image type="poster" url="http://hwcdn.themoviedb.org/posters/304/4bc91347017a3c57fe007304/transformers-thumb.jpg" size="thumb" id="4bc91347017a3c57fe007304"/>
                    <image type="backdrop" url="http://hwcdn.themoviedb.org/backdrops/2ce/4bc91339017a3c57fe0072ce/transformers-original.jpg" size="original" id="4bc9133s9017a3c57fe0072ce"/>
                    <image type="backdrop" url="http://hwcdn.themoviedb.org/backdrops/2ce/4bc91339017a3c57fe0072ce/transformers-poster.jpg" size="poster" id="4bc91339017a3c57fe0072ce"/>
                    <image type="backdrop" url="http://hwcdn.themoviedb.org/backdrops/2ce/4bc91339017a3c57fe0072ce/transformers-thumb.jpg" size="thumb" id="4bc91339017a3c57fe0072ce"/>
               </images>
             <last_modified_at>2010-04-26 03:26:14</last_modified_at>
       </movie>
     </movies>
Run Code Online (Sandbox Code Playgroud)

我通过使用阅读所有属性

textReader.ReadToFollowing("original_name");
string title =textReader.ReadElementContentAsString("original_name",textReader.NamespaceURI);
Run Code Online (Sandbox Code Playgroud)

但是,无论我尝试什么,我都无法读取"图像"的子节点.

c# xml xmlreader

12
推荐指数
1
解决办法
3万
查看次数

在c#中增加WCF Web服务的超时

我目前有一个应用程序在服务器上调用Web服务进行搜索.我们可以期待返回大量数据,因此搜索花费的时间超过一分钟是常规的.

对于如此大量的搜索,我们一直在收到以下错误消息:

在00:00:59.7350618之后等待回复时,请求通道超时.增加传递给Request的调用的超时值或增加Binding上的SendTimeout值.分配给此操作的时间可能是较长超时的一部分.

这是我们在StackOverflow上发布的多个问题中看到的问题,遗憾的是,没有一个可用的解决方案帮助我解决问题,甚至无法配置超时窗口.

我们都改变了客户端的app.config,增加了所有超时(CloseTimeout,OpenTimeout,ReceiveTimeout和SendTimeout)以及服务器上服务的所有web.config值(closeTimeout,openTimeout和SendTimeout).

这些变化都没有任何影响,我仍然收到分钟超时.知道为什么改变这些值会产生影响吗?

在下面的示例中,我们缩短了时间,使我们不必在测试期间等待整整一分钟.

Web.config文件:

<configuration>
  <system.web>
    <compilation targetFramework="4.0" />
  </system.web>
  <system.diagnostics>
    <trace autoflush="true" />
    <sources>
      <source name="System.Net">
        <listeners>
          <add name="TraceFile" />
        </listeners>
      </source>
      <source name="System.Net.Sockets">
        <listeners>
          <add name="TraceFile" />
        </listeners>
      </source>
    </sources>
    <sharedListeners>
      <add name="TraceFile" type="System.Diagnostics.TextWriterTraceListener"
           initializeData="trace.log" />
    </sharedListeners>
    <switches>
      <add name="System.Net" value="Verbose" />
      <add name="System.Net.Sockets" value="Verbose" />
    </switches>
  </system.diagnostics>
  <system.serviceModel>
    <diagnostics>
      <messageLogging logMalformedMessages="false" logMessagesAtServiceLevel="false"
                      logMessagesAtTransportLevel="false" />
    </diagnostics>
    <services>
      <service behaviorConfiguration="SearchIndexServiceBehavior" name="SearchIndex.Service">
        <endpoint address="" binding="basicHttpBinding" contract="ISearchIndexServices" />
        <host>
          <timeouts closeTimeout="00:00:10" />
        </host>
      </service>
    </services>
    <bindings>
      <basicHttpBinding> …
Run Code Online (Sandbox Code Playgroud)

c# wcf

11
推荐指数
4
解决办法
3万
查看次数

无法在WCF中更改文化

我在Windows 2008服务器上运行.我有一个调用wcf服务的Web服务.在WCF服务中,它试图投放20/08/2010的日期,因为它认为它是美国格式而不是澳大利亚.

到目前为止,我有:

  • 在控制面板上将格式的区域更改为英语澳大利亚语
  • 在管理选项卡下,我还将系统本地设置为英语(澳大利亚)
  • 在IIS7的默认网站级别,我改变了.Net全球化下的文化和UI文化.
  • 我也在Web服务和WCF节点上完成了这项工作

我已将以下内容添加到Web服务和WCF应用程序web.config文件中

<globalization requestEncoding="utf-8" 
               responseEncoding="utf-8"  
               culture="en-AU" 
               uiCulture="en-AU" />
Run Code Online (Sandbox Code Playgroud)

这最终改变了Web服务的文化,但WCF服务仍然是美国文化.

谁能告诉我还有什么我可以试试的?

wcf iis-7 web-config

10
推荐指数
2
解决办法
4490
查看次数

WCF服务与ASP.NET Web Api

任何人都可以分享WCF服务和ASP.NET Web Api之间的实际区别吗?在哪种情况下,我们必须使用WCF服务和ASP.NET Web Api.

asp.net wcf asp.net-web-api

10
推荐指数
2
解决办法
8015
查看次数

在WCF中自定义WebHttp帮助输出

对于具有webHttpBinding和helpEnabled ="true"的服务,将正确生成帮助信息.想知道是否有可能以某种方式控制输出.以下是我想做的更改.

  1. 删除JSON帮助,因为该服务不支持JSON输出.拥有它可能会让用户感到困惑.至少,有一种方法可以输出一条说明不支持JSON的注释.
  2. 对于显示的示例回复,请使用比"字符串内容"更好的示例,其中可以指定实际值样本.如果我可以提供用于序列化的对象作为示例,那将会很好.

wcf wcf-rest

9
推荐指数
1
解决办法
3027
查看次数

如何从WCF WebAPI WebGet返回原始html

我有一个自托管的WCF服务作为Windows服务运行使用WebAPI来处理REST的东西,它工作得很好.

我意识到我应该真的使用IIS或类似的方式来播出实际的网页,但有没有办法获得服务调用以返回"只是"HTML?

即使我指定"BodyStye Bare",我仍然会获得围绕实际HTML的XML包装器,即

<?xml version="1.0" encoding="UTF-8"?>
<string> html page contents .... </string>


[WebGet(UriTemplate = "/start", BodyStyle = WebMessageBodyStyle.Bare)]
public string StartPage()
{
    return System.IO.File.ReadAllText(@"c:\whatever\somefile.htm");
}
Run Code Online (Sandbox Code Playgroud)

有没有办法做到这一点,还是应该放弃?

html rest wcf wcf-web-api

9
推荐指数
1
解决办法
6162
查看次数

WebChannelFactory&Headers?

是否可以设置标题WebChannelFactory?如果我使用的是WebClient对象,我可以这样做:

WebClient client = new WebClient();
client.Headers.Add("referer", "http://stackoverflow.com");
client.Headers.Add("user-agent", "Mozilla/5.0");
Run Code Online (Sandbox Code Playgroud)

但是我还没有找到修改标题的方法WebChannelFactory.

c# wcf webclient webchannelfactory

7
推荐指数
1
解决办法
3024
查看次数

将JSON数据发布到WCF服务时出现错误415

我正在尝试将一些JSON数据发送到我在c#和wcf中创建的服务.在Fiddler中,我的POST请求如下

小提琴手:

Request Header
User-Agent: Fiddler
Host: localhost
Content-Length: 29
Content-Type: application/json; charset=utf-8

Request Body
{sn:"2705", modelCode:1702 } 
Run Code Online (Sandbox Code Playgroud)

以下是服务界面.它使用WebInvoke属性来管理POST请求

[ServiceContract]
public interface IProjectorService
{
    [WebInvoke(Method="POST", UriTemplate="projectors", RequestFormat=WebMessageFormat.Json, ResponseFormat=WebMessageFormat.Json )]
    [OperationContract]
    void RecordBreakdown(Record record);
}
Run Code Online (Sandbox Code Playgroud)

服务接口的实现将传入的参数传递给参数,并使用ado将此数据发送到SQL数据库.

[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
[ServiceBehavior(InstanceContextMode=InstanceContextMode.Single)]
public partial class ProjectorService : IProjectorService
{

    public void RecordBreakdown(Record record)
    {
        //ado code to send data to db (ie do record.SerialNumber...
    }        
}
Run Code Online (Sandbox Code Playgroud)

POCO对象表示多个参数

[DataContract]
public class Record
{      
    [DataMember]
    public string SerialNumber { get; set; }
    [DataMember]
    public int …
Run Code Online (Sandbox Code Playgroud)

c# rest wcf json

7
推荐指数
2
解决办法
9604
查看次数

通过post发送的wcf服务消费表单数据

我读了一些关于这个的文章,我发现要获得wcf从我们添加的帖子请求中获取数据

[ServiceContract]
public interface IService1 {
  [OperationContract]
  [WebInvoke(
      Method = "POST",
      BodyStyle = WebMessageBodyStyle.Bare,
      UriTemplate = "/GetData")]
  void GetData(Stream data);
}
Run Code Online (Sandbox Code Playgroud)

并在实施中

public string GetData( Stream input)
{
    long incomingLength = WebOperationContext.Current.IncomingRequest.ContentLength;
    string[] result = new string[incomingLength];
    int cnter = 0;
    int arrayVal = -1;
    do
    {
        if (arrayVal != -1) result[cnter++] = Convert.ToChar(arrayVal).ToString();
        arrayVal = input.ReadByte();
    } while (arrayVal != -1);

    return incomingLength.ToString();
}
Run Code Online (Sandbox Code Playgroud)

我的问题是我应该怎样做,在表单请求中提交操作会发送到我的服务并消费?

在Stream参数中,我是否可以通过Request ["FirstName"]从表单中获取信息?

forms asp.net wcf post

6
推荐指数
1
解决办法
9388
查看次数