0

スタック交換を検索しましたが、これと同様の質問がたくさんありますが、この問題を解決できませんでした。Azure Web サービス ロールではなく、Azure Web ロール (通常の Web ページも実行しているため) で WCF Web サービスを実行する必要があります。WCF サービスをセットアップし、web.config でエンドポイントを定義しましたが、ブラウザーまたはクライアントを介してエンドポイントに接続できません。以下はコードです - 誰かが何が間違っているのかアドバイスしてくれれば本当にありがたいです.

以下のコードを考えると、ブラウザで次のように動作すると仮定します

http://127.0.0.1:81/testAPI.svc/store/

しかし、指定しただけで404が返されます

http://127.0.0.1:81/testAPI.svc

Web サービスがあることを示すページが表示されます。

ItestAPI.cs

namespace MvcWebRole1
{

    [ServiceContract]
    public interface ItestAPI
    {


        [OperationContract]
        [WebGet(UriTemplate = "store",
        RequestFormat = WebMessageFormat.Json,
        ResponseFormat = WebMessageFormat.Json,
        BodyStyle = WebMessageBodyStyle.Bare)]
        List<Financials> GetStoreActuals();
    }
}

testAPI.svc

namespace MvcWebRole1
{

    public class testAPI : ItestAPI
    {
            public List<Financials> GetStoreActuals()
            {
                return GetActuals();

            }

            private List<Financials> GetActuals()
            {

                List<Financials> Actuals = new List<Financials>
                {
                    new Financials
                    {
                    Store = "Store1", Profit = "10000000", Sales = "2000000"
                    },
                    new Financials
                    {
                    Store = "Store2", Profit = "20000000", Sales = "30000"
                    },
                    new Financials
                    {
                    Store = "Store3", Profit = "30000000", Sales = "4000000"
                    },
                    new Financials
                    {
                    Store = "Store4", Profit = "4000000", Sales = "500000"
                    },

                };
                return Actuals;
            }

    }

    [DataContract]
    public class Financials
    {
        [DataMember]
        public string Store { get; set; }
        [DataMember]
        public string Sales { get; set; }
        [DataMember]
        public string Profit { get; set; }


    }
}

そして最後にweb.configのサービス モデル

<system.serviceModel>
    <behaviors>
      <serviceBehaviors>
        <behavior name="servicebehavior">
          <serviceMetadata httpGetEnabled="true"/>
          <serviceDebug includeExceptionDetailInFaults="false"/>
        </behavior>
      </serviceBehaviors>
      <endpointBehaviors>
        <behavior name="restbehavior">
          <webHttp/>
        </behavior>
      </endpointBehaviors>
    </behaviors>
    <services>
      <service name ="MvcWebRole1.testAPI" behaviorConfiguration ="servicebehavior" >
        <endpoint name ="RESTEndPoint"
        contract ="MvcWebRole1.ItestAPI"
        binding ="webHttpBinding"
        address =""
        behaviorConfiguration ="restbehavior"/>
      </service>
    </services>
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
  </system.serviceModel>

ここで何か助けてくれてありがとう!

4

1 に答える 1

0

私は次のことを発見しました: 上記のクラスと構成を使用して WCFServiceWebRole をセットアップすると、すべてが完全に機能しました。これは、MCVWebRole で上記を実行しようとした場合にのみ問題になりました。

MVCWebRole web.config で遊んだ後、ようやく動作するようになりました。あなたがおそらく言うことができるように、私は .NET を初めて使用しますが、MVWWebRole から次のものを削除すると問題が解決しました。これには結果が伴うと確信していますが、少なくとも問題を特定しました。

他の誰かに役立つ場合に備えて共有すると思いました。

外したのはこれ

<system.webServer>
    <validation validateIntegratedModeConfiguration="false" />
    <modules runAllManagedModulesForAllRequests="true" />
    <handlers>
      <remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" />
      <remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" />
      <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
      <add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
      <add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
      <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
    </handlers>
  </system.webServer>

誰かが問題の原因を正確に教えてくれれば助かります。ありがとう

于 2013-02-05T14:11:08.363 に答える