2013-04-05 78 views
0

我完全是在c#中新建的。 SORRYWebInvoke POST停止安裝服務

我試圖創建一個WCF REST服務獲取和放置在Web服務器上的文件。以下操作的偉大工程:

  [OperationContract] 
    [WebInvoke(Method = "GET", BodyStyle = WebMessageBodyStyle.Bare, UriTemplate = "GetMediaFile?shopNumber={shopNumber}&fileName={fileName}")] 
    Stream GetMediaFile(string shopNumber, string fileName); 

一切正常,直到我加入以下操作

[OperationContract] 
    [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Bare, ResponseFormat =  WebMessageFormat.Json, UriTemplate = "PutMediaFile?shopNumber={shopNumber}&fileName={fileName}")] 
    string PutMediaFile(string shopNumber, string fileName, Stream mediaFile); 

我通過點擊綠色箭頭會啓動安裝服務工具安裝服務。我需要這樣做來從我的IOS設備進行測試。

的問題是,一旦我添加了POST方法,我在服務過程中出現以下錯誤安裝:

"Failed to add a service. Service metadata may not be accessible. Make sure your service is running and exposing metadata" 

後跟有更爲深入的解釋:

"Error: Cannot obtain Metadata from http://localhost/MpiPhotoStore/PhotoStoreService.svc If this is a Windows (R) Communication Foundation service to which you have access, please check that you have enabled metadata publishing at the specified address. For help enabling metadata publishing, please refer to the MSDN documentation at http://go.microsoft.com/fwlink/?LinkId=65455.WS-Metadata Exchange Error URI: http://localhost/MpiPhotoStore/PhotoStoreService.svc Metadata contains a reference that cannot be resolved: 'http://localhost/MpiPhotoStore/PhotoStoreService.svc'. There was no endpoint listening at http://localhost/MpiPhotoStore/PhotoStoreService.svc that could accept the message. This is often caused by an incorrect address or SOAP action. See InnerException, if present, for more details. The remote server returned an error: (404) Not Found.HTTP GET Error URI: http://localhost/MpiPhotoStore/PhotoStoreService.svc There was an error downloading 'http://localhost/MpiPhotoStore/PhotoStoreService.svc'. The request failed with the error message:--<HTML><HEAD><STYLE type="text/css">#content{ FONT-SIZE: 0.7em; PADDING-BOTTOM: 2em; MARGIN-LEFT: 30px}BODY{MARGIN-TOP: 0px; MARGIN-LEFT: 0px; COLOR: #000000; FONT-FAMILY: Verdana; BACKGROUND-COLOR: white}P{MARGIN-TOP: 0px; MARGIN-BOTTOM: 12px; COLOR: #000000; FONT-FAMILY: Verdana}PRE{BORDER-RIGHT: #f0f0e0 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #f0f0e0 1px solid; MARGIN-TOP: -5px; PADDING-LEFT: 5px; FONT-SIZE: 1.2em; PADDING-BOTTOM: 5px; BORDER-LEFT: #f0f0e0 1px solid; PADDING-TOP: 5px; BORDER-BOTTOM: #f0f0e0 1px solid; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e5e5cc}.heading1{MARGIN-TOP: 0px; PADDING-LEFT: 15px; FONT-WEIGHT: normal; FONT-SIZE: 26px; MARGIN-BOTTOM: 0px; PADDING-BOTTOM: 3px; MARGIN-LEFT: -30px; WIDTH: 100%; COLOR: #ffffff; PADDING-TOP: 10px; FONT-FAMILY: Tahoma; BACKGROUND-COLOR: #003366}.intro{MARGIN-LEFT: -15px}</STYLE><TITLE>Service</TITLE></HEAD><BODY><DIV id="content"><P class="heading1">Service</P><BR/><P class="intro">The server was unable to process the request due to an internal error. For more information about the error, either turn on IncludeExceptionDetailInFaults (either from ServiceBehaviorAttribute or from the <serviceDebug> configuration behavior) on the server in order to send the exception information back to the client, or turn on tracing as per the Microsoft .NET Framework SDK documentation and inspect the server trace logs.</P></DIV></BODY></HTML>--." 

就像我說的,我有一個2 GET操作和1 DELETE操作,一切正常。

這裏是我的web.config

<?xml version="1.0"?> 
<configuration> 

<appSettings> 
<add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" /> 
<add key="RootFilePath" value="\\OMMACDEV02VM1\Images"/> 
</appSettings> 
<system.web> 
    <compilation debug="true" targetFramework="4.0" /> 
    </system.web> 
<system.serviceModel> 
<protocolMapping> 
    <add scheme="http" binding="webHttpBinding"/> 
</protocolMapping> 
<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> 
    <endpointBehaviors> 
    <behavior> 
     <webHttp/> 
    </behavior> 
    </endpointBehaviors> 
</behaviors> 
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" /> 

我讀過有關MEX終結,但我真的只是在尋找JSON現在。 Web.Config適用於其他方法。

HELP !!!!!!!!!!!!!!

回答

0

的問題是在web.config文件:

<?xml version="1.0"?> 
<configuration> 
<appSettings> 
<add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" /> 
<add key="RootFilePath" value="\\OMMACDEV02VM1\Images"/> 
</appSettings> 
<system.web> 
    <compilation debug="true" targetFramework="4.0" /> 
</system.web> 
<system.serviceModel> 
<bindings> 
    <webHttpBinding> 
    <binding maxReceivedMessageSize="10485760" /> 
    </webHttpBinding> 
</bindings> 
<services> 
    <service name="MpiPhotoStore.PhotoStore" behaviorConfiguration="ServiceBehaviour"> 
    <endpoint address ="" binding="webHttpBinding" contract="MpiPhotoStore.IPhotoStoreService" behaviorConfiguration="web"> 
    </endpoint> 
    </service> 
    </services> 
<behaviors> 
    <serviceBehaviors> 
    <behavior name="ServiceBehaviour"> 
     <serviceMetadata httpGetEnabled="true"/> 
     <serviceDebug includeExceptionDetailInFaults="true"/> 
    </behavior> 
    </serviceBehaviors> 
    <endpointBehaviors> 
    <behavior name="web"> 
     <webHttp/> 
    </behavior> 
    </endpointBehaviors> 
</behaviors> 
</system.serviceModel> 
</configuration>