通常、サードパーティの WCF Web サービスを実装すると、.svc
拡張子で終わる URL を取得します。
VS2010 で WCF Web サービスを作成したところ、そのサービスを実行できましたが、.svc
拡張子で終わる URL がテスト クライアントに表示されません。
そのような URL を取得するために他に何かする必要がありますか? 通常、そこから?wsdl
、次のように末尾に追加する
ことでも WSDL を取得できるためです。http://site.com/service1.svc?wsdl
Web サービスでそのような URL を生成するにはどうすればよいですか?
これは私のApp.Configにあるものです:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.web>
<compilation debug="true" />
</system.web>
<!-- When deploying the service library project, the content of the config file must be added to the host's
app.config file. System.Configuration does not support config files for libraries. -->
<system.serviceModel>
<services>
<service name="TestWebservice.Test">
<endpoint address="" binding="wsHttpBinding" contract="TestWebservice.ITest">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
<host>
<baseAddresses>
<add baseAddress="http://localhost:8732/Design_Time_Addresses/TestWebservice/" />
</baseAddresses>
</host>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior>
<!-- To avoid disclosing metadata information,
set the value below to false and remove the metadata endpoint above before deployment -->
<serviceMetadata httpGetEnabled="True"/>
<!-- To receive exception details in faults for debugging purposes,
set the value below to true. Set to false before deployment
to avoid disclosing exception information -->
<serviceDebug includeExceptionDetailInFaults="False" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
</configuration>
編集
mexHttpBinding
構成ファイルからエンドポイントを削除しました。Web サービスを起動すると、WSDL への URL が自動的に表示されます。
http://localhost:8732/Design_Time_Addresses/TestWebservice/?wsdl
/
前の部分?wsdl
がとても重要なようです。それ以外の場合は機能しません。
しかし、それでも最後の質問につながります。.svc
ファイルへの URL を指定するにはどうすればよいですか? 次のような URL が必要です。http://localhost:8732/Design_Time_Addresses/TestWebservice/Test.svc?wsdl
編集 2
もう少し進みました。私はこれを読みました: http://msdn.microsoft.com/en-us/library/aa751792.aspx
そこでTest.svc
、次のコードを使用してプロジェクトのルートにファイルを作成しました。
<% @ServiceHost Service="TestWebservice.ITest" %>
次に、次の URL からファイルにアクセスしようとしましsvc
たが、どちらも機能しませんでした。
http://localhost:8732/Design_Time_Addresses/TestWebservice/Test.svc
http://localhost:8732/Design_Time_Addresses/Test.svc
svc
内部の Visual Studioをホストすることさえ可能ですか? それとも、最初に IIS でホストする必要がありますか?
編集 3 - 修正済み!
私はついにそれを働かせました!mexHttpBinding
をApp.Configに再追加しました。
IIS7をインストールしました。C:\
ドライブ内のフォルダーに Web サービスを公開しました。.svc
次に、IIS でそのフォルダーをマップし、ブラウザーでファイルを要求しようとしました。
.svc
拡張子が認識されなかったので、最初はうまくいきませんでした。次に、次のコマンドを入力するだけで済みましたaspnet_regiis.exe -i
。これで、すべて正常に動作します。
今はすべてうまくいっているようです。.svc
サービスが Visual Studio によってホストされている場合、ファイルを要求できないと思います。ただし、IIS でホストされている場合は機能します。