スタックオーバーフローのおかげで(ほとんど)、mssqlデータベースからデータをプルしてjson形式で中継できるWCFサービスを作成しました。このサービスは、ローカルおよびネットワーク内のホームサーバーで期待どおりに機能します。ただし、ネットワーク外ではサービスにアクセスできないようです。
Web経由での公開に対応するためにコードに追加のパラメーターが必要ですか、それとも単なるホストセットアップであり、WCFやサービスとは関係ありませんか?
サーバーは2008R2およびIIS7.5であり、現在、数十のWebサイトをホストしています。サービス用のポートも設定しました。
これは私が使用しているweb.configファイルです:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.web>
<customErrors mode="Off" />
<compilation debug="true" targetFramework="4.0">
<assemblies>
<add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
</assemblies>
</compilation>
</system.web>
<system.serviceModel>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true">
</serviceHostingEnvironment>
<services>
<service behaviorConfiguration="SrvcBehavior" name="Service.svc">
<endpoint address="JSON" behaviorConfiguration="JSONEndpointBehavior" binding="webHttpBinding" bindingConfiguration="" name="RESTEP" contract="Service.Isvc" />
<endpoint address="SOAP" binding="basicHttpBinding" name="Basic" contract="Service.Isvc" />
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
</service>
</services>
<behaviors>
<endpointBehaviors>
<behavior name="JSONEndpointBehavior">
<webHttp />
</behavior>
</endpointBehaviors>
<serviceBehaviors>
<behavior name="SrvcBehavior">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
<connectionStrings>
<add name="conn" connectionString="server=SERVER-DATABASE\SQL2005;database=myDatabase;uid=USERID;password=USERPASSWORD;" />
</connectionStrings>
</configuration>