2015-08-03 2 views
0

Я использую ServiceStack для обработки веб-запросов и просто добавил поддержку SignalR. Проблема заключается в том, когда вызывается app.MapSignalR() ... в конечном итоге он пытается загрузить System.Web.Razor.dll из каталога bin ... однако эта System.Web.Razor.dll установлена ​​ServiceStack и имеет PublicKeyToken of e06fbc6124f57c43.SignalR и ServiceStack вместе error loading System.Web.Razor

Но, кажется, ищет PublicKeyToken из 31bf3856ad364e35, который я предполагаю, это Microsofts версия System.Web.Razor, потому что я получаю ошибку:

{ "Не удалось загрузить файл или сборку«System. Web.Razor, Version = 3.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35 'или одна из его зависимостей. Определение манифеста расположенной сборки не соответствует ссылке на сборку (Исключение из HRESULT: 0x80131040) ":" System.Web. Razor, Version = 3.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35 "}

В моем Web.config есть одна странная вещь. Я имею в виду 31BF3856AD364E35, и она работает с тем, что я не вызываю вызов MapSignalR. (web.config ниже). Кроме того, package.config находится в нижней части этой записи.

Любая идея, что я могу делать неправильно и/или как я могу решить эту проблему?

---- Web.config ---

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 

    <configSections> 
    <sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> 
     <section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" /> 
     <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" /> 
    </sectionGroup> 
</configSections> 

    <!-- 
    For a description of web.config changes see http://go.microsoft.com/fwlink/?LinkId=235367. 

    The following attributes can be set on the <httpRuntime> tag. 
     <system.Web> 
     <httpRuntime targetFramework="4.5.1" /> 
     </system.Web> 
    --> 

    <system.web> 
    <httpHandlers> 
     <add path="*" type="ServiceStack.HttpHandlerFactory, ServiceStack" verb="*" /> 
    </httpHandlers> 
    <customErrors mode="Off" /> 
    <compilation targetFramework="4.5.1" debug="true"> 
     <assemblies> 
     <add assembly="System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
     </assemblies> 

    <buildProviders> 
     <add extension=".cshtml" type="ServiceStack.Razor.CSharpRazorBuildProvider, ServiceStack.Razor" /> 
     </buildProviders></compilation> 
    <httpRuntime /> 
    <pages controlRenderingCompatibilityVersion="4.0" /> 
    </system.web> 

    <!-- Required for IIS 7.0 (and above?) --> 
    <system.webServer> 
    <httpErrors errorMode="Detailed" /> 
    <modules runAllManagedModulesForAllRequests="true" /> 
    <validation validateIntegratedModeConfiguration="false" /> 
    <handlers> 
     <add path="*" name="ServiceStack.Factory" type="ServiceStack.HttpHandlerFactory, ServiceStack" verb="*" preCondition="integratedMode" resourceType="Unspecified" allowPathInfo="true" /> 
    </handlers> 
    </system.webServer> 
    <system.web.webPages.razor> 
    <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Culture=neutral" /> 
    <pages pageBaseType="ServiceStack.Razor.ViewPage"> 
     <namespaces> 
     <add namespace="System" /> 
     <add namespace="ServiceStack" /> 
     <add namespace="ServiceStack.Html" /> 
     <add namespace="ServiceStack.Razor" /> 
     <add namespace="ServiceStack.Text" /> 
     <add namespace="ServiceStack.OrmLite" /> 
     <add namespace="OhansonsApi" /> 
     </namespaces> 
    </pages> 
    </system.web.webPages.razor> 
    <runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <dependentAssembly> 
     <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" /> 
     <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" /> 
     </dependentAssembly> 
     <dependentAssembly> 
     <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" /> 
     <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" /> 
     </dependentAssembly> 
     <dependentAssembly> 
     <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" /> 
     <bindingRedirect oldVersion="0.0.0.0-3.0.0.0" newVersion="3.0.0.0" /> 
     </dependentAssembly> 
     <dependentAssembly> 
     <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" /> 
     <bindingRedirect oldVersion="0.0.0.0-7.0.0.0" newVersion="7.0.0.0" /> 
     </dependentAssembly> 
    </assemblyBinding> 
    </runtime> 
