0

理解できない WCF REST サービスに問題があります。問題は、サービスが IIS でホストされていることです。

このサービスには、次の 2 つの機能があります。

[ServiceContract]
public interface IFishMapService
{
    [OperationContract]
    [WebInvoke(Method = "GET",
                BodyStyle = WebMessageBodyStyle.WrappedRequest,
                ResponseFormat = WebMessageFormat.Json,
                RequestFormat = WebMessageFormat.Json,
                UriTemplate = "/FindAllRecords")]
     List<Record> findAllRecords();


    [OperationContract]
    [WebInvoke(Method = "GET",
                BodyStyle = WebMessageBodyStyle.WrappedRequest,
                ResponseFormat = WebMessageFormat.Json,
                RequestFormat = WebMessageFormat.Json,
                UriTemplate = "/returnHello")]
      String returnHello();
}

2 つ目は、文字列を返す単純なテスト関数です。最初のものはリストを返し、MS SQL Server 2008 によって作成された私のマシン上のデータベースに接続します。

それで...テスト中に何が起こっているのですか: - 次のようにIPアドレスで2番目の機能をテストすると:

ipAddress/MyApp/FishMapService.svc/returnHello 

すべて大丈夫です!

  • 2 番目の関数で同じことを行うが、localhost を使用する場合:

    ローカルホスト:57640/FishMapService.svc/returnHello

こちらもなんでもOK!美しく美しい手応えを手に入れよう!

  • 最初のものをlocalhostでテストすると:

    ローカルホスト:57640/FishMapService.svc/FindAllRecords

送信されたクエリの結果が表示されます。また美しい!必要な情報がすべて表示されます。

  • 同じものを自分の IP でテストした場合:

    ipAddress/MyApp/FishMapService.svc/FindAllRecords

これをブラウザ「[]」で取得?!

なぜこうなった?!何か案は?

4

1 に答える 1

0

問題は解決された!

解決策は、MS SQL Studio の現在のデータベースに対する権限にありました。サーバーのログ ファイルを確認することをお勧めします。これは、管理 (フォルダー) -> SQL Server ログ -> 現在のログで実行できます。

新しいウィンドウで、誰が SQL Server にログインしようとしているかがわかります。私にとっては、「IIS APPPOOL\Default Website」でした。データベース テーブル [DataBaseTableNae] -> [セキュリティ] -> [ユーザー] を右クリック -> [新しいユーザー] に移動します。

次に、ログ ファイルに既に表示されている名前で新しいユーザーを追加します。これも私にとっては "IIS APPPOOL\Default Website" であり、このユーザーに必要なアクセス許可を与えます。

最後に、ブラウザに ipAddress/MyApp/FishMapService.svc/FindAllRecords と入力すると、応答が表示されるはずです (これが私のプロジェクトの URL です)。

これが誰かに役立つことを願っています!

乾杯!

于 2013-02-09T23:05:14.853 に答える