开发者

Cannot open host WCF REST Services

I am trying to implement some WCF and REST services to upload a file on my server, and I have found some code which I am trying to implement, but no success yet.

My code

class Program
{
    static void Main(string[] args)
    {

        string address = "http://localhost/UploadService/UploadService.svc/UploadFile/theFile.txt";
        HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(address);
        req.Method = "POST";
        req.ContentType = "text/plain";
        Stream reqStream = req.GetRequestStream();
        string fileContents = "the quick brown fox jumped over the lazy dog.";
        byte[] bodyContents = Encoding.UTF8.GetBytes(fileContents);
        reqStream.Write(bodyContents, 0, bodyContents.Length);
        reqStream.Close();

        HttpWebResponse resp;
        try
        {
            resp = (HttpWebResponse)req.GetResponse();
        }
        catch (WebException e)
        {
            resp = (HttpWebResponse)e.Response;
        }
        Console.WriteLine("HTTP/{0} {1} {2}", resp.ProtocolVersion, (int)resp.StatusCode, resp.StatusDescription); 

    }

}

public class UploadService : IUploadService
{

    #region IUploadService Members

    public void UploadFile(string fileName, Stream fileContent)
    {
        using (StreamReader fileContentReader = new StreamReader(fileContent))
        {
            string content = fileContentReader.ReadToEnd();
            File.WriteAllText(Path.Combine(@"c:\temp", fileName), content);
        }
    }  

    #endregion
}

[ServiceContract]
public interface IUploadService
{
    [OperationContract]
    [WebInvoke(UriTemplate = "UploadFile/{fileName}")]
    void UploadFile(string fileName, Stream fileContent);  
}

Web.Config

<system.serviceModel>
  <services>
    <service behaviorConfiguration="ServiceBehavior" name="UploadService">
      <endpoint address="" binding="webHttpBinding" contract="IUploadService" behaviorConfiguration="RestBehavior">
        <identity>
          <dns value="localhost" />
        </identity>
      </endpoint>
      <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
    </service>
  </services>
  <behaviors>
    <serviceBehaviors>
      <behavior name="ServiceBehavior">
        <serviceMetadata httpGetEnabled="false" />
        <serviceDebug httpHelpPageEnabled="false" includeExceptionDetailInFaults="false" />
      </behavior>
    </serviceBehaviors>
    <endpointBehaviors>
 开发者_JS百科     <behavior name="RestBehavior">
        <webHttp/>
      </behavior>
    </endpointBehaviors>
  </behaviors>
</system.serviceModel>

At the moment, in the response resp = (HttpWebResponse)req.GetResponse(); I am getting:

The remote server returned an error: (400) Bad Request.

What should I do to fix this?


You are making a service request from the same process that is hosting the service. I think they should be separate, e.g. your service host in a console app and your test in another.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