</configuration> 

---- packages.config ----

<?xml version="1.0" encoding="utf-8"?> 
<packages> 
    <package id="AWSSDK" version="2.3.47.0" targetFramework="net451" /> 
    <package id="jQuery" version="1.6.4" targetFramework="net451" /> 
    <package id="Microsoft.AspNet.Razor" version="3.2.3" targetFramework="net451" /> 
    <package id="Microsoft.AspNet.SignalR" version="2.2.0" targetFramework="net451" /> 
    <package id="Microsoft.AspNet.SignalR.Core" version="2.2.0" targetFramework="net451" /> 
    <package id="Microsoft.AspNet.SignalR.JS" version="2.2.0" targetFramework="net451" /> 
    <package id="Microsoft.AspNet.SignalR.SystemWeb" version="2.2.0" targetFramework="net451" /> 
    <package id="Microsoft.AspNet.WebPages" version="3.2.2" targetFramework="net451" /> 
    <package id="Microsoft.Owin" version="2.1.0" targetFramework="net451" /> 
    <package id="Microsoft.Owin.Host.SystemWeb" version="2.1.0" targetFramework="net451" /> 
    <package id="Microsoft.Owin.Security" version="2.1.0" targetFramework="net451" /> 
    <package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net451" /> 
    <package id="Newtonsoft.Json" version="7.0.1" targetFramework="net451" /> 
    <package id="Owin" version="1.0" targetFramework="net451" /> 
    <package id="ServiceStack" version="4.0.42" targetFramework="net451" /> 
    <package id="ServiceStack.Client" version="4.0.42" targetFramework="net451" /> 
    <package id="ServiceStack.Common" version="4.0.42" targetFramework="net451" /> 
    <package id="ServiceStack.Interfaces" version="4.0.42" targetFramework="net451" /> 
    <package id="ServiceStack.OrmLite" version="4.0.42" targetFramework="net451" /> 
    <package id="ServiceStack.OrmLite.SqlServer" version="4.0.42" targetFramework="net451" /> 
    <package id="ServiceStack.Razor" version="4.0.42" targetFramework="net451" /> 
    <package id="ServiceStack.Text" version="4.0.42" targetFramework="net451" /> 
</packages> 

---- часть csproj файла (ссылки) ----

