2009-08-13 10 views
4

私はMVCで構築されているかなり大きなwebappを持っています。また、共通のコードを別のプロジェクトにあるフレームワークに抽象化しています。近い将来、このフレームワークが他のプロジェクトで使用されることを望みます。このフレームワークの一部であるSilverlightアプリケーションがいくつかあり、そのうちの1つは、一度にファイルをチャンクとしてアップロードすることです。これを実現するために、WCFサービス(フレームワークプロジェクトにも含まれています)と通信する必要があります。私はこれに問題があります。ASP.NET MVCアプリケーションでWCFサービスをホストしていますか?

Web.configにサービスのフレームワークプロジェクトに追加されたapp.configデータVS2008をコピーしましたが、動作していないようです。

は、検索のビットの後、私はあなたが.SVCファイルと一致する.csファイルを作成することにより、背後にあるコードでサービスを書くことができることを発見したので、私はこのようMyService.svcを作成してみました:

<% @ServiceHost language="C#" 
Service="MyFramework.MyService" 
%> 

私のサービスは別のプロジェクト内に存在するため、参照するコードがありません。そのため、Namespace.Class参照が十分であると想定しました。

また、MyService.svc/{* pathInfo}を自分のGlobal.asaxファイルのIgnored Routesに追加しました。

localhost:x/MyService.svcにアクセスしようとすると、またはVS2008のサービス追加ツールを使用してサービスを検索しようとすると、ハングアップしたように見えます。

私は間違っていますか?

アンソニー

答えて

10

はいよくあなたのWCFサービスはSOAPベースです - あなたはそれを参照して何を見ることができません。

あなたがサービスの説明と、すべてを見たい場合は、(「MEX」を定義するあなたのサービスの設定

  • <serviceMetadata>動作を指定

    • で「メタデータ」交換を有効にする必要があります

      :セクション<system.serviceModel>) - serviceMetadataを有効にするには、あなたのサービスの設定

    でのメタデータ交換)エンドポイントは、あなたのサービスの設定で(web.configファイルをこのセクションを必要とします

    <system.serviceModel> 
        <behaviors> 
        <serviceBehaviors> 
         <behavior name="MEXServiceBehavior"> 
           <serviceMetadata httpGetEnabled="True"/> 
          </behavior> 
         </serviceBehaviors> 
        </behaviors> 
    

    、あなたはあなたのサービスからのことを参照する必要があります:

    <system.serviceModel> 
        <service name="....." behaviorConfiguration="MEXServiceBehavior" ....> 
    

    MEXエンドポイントを定義するには、このようなものを使用:可能なドキュメントがたくさんあるはずです

    <services> 
        <service name="....." behaviorConfiguration="MEXServiceBehavior" ....> 
         <endpoint address="http://localhost:5555/YourSerice/mex" 
            binding="mexHttpBinding" contract="IMetadataExchange" /> 
    

    をどのようにこれを行う方法を示して(そのトピックの質問Stackoverflowでここで質問し、答えたたくさん含む)。

    ほんの少しのニックピック:あなたは本当にASP.NET MVCであなたのサービスをホストしているわけではありません - あなたはIISでそれをホストしています - MSウェブサーバー製品。それは、あなたがASP.NET MVC、ASP.NET Webフォーム、その他のものを使用しているかどうかはまったく関係ありません。

    マーク

  • +0

    を追加しましたそれは間違いありません。 WCFメソッドを作成して、ブラウザで表示されるHTMLを返すことができます。

    +0

    @ZachSmithを検索する:「」を使用している場合は、** SOAP **サービスではなく** REST **サービスがあります。*はい* * - あなたは* * REST **サービス - これは私が話していたことではないことを知っています - あなたは** SOAP **サービス(何でも*しかし* 'WebHttp'バインディング...... ) –

    +0

    ああ。私は - ごめんなさい。 が特にRESTサービスを作成する理由は何ですか?私はそれがブラウザの要求によってコンテンツを利用可能にすることを知っているが、私はそれが特に安らかであるかどうかではない –

    2

    web.configはどうですか? あなたは「 - あなたはそれを参照して何を見ることはできません。はい。よくあなたのWCFサービスは、SOAPベースである」この種のものに

    <system.serviceModel> 
    <behaviors> 
        <serviceBehaviors> 
        <behavior name="MyFramework.MyServiceBehavior"> 
         <serviceMetadata httpGetEnabled="true" /> 
         <serviceDebug includeExceptionDetailInFaults="true" /> 
         <serviceThrottling 
          maxConcurrentCalls="200" 
          maxConcurrentSessions="100" 
          maxConcurrentInstances="100" /> 
        </behavior> 
        </serviceBehaviors> 
    </behaviors> 
    <services> 
        <service 
         behaviorConfiguration="MyFramework.MyServiceBehavior" 
         name="MyFramework.MyService"> 
        <endpoint binding="wsHttpBinding"    
           bindingConfiguration="MyServiceBindingSettings" 
           contract="MyFramework.IMyService"> 
         <identity> 
         <dns value="localhost" /> 
         </identity> 
        </endpoint> 
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> 
        </service> 
    </services> 
    <bindings> 
        <wsHttpBinding> 
        <binding name="MyServiceBindingSettings" 
          closeTimeout="00:10:00" openTimeout="00:10:00" sendTimeout="00:10:00" 
          maxReceivedMessageSize="2147483647" maxBufferPoolSize="2147483647" 
          messageEncoding="Text" textEncoding="utf-8"> 
         <readerQuotas 
          maxDepth="2147483647" 
          maxStringContentLength="2147483647" 
          maxArrayLength="2147483647" maxBytesPerRead="2147483647" 
          maxNameTableCharCount="2147483647"/> 
        </binding> 
        </wsHttpBinding> 
    </bindings> 
    

    関連する問題