首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WebInvoke POST停止安装服务

WebInvoke POST停止安装服务
EN

Stack Overflow用户
提问于 2013-04-05 06:25:21
回答 1查看 135关注 0票数 0

我是c#的新手。对不起

我正在尝试创建一个WCF Rest服务,以便在web服务器上获取和放置文件。以下操作非常有效:

代码语言:javascript
复制
         [OperationContract]
    [WebInvoke(Method = "GET", BodyStyle = WebMessageBodyStyle.Bare, UriTemplate = "GetMediaFile?shopNumber={shopNumber}&fileName={fileName}")]
    Stream GetMediaFile(string shopNumber, string fileName);

所有操作都按预期工作,直到我添加以下操作

代码语言:javascript
复制
 [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方法,在服务安装过程中就会出现以下错误:

代码语言:javascript
复制
 "Failed to add a service. Service metadata may not be accessible. Make sure your service is running and exposing metadata"

接着是一个更深入的解释:

代码语言:javascript
复制
 "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

代码语言:javascript
复制
 <?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对其他每一种方法都很有效。

救命

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-05 22:40:45

问题出现在web.config文件中:

代码语言:javascript
复制
 <?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>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15827259

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档