私はブログ記事Using a REST WCF Serviceに従っています。WCFをRESTfulとして公開する
しかし、私はGlobal.asaxページがどこにあるのかわかりません。ブログからそのビットを追加することは重要ですか?私は以下のコードで私のWindows Formsアプリケーションから接続しようとすると
はまた:
private void button1_Click(object sender, EventArgs e)
{
using (ChannelFactory<ServiceReference1.IService1> factory = new
ChannelFactory<ServiceReference1.IService1>(
new WebHttpBinding(),
"http://localhost:8000/Hello"))
{
factory.Endpoint.Behaviors.Add(new WebHttpBehavior());
var helloService = factory.CreateChannel();
label1.Text = helloService.GetData(Convert.ToString(textBox1.Text));
// The above line
}
}
私はこのエラーを取得する:
Could not connect to http://localhost:8000/Hello/GetData. TCP error
code 10061: No connection could be made because the target machine
actively refused it 127.0.0.1:8000.
である私の他のプロジェクトから私のWeb.Configファイルホストは次のようになります。
<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
<services>
<service name="WcfService2.Service1" behaviorConfiguration="WcfService2.Service1Behavior">
<!-- Service Endpoints -->
<endpoint address="http://localhost:29174/Service1.svc" binding="webHttpBinding" contract="WcfService2.IService1">
<identity>
<dns value="localhost"/>
</identity>
</endpoint>
<!--<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>-->
</service>
</services>
<behaviors>
<endpointBehaviors>
<behavior name="webBehavior">
<webHttp />
</behavior>
</endpointBehaviors>
<serviceBehaviors>
<behavior name="WcfService2.Service1Behavior">
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="false"/>
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
これは私が無効にしたホストその後、私は私の設定ファイルにその部分をコメントアウトしようと試み
This service requires ASP.NET compatibility and must be hosted in IIS. Either host the service in IIS with ASP.NET compatibility turned on in web.config or set the AspNetCompatibilityRequirementsAttribute.AspNetCompatibilityRequirementsMode property to a value other than Required.
しかし:私はこれを実行しようとすると、私はこのエラーがブログと私のweb.config
ファイルに関連する取得
namespace Host
{
class Program
{
static void Main(string[] args)
{
WebHttpBinding binding = new WebHttpBinding();
WebServiceHost host =
new WebServiceHost(typeof(Service1));
host.AddServiceEndpoint(typeof(IService1),
binding,
"http://localhost:8000/Hello");
host.Open(); // this line gives an error
Console.WriteLine("Hello world service");
Console.WriteLine("Press <RETURN> to end service");
Console.ReadLine();
}
}
}
を:一人でwcfserviceを走りましたそれは動かないでしょう。これは、私がWindows Formsアプリケーションに接続できない理由を説明します。
注しかし、私のweb.config
ファイルとAspNetCompatibilityRequirementsAttribute.AspNetCompatibilityRequirementsMode
以下のコードの両方が設定されています
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]
public class Service1 : IService1
{
public string GetData(string value)
{
return string.Format("You entered: {0}", value);
}
}
global.asax maybe?アプリケーションの場合はA、コントロールの場合はC –
そして8000!= 29174、あなたの郵便配達員にお尋ねください。 –
はいGlobal.asaxは、2番目のコメントが何を意味するのかわかりません。 –