<ItemGroup> 
    <Reference Include="AWSSDK, Version=2.3.47.0, Culture=neutral, PublicKeyToken=9f476d3089b52be3, processorArchitecture=MSIL"> 
     <SpecificVersion>False</SpecificVersion> 
     <HintPath>..\packages\AWSSDK.2.3.47.0\lib\net45\AWSSDK.dll</HintPath> 
    </Reference> 
    <Reference Include="Microsoft.AspNet.SignalR.Core"> 
     <HintPath>..\packages\Microsoft.AspNet.SignalR.Core.2.2.0\lib\net45\Microsoft.AspNet.SignalR.Core.dll</HintPath> 
    </Reference> 
    <Reference Include="Microsoft.AspNet.SignalR.SystemWeb"> 
     <HintPath>..\packages\Microsoft.AspNet.SignalR.SystemWeb.2.2.0\lib\net45\Microsoft.AspNet.SignalR.SystemWeb.dll</HintPath> 
    </Reference> 
    <Reference Include="Microsoft.CSharp" /> 
    <Reference Include="Microsoft.Owin"> 
     <HintPath>..\packages\Microsoft.Owin.2.1.0\lib\net45\Microsoft.Owin.dll</HintPath> 
    </Reference> 
    <Reference Include="Microsoft.Owin.Host.SystemWeb"> 
     <HintPath>..\packages\Microsoft.Owin.Host.SystemWeb.2.1.0\lib\net45\Microsoft.Owin.Host.SystemWeb.dll</HintPath> 
    </Reference> 
    <Reference Include="Microsoft.Owin.Security"> 
     <HintPath>..\packages\Microsoft.Owin.Security.2.1.0\lib\net45\Microsoft.Owin.Security.dll</HintPath> 
    </Reference> 
    <Reference Include="Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> 
     <Private>True</Private> 
     <HintPath>..\packages\Microsoft.Web.Infrastructure.1.0.0.0\lib\net40\Microsoft.Web.Infrastructure.dll</HintPath> 
    </Reference> 
    <Reference Include="Newtonsoft.Json, Version=7.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL"> 
     <SpecificVersion>False</SpecificVersion> 
     <HintPath>..\packages\Newtonsoft.Json.7.0.1\lib\net45\Newtonsoft.Json.dll</HintPath> 
    </Reference> 
    <Reference Include="Owin"> 
     <HintPath>..\packages\Owin.1.0\lib\net40\Owin.dll</HintPath> 
    </Reference> 
    <Reference Include="ServiceStack, Version=4.0.42.0, Culture=neutral, processorArchitecture=MSIL"> 
     <SpecificVersion>False</SpecificVersion> 
     <HintPath>..\packages\ServiceStack.4.0.42\lib\net40\ServiceStack.dll</HintPath> 
    </Reference> 
    <Reference Include="ServiceStack.Client, Version=4.0.42.0, Culture=neutral, processorArchitecture=MSIL"> 
     <SpecificVersion>False</SpecificVersion> 
     <HintPath>..\packages\ServiceStack.Client.4.0.42\lib\net40\ServiceStack.Client.dll</HintPath> 
    </Reference> 
    <Reference Include="ServiceStack.Common, Version=4.0.42.0, Culture=neutral, processorArchitecture=MSIL"> 
     <SpecificVersion>False</SpecificVersion> 
     <HintPath>..\packages\ServiceStack.Common.4.0.42\lib\net40\ServiceStack.Common.dll</HintPath> 
    </Reference> 
    <Reference Include="ServiceStack.Interfaces, Version=4.0.0.0, Culture=neutral, PublicKeyToken=e06fbc6124f57c43, processorArchitecture=MSIL"> 
     <SpecificVersion>False</SpecificVersion> 
     <HintPath>..\packages\ServiceStack.Interfaces.4.0.42\lib\portable-wp80+sl5+net40+win8+monotouch+monoandroid+xamarin.ios10\ServiceStack.Interfaces.dll</HintPath> 
    </Reference> 
    <Reference Include="ServiceStack.OrmLite, Version=4.0.42.0, Culture=neutral, processorArchitecture=MSIL"> 
     <SpecificVersion>False</SpecificVersion> 
     <HintPath>..\packages\ServiceStack.OrmLite.4.0.42\lib\net45\ServiceStack.OrmLite.dll</HintPath> 
    </Reference> 
    <Reference Include="ServiceStack.OrmLite.SqlServer, Version=4.0.42.0, Culture=neutral, processorArchitecture=MSIL"> 
     <SpecificVersion>False</SpecificVersion> 
     <HintPath>..\packages\ServiceStack.OrmLite.SqlServer.4.0.42\lib\net45\ServiceStack.OrmLite.SqlServer.dll</HintPath> 
    </Reference> 
    <Reference Include="ServiceStack.Razor, Version=4.0.42.0, Culture=neutral, processorArchitecture=MSIL"> 
     <SpecificVersion>False</SpecificVersion> 
     <HintPath>..\packages\ServiceStack.Razor.4.0.42\lib\net45\ServiceStack.Razor.dll</HintPath> 
    </Reference> 
    <Reference Include="ServiceStack.Text, Version=4.0.42.0, Culture=neutral, processorArchitecture=MSIL"> 
     <SpecificVersion>False</SpecificVersion> 
     <HintPath>..\packages\ServiceStack.Text.4.0.42\lib\net40\ServiceStack.Text.dll</HintPath> 
    </Reference> 
    <Reference Include="System.Data.DataSetExtensions" /> 
    <Reference Include="System.Web.DynamicData" /> 
    <Reference Include="System.Web.Entity" /> 
    <Reference Include="System.Web.ApplicationServices" /> 
    <Reference Include="System.ComponentModel.DataAnnotations" /> 
    <Reference Include="System" /> 
    <Reference Include="System.Data" /> 
    <Reference Include="System.Web.Extensions" /> 
    <Reference Include="System.Drawing" /> 
    <Reference Include="System.Web" /> 
    <Reference Include="System.Web.Helpers, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> 
     <SpecificVersion>False</SpecificVersion> 
     <HintPath>..\packages\Microsoft.AspNet.WebPages.3.2.2\lib\net45\System.Web.Helpers.dll</HintPath> 
    </Reference> 
    <Reference Include="System.Web.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=e06fbc6124f57c43, processorArchitecture=MSIL"> 
     <SpecificVersion>False</SpecificVersion> 
     <HintPath>..\packages\ServiceStack.Razor.4.0.42\lib\net45\System.Web.Razor.dll</HintPath> 
    </Reference> 
    <Reference Include="System.Web.WebPages, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> 
     <SpecificVersion>False</SpecificVersion> 
     <HintPath>..\packages\Microsoft.AspNet.WebPages.3.2.2\lib\net45\System.Web.WebPages.dll</HintPath> 
    </Reference> 
    <Reference Include="System.Web.WebPages.Deployment, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> 
     <SpecificVersion>False</SpecificVersion> 
     <HintPath>..\packages\Microsoft.AspNet.WebPages.3.2.2\lib\net45\System.Web.WebPages.Deployment.dll</HintPath> 
    </Reference> 
    <Reference Include="System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> 
     <SpecificVersion>False</SpecificVersion> 
     <HintPath>..\packages\Microsoft.AspNet.WebPages.3.2.2\lib\net45\System.Web.WebPages.Razor.dll</HintPath> 
    </Reference> 
    <Reference Include="System.Xml" /> 
    <Reference Include="System.Configuration" /> 
    <Reference Include="System.Web.Services" /> 
    <Reference Include="System.EnterpriseServices" /> 
    <Reference Include="System.Xml.Linq" /> 
    </ItemGroup> 

