C# 无法打开主机WCF REST服务
我正在尝试实现一些WCF和REST服务,以便在我的服务器上上载文件,我发现了一些我正在尝试实现的代码,但还没有成功 我的代码 Web.ConfigC# 无法打开主机WCF REST服务,c#,wpf,wcf,rest,C#,Wpf,Wcf,Rest,我正在尝试实现一些WCF和REST服务,以便在我的服务器上上载文件,我发现了一些我正在尝试实现的代码,但还没有成功 我的代码 Web.Config 此时,在响应resp=(HttpWebResponse)req.GetResponse()中我得到: 远程服务器返回错误:(400)请求错误 我应该怎么做才能解决这个问题?您正在从托管服务的同一进程发出服务请求。我认为它们应该是分开的,例如,您在控制台应用程序中的服务主机和在另一个应用程序中的测试。您正在从托管服务的同一进程发出服务请求。我认为它
此时,在响应resp=(HttpWebResponse)req.GetResponse()中代码>我得到:
远程服务器返回错误:(400)请求错误
我应该怎么做才能解决这个问题?您正在从托管服务的同一进程发出服务请求。我认为它们应该是分开的,例如,您在控制台应用程序中的服务主机和在另一个应用程序中的测试。您正在从托管服务的同一进程发出服务请求。我认为它们应该是分开的,例如,控制台应用程序中的服务主机和另一个应用程序中的测试。在命令提示符下尝试netstat-ano
查看另一个应用程序是什么:查找TCP 127.0.0.1:1157
,然后在任务管理器中查找进程ID(右栏)(ctrl-shift-escape;您可能需要查看列,添加进程ID)它被列为侦听。我认为这不是端口的问题,而是代码本身的问题,因为我更改了url,但仍然是同一个错误OK,但它根本不应该被列出来:如果您的代码当时没有运行,那么其他人正在该端口上侦听,这会阻止您。除非我误解了。但我完全可以相信这是其他一些错误CF issue.ok我停止了应用程序,现在没有列表,但我仍然收到相同的消息:(当我停止本地主机时,我得到了以下错误远程服务器返回了一个错误:(400)错误的请求。在命令提示符下的responserynetstat-ano
中,查看其他应用程序是什么:查找TCP 127.0.0.1:1157
,然后在任务管理器中查找进程ID(右栏)(ctrl-shift-escape;您可能需要查看列,添加进程ID)它被列为侦听。我认为这不是端口的问题,而是代码本身的问题,因为我更改了url,但仍然是同一个错误OK,但它根本不应该被列出来:如果您的代码当时没有运行,那么其他人正在该端口上侦听,这会阻止您。除非我误解了。但我完全可以相信这是其他一些错误CF issue.ok我停止了应用程序,现在没有列表,但我仍然收到相同的消息:(当我停止本地主机时,我得到了以下错误远程服务器返回了一个错误:(400)请求错误。在responseHi Fabio中,我已经尝试过了,但仍然遇到同样的问题,这就是为什么我把所有东西都放在一起。您的配置中有任何东西,例如元数据端点吗?嘿,Fabio,我更改了一点代码,现在出现了一个不同的错误。基本上,我通过创建一个新的o将服务添加到本地主机你可以在线程的开头看到我更新的代码尝试将includeExceptionDetailInFaults更改为true,并使用IE查看服务,你是否获得更多详细信息?约翰,请你开始另一个问题-这个问题不再相关…不意味着迂腐,但也包括你的代码没有在我的Chrome中正确显示…干杯。嗨,Fabio,我已经尝试过了,但我仍然遇到同样的问题,这就是为什么我把所有东西都放在一起。你的配置中有任何东西吗,例如元数据端点?嘿,Fabio,我更改了一点代码,现在我遇到了一个不同的错误。基本上,我将服务添加到了本地主机,通过创建一个新的,然后从windows应用程序调用它。你可以在线程的开头看到我更新的代码尝试将includeExceptionDetailInFaults更改为true,并使用IE查看服务,你是否获得更多详细信息?约翰,请你开始另一个问题-这个问题不再相关…不意味着迂腐,但您的代码也没有正确显示在我的Chrome中…干杯。
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);
}
<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>
<behavior name="RestBehavior">
<webHttp/>
</behavior>
</endpointBehaviors>
</behaviors>
</system.serviceModel>