ответ

1

Вы не можете запускать функцию ServiceStack Razor вместе с Razor Microsoft в том же веб-приложении. Как правило, это будет достаточно, чтобы отключить ASP.NET от угон Бритва .cshtml Просмотров:

<add key="webPages:Enabled" value="false" /> 

Но это еще вопрос, вы можете попробовать силы удалить Microsoft.AspNet.Razor, если вы не используете , например:

PM> Uninstall-Package Microsoft.AspNet.Razor -Force 

И сделайте чистую сборку для удаления любых DLL-файлов из проекта.

Если это проблема, вы можете попробовать logging Assembly binding, чтобы узнать, не проливает ли свет на основную причину.

В противном случае я понятия не имею, почему SignalR зависит от Razor, где, если это все-таки конфликт вы, возможно, придется обойтись без одного из них, то есть путем удаления ServiceStack.Razor (или SignalR).

+0

Итак, что я хочу сделать, это создать веб-сайт, который 1) поддерживает запросы на отдых ... 2) поддерживает cshtml-страницы ... 3) поддерживает обновление в реальном времени ... 4) поддерживает ormlite для доступа к базе данных. Был бы супер-любить пример проекта для этого ... но по крайней мере, если бы вы могли дать мне рекомендованную архитектуру ... то, что я выбрал, это ServiceStack для # 1 и # 4 ... и SignalR для # 3. Благодаря! –

+0

Также ... в чем смысл версии бритвы ServiceStack ... На самом деле я никогда не мог заставить сервисы службы ServiceStack и cshtml работать без него. –

+0

@BrianRice Если вы хотите обновить в реальном времени, вы можете использовать [Server Events] службы ServiceStack (https://github.com/ServiceStack/ServiceStack/wiki/Server-Events) в разделе [Чат] (https://github.com)./ServiceStackApps/Chat) и [React Chat] (https: // github.com/ServiceStackApps/Chat-React) для живых примеров. ServiceStack.Razor полностью опционально, он предоставляет [интеллектуальные веб-представления] (http://razor.servicestack.net/). Если вы не зарегистрируете плагин «RazorFormat», вы его не используете и можете безопасно удалить пакет ** ServiceStack.Razor ** NuGet. – mythz